2

Я пытаюсь передать файл mp4 с помощью ffmpeg:

ffmpeg -re -i '/home/alex/test.mp4' \
-vcodec libx264 -ab 128k -ac 2 -ar 44100 \
-r 25 -s 320x240 -vb 660k -f \
flv 'rtmp://192.168.1.24/live/stream0'

Но я получаю эту ошибку:

Seems stream 0 codec frame rate differs from container frame rate: 2997.00 (2997/1) -> 23.98 (24000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/alex/test.mp4':
  Duration: 00:02:28.79, start: 0.000000, bitrate: 1143 kb/s
    Stream #0.0(und): Video: mpeg4, yuv420p, 856x368 [PAR 1:1 DAR 107:46], 23.98 tbr, 23.98 tbn, 2997 tbc
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16
Unknown encoder 'libx264'

Я устанавливаю ffmpeg из репозитория Debian:

$ cat /etc/debian_version 
6.0.7

Полный консольный вывод:

alex@alex:~$ ffmpeg -re -i '/home/alex/test.mp4' -vcodec libx264 -ab 128k -ac 2 -ar 44100 -r 25 -s 320x240 -vb 660k -f flv 'rtmp://192.168.1.24/live/stream0'
FFmpeg version SVN-r0.5.10-4:0.5.10-1, Copyright (c) 2000-2009 Fabrice Bellard, et al.
  configuration: --extra-version=4:0.5.10-1 --prefix=/usr --enable-avfilter --enable-avfilter-lavf --enable-vdpau --enable-bzlib --enable-libdirac --enable-libgsm --enable-libopenjpeg --enable-libschroedinger --enable-libspeex --enable-libtheora --enable-libvorbis --enable-pthreads --enable-zlib --disable-stripping --disable-vhook --enable-runtime-cpudetect --enable-gpl --enable-postproc --enable-swscale --enable-x11grab --enable-libfaad --enable-libdc1394 --enable-shared --disable-static
  libavutil     49.15. 0 / 49.15. 0
  libavcodec    52.20. 1 / 52.20. 1
  libavformat   52.31. 0 / 52.31. 0
  libavdevice   52. 1. 0 / 52. 1. 0
  libavfilter    0. 4. 0 /  0. 4. 0
  libswscale     0. 7. 1 /  0. 7. 1
  libpostproc   51. 2. 0 / 51. 2. 0
  built on Feb 16 2013 09:22:58, gcc: 4.4.5

Seems stream 0 codec frame rate differs from container frame rate: 2997.00 (2997/1) -> 23.98 (24000/1001)
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/alex/test.mp4':
  Duration: 00:02:28.79, start: 0.000000, bitrate: 1143 kb/s
    Stream #0.0(und): Video: mpeg4, yuv420p, 856x368 [PAR 1:1 DAR 107:46], 23.98 tbr, 23.98 tbn, 2997 tbc
    Stream #0.1(und): Audio: aac, 44100 Hz, stereo, s16
Unknown encoder 'libx264'

Как я могу указать ffmpeg для использования декодера libx264 ?

1 ответ1

3

В вашей сборке ffmpeg отсутствует --enable-libx264 из конфигурации; Это означает, что он не был скомпилирован для поддержки библиотеки внешнего кодирования libx264. Кроме того, ffmpeg версии 0.5 считается древней, поэтому я рекомендую либо скомпилировать ffmpeg, либо использовать последнюю статическую сборку. Сборки доступны для Linux, OS X и Windows по ссылкам на странице загрузки FFmpeg .Рекомендуется использовать последнюю доступную версию, потому что они в целом стабильны и разработка очень активна.

Вы масштабируете от 856x368 до 320x240, но это растянет ваше видео по вертикали. Использование 320x138 сохранит ваше соотношение сторон, но для автоматического вычисления значения вы можете использовать фильтр scale вместо -s:

-vf scale=320:-1

-1 скажет scale чтобы автоматически предоставить значение, которое сохранит аспект.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .