Как отладить, почему avconv зависает?

Я конвертирую файлы .mov в файлы .mpg, используя avconv. Команда, запускаемая моим php-приложением, выглядит следующим образом:

avconv -y -i '$finalvideo' -target ntsc-dvd -aspect 4:3 '$mpgvideo' › $logs

Я могу без проблем конвертировать небольшие файлы .mov в .mpg. Однако я не могу конвертировать видео продолжительностью более десяти или пятнадцати минут. Файл журнала полностью пуст. Когда я запускаю команду напрямую, кадр останавливается где-то около 34000, независимо от того, какое видео я выбираю.

Процессор показывает загрузку 97% в этом процессе, однако ничего не происходит.

ОС Убунту 10~

Как я могу собрать больше информации об этом застопорившемся процессе?

Вот замороженный вывод

avconv version 0.7, Copyright (c) 2000-2011 the Libav developers
  built on Nov  3 2011 13:39:09 with gcc 4.3.3

Seems stream 0 codec frame rate differs from container frame rate: 180000.00 (180000/1) -> 23.98 (24000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/var/www/sites/default/files/compiled_videos/573-stream.mov':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.0.3
  Duration: 00:18:53.49, start: 0.000000, bitrate: 1430 kb/s
    Stream #0.0(eng): Video: h264 (Main), yuv420p, 854x480, 1387 kb/s, 25.60 fps, 23.98 tbr, 90k tbn, 180k tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(eng): Audio: aac, 48000 Hz, stereo, s16, 126 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
[buffer @ 0x9d88820] w:854 h:480 pixfmt:yuv420p
[scale @ 0x9d88b60] w:854 h:480 fmt:yuv420p -> w:720 h:480 fmt:yuv420p flags:0x4
Incompatible sample format 's16' for codec 'ac3', auto-selecting format 'flt'
Output #0, dvd, to '/var/www/sites/default/files/compiled_videos/573.mpg':
  Metadata:
    major_brand     : qt  
    minor_version   : 512
    compatible_brands: qt  
    creation_time   : 1970-01-01 00:00:00
    encoder         : Lavf53.10.0
    Stream #0.0(eng): Video: mpeg2video, yuv420p, 720x480 [PAR 8:9 DAR 4:3], q=2-31, 6000 kb/s, 90k tbn, 29.97 tbc
    Metadata:
      creation_time   : 1970-01-01 00:00:00
    Stream #0.1(eng): Audio: ac3, 48000 Hz, stereo, flt, 448 kb/s
    Metadata:
      creation_time   : 1970-01-01 00:00:00
Stream mapping:
  Stream #0.0 -> #0.0 (h264 -> mpeg2video)
  Stream #0.1 -> #0.1 (aac -> ac3)
Press ctrl-c to stop encoding
[mpeg2video @ 0x9d8bf20] rc buffer underflow
Input stream #0.1 frame changed from rate:48000 fmt:s16 ch:2 to rate:48000 fmt:flt ch:2
frame=33910 fps= 91 q=2.0 size=  151922kB time=336.58 bitrate=3697.7kbits/s dup=5475 drop=530    

О, интересно. Я использовал отладку -loglevel -debug. Я видел эту информацию

stream #0:
  keyframe=0
  duration=0.000
  dts=1133.449  pts=1133.533
  size=103
*** 1 dup!
stream #0:
  keyframe=0
  duration=0.000
  dts=1133.449  pts=1133.449
  size=104

Пока я, наконец, не получил это сообщение

*** drop!

Я опубликовал свою ошибку с libav http://bugzilla.libav.org/show_bug.cgi?id=67

Спасибо за вашу помощь.


person Marketing Consultant    schedule 03.11.2011    source источник


Ответы (2)


Попробуйте запустить avconv с более высоким уровнем журнала: -loglevel debug. Это должно дать вам больше данных. Также попробуйте -dump и -debug.

Вы уверены, что это не потому, что вы нажмете ограничение на хранение?

person Morten Kristensen    schedule 03.11.2011
comment
да, я почти уверен, что это не пробел в памяти, я могу запускать 10 видео одновременно, и все останавливается примерно на полпути. Я сбросил гигабайты своего жесткого диска T, я выделил больше оперативной памяти для VPS. Я почти уверен, что это не проблема пространства. - person Marketing Consultant; 04.11.2011
comment
Звучит разумно. Вы пробовали с флагами, на которые я указал? Должен дать вам много данных для просмотра. - person Morten Kristensen; 04.11.2011
comment
well -loglevel debug -debug выводит много информации, в основном блок о каждом кадре. При этом совсем не замедлился. - person Marketing Consultant; 04.11.2011
comment
Да, это наконец остановилось, я получил сообщение об ошибке и обновил вопрос. Есть идеи, как это исправить? - person Marketing Consultant; 04.11.2011

Недавно я столкнулся с этим с помощью ffmpeg при преобразовании некоторых видеоклипов странного размера в «стандартные» потоки 16: 9 x264 и AAC внутри контейнера mp4. Когда появлялось сообщение «Несовместимый образец формата« s16 »для кодека« ac3 », автоматический выбор формата« flt »», мой процесс ffmpeg часто просто зависал на неопределенный срок при 100% загрузке ЦП.

В конце концов я обнаружил, что проблема, по крайней мере в моем случае, заключалась в том, что из-за преобразований, которые я выполнял (перекодирование в промежуточный формат, а затем в окончательный желаемый результат), на самом деле количество каналов аудиопотока вызывало кодирование. процесс зависнуть. Сказав ffmpeg преобразовать аудиопоток в 2-канальный, я смог навсегда решить эту проблему.

То же самое решение, вероятно, применимо к avconv. В мире ffmpeg (и из-за того, что я застрял с устаревшей версией) мне просто нужно было добавить -ac 2 к моей команде ffmpeg, и все работало отлично!

Надеюсь, это поможет :)

person Murphy's Prophet    schedule 09.07.2015