Как мне отладить, почему avconv останавливается? - PullRequest
0 голосов
/ 04 ноября 2011

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

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

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

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

ОС Ubuntu 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 -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

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

Ответы [ 2 ]

2 голосов
/ 04 ноября 2011

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

Вы уверены, что это не потому, что вы бьете крышку?

0 голосов
/ 09 июля 2015

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

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

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

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

...