file
说所有文件都是ISO Media, MPEG v4 system, version 2
,标题的信息来自 VLC 2.0.9。在我看来 1080p 不是必要的,尤其是因为之前的其他视频都是 720p,而且很好;我不知道也不确定,但我认为所有这些视频都是高清的,这解释了它们的大小。为了完整起见,VLC 在播放过程中提供的其余信息如下:
Decoded format: Planar 4:2:0 YUV
我发现不止一个答案,它们都使用ffmpeg
但这avconv
是后继者;我知道,它们至少在大多数情况下是同一件事。我从经验中知道avconv
不接受为设计的某些选项ffmpeg
。更不用说两者都有在同一个程序中听起来相似但结果完全不同的选项。
答案1
1. 获取ffmpeg
使用 进行编码时,使用最新版本始终是个好主意ffmpeg
。开发非常活跃,使用最新版本可以让您避免修复错误,同时让您访问最新功能。
主要有两种方法可以获取ffmpeg
,并且都不会干扰存储库中的包,包括所谓的“ffmpeg”包:
使用静态构建
这只是一个其他人编译的二进制文件。你只需下载、提取并运行它(注意之前的./
)ffmpeg
:
wget http://ffmpeg.gusari.org/static/32bit/ffmpeg.static.32bit.$(date +"%F").tar.gz
tar xzvf ffmpeg.static.32bit.$(date +"%F").tar.gz
./ffmpeg -i input.mp4 <your options> output.mkv
编译ffmpeg
在编译时,您可以精确控制如何配置,还允许您使用静态构建中不可用的ffmpeg
某些编码器,例如。libfdk_aac
只需按照分步指南进行操作即可:如何在 Ubuntu 上编译 FFmpeg。如果你能复制粘贴你就能编译ffmpeg
。
2. 编码
ffmpeg -i in.avi -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy out.mkv
在此示例中:
这
scale
筛选调整视频大小。scale
您只需声明一个尺寸(本例中为高度),然后使用-1
另一个尺寸。ffmpeg
然后会自动计算正确的值,同时保持宽高比。编码器
libx264
将生成 H.264 视频。质量由 控制-crf
。范围是 0 到 51 的对数刻度。0 表示无损(文件可能很大),18 通常被认为是“视觉无损”,23 是默认值,51 表示质量最差。通常,您使用仍能提供可接受质量的最高值。视频编码速度/压缩效率此编码器由 控制
-preset
。这些是:超快、超快、非常快、更快、快、中、慢、更慢、非常慢。默认值为“中”。通常,您可以使用您有耐心的最慢预设。对于一组视频使用相同的方法
-crf
,并对-preset
所有视频都使用相同的方法。音频将流已复制从输入到输出。可以把它想象成复制和粘贴。
将使用 Matroska 输出容器。它支持更多格式,但不像 MP4 那样受到播放器和设备的广泛支持。
编码所有视频
您可以使用 bash“for 循环”对目录中的所有视频进行编码:
mkdir encoded
for f in *.avi; do ./ffmpeg -i "$f" -vf scale=-1:720 -c:v libx264 -crf 18 -preset fast -c:a copy encoded/"${f%.avi}.mkv"; done