我想使用ffmpeg
将mp4
转换为"低大小"mp4
。。。
我需要一个带有h263
视频和aac
音频的mp4
文件(或低成本手机支持的一些其他设置)。我主要担心的是视频可以在大多数设备上播放。
有哪些可能的ffmpeg
命令可以实现这一点?
提前谢谢。
对mp4视频进行编码的方法有很多,而对移动设备进行编码则更为复杂。我不知道你所说的"低成本手机"是什么意思,你指的是设备的低成本,还是播放所述视频所需的带宽?
无论哪种方式,这里有一个帖子让你开始:H.264网络视频编码教程与FFMPEG
示例
以下是文章中的一些ffmpeg
示例。。。
"标准"网络视频(480p,500kbit/s):
ffmpeg -i input_file.avi -vcodec libx264 -vprofile high -preset slow -b:v 500k -maxrate 500k -bufsize 1000k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -b:a 128k output_file.mp4
适用于较旧手机的360p视频(基线时为250kbit/s时为360p配置文件):
ffmpeg -i inputfile.avi -vcodec libx264 -vprofile baseline -preset slow -b:v 250k -maxrate 250k -bufsize 500k -vf scale=-1:360 -threads 0 -acodec libvo_aacenc -ab 96k output.mp4
适用于iPad和平板电脑的480p视频(主配置文件中的480p速度为400kbit/s):
ffmpeg -i inputfile.avi -vcodec libx264 -vprofile main -preset slow -b:v 400k -maxrate 400k -bufsize 800k -vf scale=-1:480 -threads 0 -acodec libvo_aacenc -ab 128k output.mp4
用于存档/存储的高质量SD视频(PAL高达1Mbit/s配置文件):
ffmpeg -i inputfile.avi -vcodec libx264 -vprofile high -preset slower -b:v 1000k -vf scale=-1:576 -threads 0 -acodec libvo_aacenc -ab 196k output.mp4
比特率、规模和配置文件
从那里的例子来看,你可能需要注意的一些关键事情是。。。
-b:v 500k
-b:a 128k
这些是视频v
和音频a
的比特率,数字越低,质量越低,但在低端设备上可能"播放"得越好。
scale=-1:480
这将把视频缩小到更小的尺寸,请参阅帖子中的更多信息)
-vprofile baseline
这个看似奇怪的baseline
(或另一个合适的配置文件参数)在为某些较低成本(例如Android)设备编码时可能很重要。。。
基线配置文件(BP)
主要用于需要额外数据丢失的低成本应用程序鲁棒性,该配置文件用于一些视频会议和移动设备应用程序。此配置文件包括中支持的所有功能受约束的基线纵断面,以及三个附加功能可用于损失稳健性(或用于其他目的,例如低延迟多点视频流合成)。自2009年受约束的基线配置文件。所有受约束的基线配置文件比特流也被认为是基线配置文件比特流,如这两个配置文件共享相同的配置文件标识符代码值。
ffmpeg.exe -i "input.mp4" -vcodec mpeg4 -preset slower -b:v 1000k -vf "scale=640:480,setsar=1,fps=30,pad=640:480:0:0" -acodec aac -ac 2 -ar 22050 -ab 128k "output (480p).mp4"
我找到了答案,无论如何都感谢你的帮助。
ffmpeg -i $input_file -s $size $output_file
$size:320X400或任何WidthXHeight