例如,我经常看到使用该sameq选项的FFmpeg 命令
ffmpeg -i input.mp4 -sameq output.avi
Run Code Online (Sandbox Code Playgroud)
这是什么意思?这是否意味着“相同的质量”?如果不是,我应该用什么代替?
我需要以一种可以在 windows xp 上使用 windows media player 播放的格式对短视频进行编码,而无需安装任何额外的编解码器。对于重新编码过程,我使用的是 ffmpeg。
我已经尝试过msmpeg4v2编解码器,但质量很差(与您看到大“块”的原始视频相比),所以我正在寻找其他开箱即用的编解码器,并且至少具有“好的”质量。
由于评论表明它可能不是编解码器而是比特率问题,这是我使用的命令:
ffmpeg -i x.flv -vcodec msmpeg4v2 -acodec adpcm_ima_wav x.avi
Run Code Online (Sandbox Code Playgroud)
输出:
Input #0, flv, from 'x.flv':
Metadata:
moovPosition : 39337765
avcprofile : 100
avclevel : 30
aacaot : 2
videoframerate : 25
audiochannels : 2
Duration: 00:06:19.52, start: 0.000000, bitrate: 836 kb/s
Stream #0:0: Video: h264 (High), yuv420p, 702x396 [SAR 2596:3679 DAR 354:283], 25 tbr, 1k tbn, 50 tbc
Stream #0:1: Audio: aac, 48000 Hz, stereo, s16
w:702 h:396 …Run Code Online (Sandbox Code Playgroud) 我有一个 WMV(v9 (WMV3)、960x720、30.000030 fps、平面 4:2:0 YUV,由 PowerPoint 2010 制作)文件,需要将其转换为 MPEG2 - 我的电视机可以从 USB 闪存驱动器读取的唯一格式(我也试过 MP4/h.264、AVI/XVID——除了 MPEG2 什么都没有)。
我设法用简单的方式完成了工作
ffmpeg -i "in.wmv" -c:v mpeg2video "out.mpg"
Run Code Online (Sandbox Code Playgroud)
但是结果的质量很糟糕(引入了清晰可见的视觉失真)并且播放不流畅(有时太慢)。
我也试过
ffmpeg -i "in.wmv" -c:v mpeg2video -pix_fmt yuv420p -me_method epzs -threads 4 -r 30.000030 -g 45 -bf 2 -trellis 2 -cmp 2 -subcmp 2 -s 960x720 -b 2500k -bt 300k -async 1 -y "out.mpg"
Run Code Online (Sandbox Code Playgroud)
(我在互联网上的某个地方找到了这个并稍作修改 - 改变了分辨率、刷新率和输出格式(从 VOB 到裸 MPG))成功但质量仍然太差。
我必须使用哪些参数来尽可能地保存质量?压缩比根本不重要,即使文件大小增加也是可以接受的。
我真正需要的另一件事(我选择不将其包含在问题标题中以避免使其过于具体,但我希望在答案中考虑它)正在添加纯静音作为音轨 - 没有声音原来的,但电视机抱怨它,我想摆脱这个抱怨。我使用 Audacity 生成了一个相同长度(第二精度)的静音 OGG Vorbis 文件,但我无法将其与视频合并:
ffmpeg -i in.mpg -i silence.ogg -c:v …Run Code Online (Sandbox Code Playgroud) 下面的命令执行没有错误。
ffmpeg -i thevideo.mkv outvideo.avi
Run Code Online (Sandbox Code Playgroud)
随后尝试在 Windows Media 播放器中播放 outvideo.avi 引发此错误
You may need an additional video decoder to play this file.
This file contains a track in an unknown format (code "ARGB") format. You may need to
install a DirectShow decoder for this video format in order to play this file.
Run Code Online (Sandbox Code Playgroud)
Windows Media 播放器提供的错误详细信息表明播放视频需要 mpg2 编解码器。如何告诉 ffmpeg 转码为 Windows Media Player 支持的视频编解码器?