FFMPEG av_interleaved_write_frame(): Operation not

2019-05-07 06:44发布

问题:

Ok I receiving a 'av_interleaved_write_frame(): Operation not permitted' error while trying to encode an MOV file. Firstly I need to outline the conditions behind it.

I am encoding 12 different files of different resolution sizes and format types via a PHP script that runs on cron. Basically it grabs a 250mb HD MOV file and encodes it in 4 different frame sizes as MOV, MP4 and WMV file types.

Now the script takes over 10mins to run and encode each of the files for the 250mb input file. I am outputting the processing times and as soon as the time on the script hits 10mins FFMPEG crashes and returns "av_interleaved_write_frame(): Operation not permitted" for the current file being encoded and all other remaining files yet to be encoded.

If the input videos is 150MB the total time the script runs for is under 10mins so it encodes all of the videos fine. Additionally if I run the FFMPEG command on the individual file that it fails on for the 250mb file it encodes the file with no issues.

From doing to research on the error "av_interleaved_write_frame()" it seems it is related to timestamps of what I understand to be of the input file. But in saying that it doesn't seem to be the case in my instance because I can encode the file with no problem if I do it individually.

example ffmpeg command

ffmpeg -i GVowbt3vsrXL.mov -s 1920x1080 -sameq -vf "unsharp" -y GVowbt3vsrXL_4.wmv

Error output on the failed file at 10mins. Remember there is no issue with the command if I run it by itself it is only when the script hits 10mins.

'output' =>
     array (
       0 => 'FFmpeg version SVN-r24545, Copyright (c) 2000-2010 the FFmpeg developers',
       1 => '  built on Aug 20 2010 23:32:02 with gcc 4.1.2 20080704 (Red Hat 4.1.2-48)',
       2 => '  configuration: --enable-shared --enable-gpl --enable-pthreads --enable-nonfree --cpu=opteron --extra-cflags=\'-O3 -march=opteron -mtune=opteron\' --enable-libmp3lame --enable-libx264 --enable-libxvid --enable-avfilter --enable-filter=movie --enable-avfilter-lavf --enable-swscale',
       3 => '  libavutil     50.23. 0 / 50.23. 0',
       4 => '  libavcore      0. 1. 0 /  0. 1. 0',
       5 => '  libavcodec    52.84. 1 / 52.84. 1',
       6 => '  libavformat   52.77. 0 / 52.77. 0',
       7 => '  libavdevice   52. 2. 0 / 52. 2. 0',
       8 => '  libavfilter    1.26. 1 /  1.26. 1',
       9 => '  libswscale     0.11. 0 /  0.11. 0',
       10 => 'Input #0, mov,mp4,m4a,3gp,3g2,mj2, from \'/home/hdfootage/public_html/process/VideoEncode/_tmpfiles/GVowbt3vsrXL/GVowbt3vsrXL.mov\':',
       11 => '  Metadata:',
       12 => '    major_brand     : qt',
       13 => '    minor_version   : 537199360',
       14 => '    compatible_brands: qt',
       15 => '  Duration: 00:00:20.00, start: 0.000000, bitrate: 110802 kb/s',
       16 => '    Stream #0.0(eng): Video: mjpeg, yuvj422p, 1920x1080 [PAR 72:72 DAR 16:9], 109386 kb/s, 25 fps, 25 tbr, 25 tbn, 25 tbc',
       17 => '    Stream #0.1(eng): Audio: pcm_s16be, 44100 Hz, 2 channels, s16, 1411 kb/s',
       18 => '[buffer @ 0xdcd0e0] w:1920 h:1080 pixfmt:yuvj422p',
       19 => '[unsharp @ 0xe00280] auto-inserting filter \'auto-inserted scaler 0\' between the filter \'src\' and the filter \'Filter 0 unsharp\'',
       20 => '[scale @ 0xe005b0] w:1920 h:1080 fmt:yuvj422p -> w:1920 h:1080 fmt:yuv420p flags:0xa0000004',
       21 => '[unsharp @ 0xe00280] effect:sharpen type:luma msize_x:5 msize_y:5 amount:1.00',
       22 => '[unsharp @ 0xe00280] effect:none type:chroma msize_x:0 msize_y:0 amount:0.00',
       23 => 'Output #0, asf, to \'/home/hdfootage/public_html/process/VideoEncode/_tmpfiles/GVowbt3vsrXL/GVowbt3vsrXL_4.wmv\':',
       24 => '  Metadata:',
       25 => '    WM/EncodingSettings: Lavf52.77.0',
       26 => '    Stream #0.0(eng): Video: msmpeg4, yuv420p, 1920x1080 [PAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 1k tbn, 25 tbc',
       27 => '    Stream #0.1(eng): Audio: libmp3lame, 44100 Hz, 2 channels, s16, 64 kb/s',
       28 => 'Stream mapping:',
       29 => '  Stream #0.0 -> #0.0',
       30 => '  Stream #0.1 -> #0.1',
       31 => 'Press [q] to stop encoding',
       32 => '[msmpeg4 @ 0xdccb50] warning, clipping 1 dct coefficients to -127..127',

Then it errors

frame=   75 fps=  5 q=1.0 size=   12704kB time=2.90 bitrate=3588 6.0kbits av_interleaved_write_frame(): Operation not permitted',
     )

Has any anybody encountered this sort of problem before? It seems to be something to do with the timestamps but only because the script is running for a period longer then 10mins. It maybe related to PHP/Apache config but I don't know if it is FFMPEG or if it is server config I need to be looking at.

回答1:

One trivially solvable cause for this problem (if you found this question while searching for this problem, as I did) is when the partition you are trying to write your file to is full. Make sure you have enough available space to write your file to. On linux/unix this is as easy as running

$ df -h

To solve, just free up enough space by moving files to another partition, deleting unwanted files, and emptying your trash.



回答2:

this patch (linked from ffmpeg issue 807's page) solved the problem for me reencoding video and copying audio out of a live captured flv file to an avi file:

https://roundup.ffmpeg.org/file1098/utils.c.patch



标签: ffmpeg