FFmpeg создает пустой файл

у меня проблемы с ffmpeg на OSX Lion. Я пытаюсь преобразовать файл mpeg, а выход всегда представляет собой файл размером 400 кб или около того..

команда:

 ffmpeg -i out_poem_big.mpg -s 1280x720 -vpre medium outvideo.mp4

вот лог:

FFmpeg version 0.6.3, Copyright (c) 2000-2010 the FFmpeg developers
  built on Feb 21 2012 21:57:04 with gcc 4.2.1 (Based on Apple Inc. build 5658) (LLVM build 2336.1.00)
  configuration: --disable-debug --prefix=/usr/local/Cellar/ffmpeg/0.6.3 --enable-shared --enable-pthreads --enable-nonfree --enable-gpl --disable-indev=jack --enable-libx264 --enable-libfaac --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libvpx --enable-libxvid --enable-libfaad
  libavutil     50.15. 1 / 50.15. 1
  libavcodec    52.72. 2 / 52.72. 2
  libavformat   52.64. 2 / 52.64. 2
  libavdevice   52. 2. 0 / 52. 2. 0
  libswscale     0.11. 0 /  0.11. 0

Seems stream 0 codec frame rate differs from container frame rate: 59.94 (60000/1001) -> 29.97 (60000/2002)
Input #0, mpeg, from 'out_poem_big.mpg':
  Duration: 00:08:35.61, start: 1.000000, bitrate: 14823 kb/s
    Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], 104857 kb/s, 28.90 fps, 29.97 tbr, 90k tbn, 59.94 tbc
    Stream #0.1[0x1c0]: Audio: mp2, 44100 Hz, 2 channels, s16, 128 kb/s
File 'outvideo.mp4' already exists. Overwrite ? [y/N] y
[libx264 @ 0x7fb7ca033600]using SAR=1/1
[libx264 @ 0x7fb7ca033600]using cpu capabilities: MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x7fb7ca033600]profile High, level 3.1
[libx264 @ 0x7fb7ca033600]264 - core 120 - H.264/MPEG-4 AVC codec - Copyleft 2003-2011 - http://www.videolan.org/x264.html - options: cabac=1 ref=3 deblock=1:0:0 analyse=0x3:0x113 me=hex subme=7 psy=1 psy_rd=1.00:0.00 mixed_ref=1 me_range=16 chroma_me=1 trellis=1 8x8dct=1 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=-2 threads=1 sliced_threads=0 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=3 b_pyramid=2 b_adapt=1 b_bias=0 direct=1 weightb=1 open_gop=0 weightp=2 keyint=250 keyint_min=25 scenecut=40 intra_refresh=0 rc_lookahead=40 rc=abr mbtree=1 bitrate=200 ratetol=20.0 qcomp=0.60 qpmin=10 qpmax=51 qpstep=4 ip_ratio=1.41 aq=1:1.00
Output #0, mp4, to 'outvideo.mp4':
  Metadata:
    encoder         : Lavf52.64.2
    Stream #0.0: Video: libx264, yuv420p, 1280x720 [PAR 1:1 DAR 16:9], q=10-51, 200 kb/s, 60k tbn, 29.97 tbc
    Stream #0.1: Audio: libfaac, 44100 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
  Stream #0.0 -> #0.0
  Stream #0.1 -> #0.1
Press [q] to stop encoding
Input Stream #0.0 frame size changed to 1920x1080, yuv420p

Я пробовал все виды vcodec и выход такой же в лучшем случае, также пробовал-sameq но не повезло.

ffmpeg был установлен через homebrew

2
задан slhck
25.11.2022 19:58 Количество просмотров материала 2946
Распечатать страницу

1 ответ

есть несколько вещей, которые я хотел бы обратить внимание:

  • обновите версию FFmpeg. Он ужасно устарел. Беги brew update а то brew upgrade чтобы сделать так. В FFmpeg 0.9 появился новый способ задания предустановок кодировки, и тот, который вы сейчас используете, является просто устаревшим.

  • никогда не используйте sameq. Это не означает то же самое качество. Это в основном означает, использовать те же математические функции, которые были использованы во входных данных видео, которое на самом деле резко снижает качество.


где ваша проблема ...

давайте вернемся к вопросу под рукой. Выходное видео имеет скорость передачи ~200 кбит / с, а входное-14823 кбит / с. Вот почему это выглядит так плохо. Это теперь зависит от того, что вы хотите сделать. Если вы просто хотите изменить контейнер на MP4, используйте -vcodec copy и покончим с этим.

если вы хотите изменить размер кадра, использовать что-то вроде следующего:

ffmpeg -i out_poem_big.mpg -c:v libx264 -preset slow -crf 22 -s 1280x720 -c:a libfaac -b:a 128K outvideo.mp4

что это значит?

  • самый важный аспект здесь -crf 22 постоянный коэффициент. Сделать его ниже для лучшего качества, сделать его больше за худшее качество. См.этот ответ для более подробного объяснения что это значит.

    Если вам нужна постоянная скорость выходного битов, замените -crf 22 С -b:v 1M, например. Обратите внимание, что постоянная скорость передачи данных приводит к ухудшению качества должно к путю x264 регулирует его.

  • -c:v вместо -vcodec. Это означает то же самое, но это формат по умолчанию и я предпочитаю придерживаться этого. Кроме того, мы явно хотим libx264 так как все другие кодеры, скорее всего, уменьшат качество, которое вы получаете для размера файла (например, MPEG-4 Part II,-c:v mpeg4).

  • -preset slow будет использовать медленный вариант кодирования с более эффективной битной оптимизацией.

  • I указывается аудиокодек и Битрейт аудио. Измените его соответственно, в зависимости от того, что вы хотите использовать.

  • см. этот ответ для получения дополнительной информации о кодировке FFmpeg:

4
отвечен slhck 2022-11-27 03:46

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх