转换video的最快方式(批量还是单个)?
我知道这里有很多关于video编码器的问题,但我的问题更多是关于工作流程/效率。
对于我的日常工作,我需要经常从许多随机格式转换video(通常是大型AVI , M4V ,什么不是),然后转换它们并将它们压缩成我们可以在互联网上用来上传的高效文件。 我必须制作的格式是:
- WMV( Windows Media Video 9)
- MOV ( H.264 )
- MP4 (H.264)
我需要为几个用例创建通用模板(转换为同源, 1080p或720p )并能够快速处理这些用例并排队。
关于如何在Ubuntu中最好地完成这个过程的任何想法?
如果您更喜欢命令行,可以使用ffmpeg
(或handbrake-cli
)。
MP4
假设您使用的是最新版本的ffmpeg
:
ffmpeg -i input -c:v libx264 -crf 23 -preset medium -c:a aac -b:a 128k \ -movflags +faststart -vf scale=-2:720,format=yuv420p output.mp4
-
-crf
:质量。 范围是对数0(无损)到51(最差质量)。 默认值为23.主观理智范围为~18-28左右。 使用仍然为您提供可接受质量的最高值。 如果您要重新编码不切实际的大输入以上传到YouTube或类似设备,请尝试使用值17或18,因为这些video服务无论如何都会重新编码。 -
-preset
:编码速度。 较慢的预设可提供更好的压缩(每个文件大小的质量),但速度较慢。 使用你有耐心的最慢:超快,超快,非常快,快,快,中(默认),慢,慢,veryslow。 -
-movflags +faststart
:在渐进式下载查看的情况下,允许video在完全下载之前播放。 如果您要托管video,则非常有用,否则,如果您上传到YouTube等video服务,则会多余。 -
-vf scale=-2:720,format=yuv420p
:使用缩放和格式videofilter的filter图。 缩放到720像素的高度,并自动选择将保留方面的宽度,然后确保像素格式与哑巴玩家兼容。 -
-b:a 128k
:音频比特率。 如果你的ffmpeg
已经过时,那么你需要添加-strict experimental
来使用-c:a aac
。
MOV
由于您的MOV和MP4文件可能包含相同的video和音频格式,因此您可以对MP4进行编码并通过重新复用(使用流复制模式)而不是重新编码来制作MOV:
ffmpeg -i input.mp4 -codec copy output.mov
WMV
FFmpeg仅支持WMV 7和8.我不知道版本9的开源编码器。
$ ffmpeg -encoders | grep -i windows [...] V..... = Video A..... = Audio ------ V..... wmv1 Windows Media Video 7 V..... wmv2 Windows Media Video 8 A..... wmav1 Windows Media Audio 1 A..... wmav2 Windows Media Audio 2
由于我不熟悉这些编码器,我只能给出一个未经测试的例子:
ffmpeg -i input -c:v wmv2 -b:v 1024k -c:a wmav2 -b:a 192k output.wmv
得到ffmpeg
您可以下载ffmpeg的Linux版本,或者按照一步一步的ffmpeg编译指南来自定义您的版本。
使用bash“for loop”执行批处理编码
要编码目录中的所有video:
$ mkdir encoded $ for f in *.avi; do ffmpeg -i "$f" -c:v libx264 -crf 23 -preset medium \ -c:a aac -b:a 128k -movflags +faststart -vf scale=-2:720,format=yuv420p \ "encoded/${f%.avi}.mp4"; done
另见
- 谁能告诉我ffmpeg,libav和avconv之间的区别和关系?
- FFmpeg H.264video编码指南
- FFmpeg AAC音频编码指南
- 使用HandBrakeCLI
试试HandBrake 。
HandBrake是一种将video从几乎任何格式转换为现代广泛支持的编解码器的工具。 要安装,只需按键盘上的Ctrl + Alt + T即可打开终端。 打开时,运行以下命令:
sudo add-apt-repository ppa:stebbins/handbrake-releases sudo apt-get update sudo apt-get install handbrake