我正在尝试使用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
您的 ffmpeg 版本在配置中缺失--enable-libx264
;这意味着它未编译为支持 libx264 外部编码库。此外,ffmpeg 版本 0.5 被认为是过时的,因此我建议您编译 ffmpeg或使用最近的静态构建。可通过以下链接获取适用于 Linux、OS X 和 Windows 的构建:FFmpeg 下载页面。建议使用最新版本,因为它们通常很稳定并且开发非常活跃。
您正在从 856x368 缩放到 320x240,但这会垂直拉伸视频。使用 320x138 将保留您的宽高比,但要自动计算值,您可以使用scale
过滤而不是-s
:
-vf scale=320:-1
将会-1
告诉scale
自动提供一个将保留方面的值。