ffmpeg зависает при создании видео

4407
FearUs

Я пытаюсь вставить аудиоканал с видео:

  1. Прежде всего я извлекаю аудио из оригинального видео для обработки:

    ffmpeg -i lotr.mp4 lotr.wav

  2. Затем я извлекаю все кадры для последующей обработки:

    ffmpeg -i lotr.mp4 -f image2 %d.jpg

  3. По окончании обработки аудио и видео потоков я пытаюсь создать видео

    ffmpeg -f image2 -r 15 -i %d.jpg new.mp4

  4. затем объединить с аудио:

    ffmpeg -i new.mp4 -i lotr.wav -map 0:0 -map 1:0 new_w_audio.mp4

Результат: активность процессора = 100%, процесс зависает и никогда не возвращается. PS : я даже попробовал это, не изменяя изображения или аудио (поэтому просто пытаюсь распаковать, а затем перепаковать видео), но все равно тот же вывод

FFmpeg version SVN-r26400, Copyright (c) 2000-2011 the FFmpeg developers built on Jan 18 2011 04:07:05 with gcc 4.4.2 configuration: --enable-gpl --enable-version3 --enable-libgsm --enable-libvorb is --enable-libtheora --enable-libspeex --enable-libmp3lame --enable-libopenjpeg --enable-libschroedinger --enable-libopencore_amrwb --enable-libopencore_amrnb --enable-libvpx --disable-decoder=libvpx --arch=x86 --enable-runtime-cpudetect - -enable-libxvid --enable-libx264 --enable-librtmp --extra-libs='-lrtmp -lpolarss l -lws2_32 -lwinmm' --target-os=mingw32 --enable-avisynth --enable-w32threads -- cross-prefix=i686-mingw32- --cc='ccache i686-mingw32-gcc' --enable-memalign-hack  libavutil 50.36. 0 / 50.36. 0 libavcore 0.16. 1 / 0.16. 1 libavcodec 52.108. 0 / 52.108. 0 libavformat 52.93. 0 / 52.93. 0 libavdevice 52. 2. 3 / 52. 2. 3 libavfilter 1.74. 0 / 1.74. 0 libswscale 0.12. 0 / 0.12. 0 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'new.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Duration: 00:00:29.66, start: 0.000000, bitrate: 193 kb/s Stream #0.0(und): Video: mpeg4, yuv420p, 200x134 [PAR 1:1 DAR 100:67], 192 k b/s, 15 fps, 15 tbr, 15 tbn, 15 tbc Metadata: creation_time : 1970-01-01 00:00:00 [wav @ 01fed010] max_analyze_duration reached Input #1, wav, from 'lotr.wav': Duration: 00:00:29.90, bitrate: 176 kb/s Stream #1.0: Audio: pcm_s16le, 11025 Hz, 1 channels, s16, 176 kb/s File 'new_w_audio.mp4' already exists. Overwrite ? [y/N] y [buffer @ 01b03820] w:200 h:134 pixfmt:yuv420p Output #0, mp4, to 'new_w_audio.mp4': Metadata: major_brand : isom minor_version : 512 compatible_brands: isomiso2mp41 creation_time : 1970-01-01 00:00:00 encoder : Lavf52.93.0 Stream #0.0(und): Video: mpeg4, yuv420p, 200x134 [PAR 1:1 DAR 100:67], q=2-3 1, 200 kb/s, 15 tbn, 15 tbc Metadata: creation_time : 1970-01-01 00:00:00 Stream #0.1: Audio: aac, 11025 Hz, 1 channels, s16, 64 kb/s Stream mapping: Stream #0.0 -> #0.0 Stream #1.0 -> #0.1 Press [q] to stop encoding 
1
Текущие ffmpeg все еще имеют эту проблему? Если да, возможно, отправьте trac-билет с небольшим воспроизводимым образцом. Также какая ОС? rogerdpack 11 лет назад 0

2 ответа на вопрос

3
wedo

Попробуйте обновить до последней версии ffmpeg.

В случае, если мод реагирует на флаги здесь: это * часто * единственное решение проблем FFmpeg. Обновление до последней версии. Пожалуйста, не удаляйте этот ответ. slhck 12 лет назад 1
@slhck, но это базовый диагностический шаг для любой проблемы, когда в программном обеспечении наблюдается нестабильное поведение: 1. Есть ли проблема? Да 2. Обновление исправило это? № 3. Обратитесь в SU за помощью Paul 12 лет назад 0
@ Пол, я понимаю твою точку зрения. Это определенно первое, что вы попробуете, но так много людей не хотят обновлять свою версию FFmpeg, это даже не смешно. Я в списке рассылки, это происходит там постоянно. Я думаю, что это стоит сохранить просто потому, что я знаю, что это решит немало проблем. slhck 12 лет назад 0
@slhck Я вижу - я понял, они в дистрибутивах с фиксированным выпуском и им неудобно `делать` и управлять обновленной версией? Или какова бы ни была их причина, поэтому я предпочитаю скользящий выпуск Упс, у меня, кажется, есть обсуждение в комментариях. Paul 12 лет назад 3
2
S.gfx

Может быть несколько вещей. Обычно при работе с несжатыми видеокодеками часто происходит зависание. Не уверен, что я прочитал там оригинальное видео в кодеке yuv420p. Возможно, он зависает при попытке обработки большого объема памяти или при непосредственном сжатии изображений в mp4. Одна вещь, о которой я могу думать, - это сначала преобразовать в avi, то есть вывести в avi, но принудительно использовать кодек без потерь, такой как camtasia / camstudio (я думаю, что ffmpeg его поддерживает), поэтому он не такой «тяжелый», а затем выполнить вторую операцию конвертировать в mp4. Другое дело ... -r15? Вы наверняка знаете лучше, на каком fps находится оригинальное видео, но раньше это было 24fps или около того, не так ли?

Кроме того ... Вы можете также использовать выходной кодек, а не только формат. MP4 очень хорошо работает с кодеком .h264, который дает много качества и невероятно маленький размер. Если я хорошо помню, ffmpeg также поддерживает это. (вы можете попробовать это в первую очередь ...)

Редактировать: Помните, -кодеки дает вам список кодеков, в командной строке. Конечно, вы можете, например, в консоли Win, ffmpeg -codecs> codecs.txt для более удобного чтения, поиска и т. Д. Полезно делать также и с -форматами и т. Д.

1) видео действительно 15 к / с действительно 2) да, проблема оказалась из-за кодирования в mp4 .. поэтому я поменял его на avi и работал :) СПАСИБО :) FearUs 13 лет назад 0
Здорово, что это сработало! :) S.gfx 13 лет назад 0