使用 ffmpeg 通过 MPEG-4 编码器将 yuv 编码为 m4v

使用 ffmpeg 通过 MPEG-4 编码器将 yuv 编码为 m4v

我正在尝试将原始 yuv 文件编码为 m4v,如下所示:

ffmpeg -s cif -r 30 -b 64000 -bt 3200 -g 30 -i akiyo_cif.yuv -vcodec mpeg4 a02.m4v

但它不起作用,我从控制台输出中收到此错误:

ffmpeg 版本 2.4.3-1ubuntu1~trusty6 版权所有 (c) 2000-2014 FFmpeg 开发人员于 2014 年 11 月 22 日 17:07:19 使用 gcc 4.8(Ubuntu 4.8.2-19ubuntu1)构建配置:--prefix=/usr --extra-version='1ubuntu1~trusty6' --build-suffix=-ffmpeg --toolchain=hardened --extra-cflags= --extra-cxxflags= --libdir=/usr/lib/x86_64-linux-gnu --shlibdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --enable-gpl --enable-shared --disable-stripping --enable-avresample --enable-avisynth --enable-fontconfig --启用 gnutls --启用 ladspa --启用 libass --启用 libbluray --启用 libbs2b --启用 libcaca --启用 libcdio --启用 libflite --启用 libfreetype --启用 libfribidi --启用 libgme --启用 libgsm --启用 libmodplug --启用 libmp3lame --启用 libopenjpeg --启用 libopus --启用 libpulse --启用 librtmp --启用 libschroedinger --启用 libshine --启用 libspeex --启用 libssh --启用 libtheora --启用 libtwolame --启用 libvorbis --启用 libvpx --启用 libwavpack --启用 libwebp --启用 opengl --启用 x11grab --启用 libxvid --启用 libx265 --启用 libdc1394 --启用-libiec61883 --启用-libzvbi --启用-libzmq --启用-frei0r --启用-libx264 --启用-libsoxr --启用-openal --启用-libopencv

libavutil 54. 7.100 / 54. 7.100 libavcodec 56. 1.100 / 56. 1.100 libavformat 56. 4.101 / 56. 4.101 libavdevice 56. 0.100 / 56. 0.100 libavfilter 5. 1.100 / 5. 1.100 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 0.100 / 3. 0.100 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 0.100 / 53. 0.100

选项 b(视频比特率(请使用 -b:v))无法应用于输入文件 akiyo_cif.yuv - 您正在尝试将输入选项应用于输出文件或反之亦然。将此选项移到其所属文件之前。

解析输入文件 akiyo_cif.yuv 的选项时出错

打开输入文件时出错:参数无效

akiyo_cif.yuv文件位于此处:

http://trace.eas.asu.edu/yuv/akiyo/akiyo_cif.7z

有人能帮助我吗,我真的需要让它发挥作用。

答案1

您已放置比特率选项放在了错误的位置,错误信息告诉你:

Option b (video bitrate (please use -b:v)) cannot be applied to input file 
akiyo_cif.yuv -- you are trying to apply an input option to an output file 
or vice versa. Move this option before the file it belongs to.

记住 FFmpeg 选项始终使用此流程:

ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

以下调整后的语法将修正后的比特率选项应用于输出文件而不是输入文件

ffmpeg -s cif -r 30 -i akiyo_cif.yuv -c:v mpeg4 -b:v 64k -bt 32k -g 30 a02.m4v

由于您指定的比特率很低,因此输出文件的质量并不是很好,但这当然可以调整。在我的系统上,类似以下更高质量的视频编码设置看起来很棒:

ffmpeg -s cif -r 30 -i akiyo_cif.yuv -c:v mpeg4 -q:v 5 a02.m4v

但也许您对输出视频有非常特殊的需求,因此这并不适合......

相关内容