FFMPEG av_interleaved_write_frame (): операция не разрешена - PullRequest
4 голосов
/ 23 сентября 2010

ОК. Я получаю ошибку «av_interleaved_write_frame (): операция не разрешена» при попытке кодировать файл MOV.Во-первых, мне нужно обрисовать в общих чертах условия, стоящие за этим.

Я кодирую 12 различных файлов с разным разрешением и форматами с помощью PHP-скрипта, который работает на cron.По сути, он захватывает 250-мегабайтный файл HD MOV и кодирует его в 4 различных размера кадра в виде файлов MOV, MP4 и WMV.

Теперь сценарию требуется более 10 минут для запуска и кодирования каждого из файлов для входного файла 250 МБ.Я выводю время обработки, и как только время в скрипте достигает 10 минут, происходит сбой FFMPEG и возвращается «av_interleaved_write_frame (): операция не разрешена» для текущего кодируемого файла и всех остальных оставшихся файлов, которые еще предстоит кодировать.

Если размер входного видео составляет 150 МБ, общее время выполнения сценария составляет менее 10 минут, поэтому он хорошо кодирует все видео.Кроме того, если я запускаю команду FFMPEG для отдельного файла, на котором она не выполняется, для файла 250 МБ он кодирует файл без проблем.

Из исследования ошибки "av_interleaved_write_frame ()", похоже, она связана с метками времени того, что я понимаю из входного файла.Но, говоря, что в моем случае это не так, потому что я могу без проблем закодировать файл, если я сделаю это по отдельности.

пример команды ffmpeg

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

Ошибкавывод файла с ошибкой в ​​10 минут.Помните, что нет никаких проблем с командой, если я запускаю ее сам по себе, это только тогда, когда сценарий достигает 10 минут.

'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',

Тогда она ошибается

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

Кто-нибудь сталкивался с подобнымпроблемы раньше?Похоже, что-то связано с метками времени, но только потому, что скрипт работает дольше 10 минут.Возможно, это связано с конфигурацией PHP / Apache, но я не знаю, является ли это FFMPEG или конфигурацией сервера, на которую мне нужно обратить внимание.

Ответы [ 2 ]

1 голос
/ 20 октября 2014

Одна из тривиально решаемых причин этой проблемы (если вы нашли этот вопрос во время поиска этой проблемы, как я это сделал) - это когда раздел, в который вы пытаетесь записать свой файл, заполнен.Убедитесь, что у вас достаточно свободного места для записи файла.В Linux / Unix это так же просто, как запустить

$ df -h

Чтобы решить, просто освободите достаточно места, переместив файлы в другой раздел, удалив ненужные файлы и очистив корзину.

0 голосов
/ 15 января 2011

этот патч (по ссылке со страницы 807 выпуска ffmpeg) решил для меня проблему перекодирования видео и копирования звука из захваченного файла FLV в файл AVI:

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...