我知道这里有很多关于视频编码器的问题,但是我的问题更多是关于工作流程/效率。
对于我的日常工作,我需要经常从许多随机格式(通常是大AVI,M4V等)转换视频,并将其转换并压缩为可在互联网上上传的高效文件。我必须产生的格式是:
- WMV(Windows Media Video 9)
- MOV(H.264)
- MP4(H.264)
我需要为几个用例(转换为与源相同,1080p或720p)创建通用模板,并能够快速处理它们并排队。
关于如何最好地在Ubuntu中执行此过程的任何想法?
我知道这里有很多关于视频编码器的问题,但是我的问题更多是关于工作流程/效率。
对于我的日常工作,我需要经常从许多随机格式(通常是大AVI,M4V等)转换视频,并将其转换并压缩为可在互联网上上传的高效文件。我必须产生的格式是:
我需要为几个用例(转换为与源相同,1080p或720p)创建通用模板,并能够快速处理它们并排队。
关于如何最好地在Ubuntu中执行此过程的任何想法?
Answers:
如果您更喜欢命令行,可以使用ffmpeg
(或handbrake-cli
)。
假设您使用的是最新版本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,因为这些视频服务仍然会重新编码。
-preset
:编码速度。较慢的预设可提供更好的压缩率(每个文件大小的质量),但较慢。使用耐心最慢的设备:超快,超快,非常快,更快,快,中(默认),慢,慢,非常慢。
-movflags +faststart
:在逐步下载观看的情况下,允许在完全下载视频之前播放视频。如果您托管视频,则很有用;否则,如果上传到YouTube之类的视频服务,则多余。
-vf scale=-2:720,format=yuv420p
:一个FilterGraph动态使用规模和格式的视频滤镜。缩放到720像素的高度,并自动选择将保留长宽比的宽度,然后确保像素格式与傻瓜播放器兼容。
-b:a 128k
:音频比特率。如果您ffmpeg
已过时,则需要添加-strict experimental
使用-c:a aac
。
由于您的MOV和MP4文件可能包含相同的视频和音频格式,因此您可以对MP4进行编码,并通过重新混合(使用流复制模式)而不是重新编码来制作MOV :
ffmpeg -i input.mp4 -codec copy output.mov
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的Linux版本,也可以按照ffmpeg逐步指南进行自定义。
要将所有视频编码到目录中:
$ 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