![设备支持哪些功能](https://linux22.com/image/1420305/%E8%AE%BE%E5%A4%87%E6%94%AF%E6%8C%81%E5%93%AA%E4%BA%9B%E5%8A%9F%E8%83%BD.png)
我想给我的女朋友发送几个视频,但我要确保它们可以在她的手机上播放。我想在我的 Arch Linux 机器上执行编码任务,因为我的 PC 是低端的。我只能使用 ffmpeg 或 mencoder 或其他 CLI 工具。她可以播放 YouTube 视频,但我不想将此类视频上传到 YouTube。是否有针对特定手机的预设?当她单击视频直接链接时,它会直接在手机上播放还是我应该将其嵌入 html5/flash 播放器中,就像在 YouTube 上一样?
答案1
设备支持哪些功能
根据Xperia U 白皮书该设备可以解码 MP4 容器中带有 AAC 音频的 H.264、High profile、3.2 级别视频。
示例ffmpeg
命令
ffmpeg -i input -codec:v libx264 -crf 23 -preset medium -profile high -level 3.2 \
-pix_fmt yuv420p -movflags +faststart -codec:a aac -strict experimental out.mp4
这些选项的作用
-codec:v libx264
– 选择视频编码器libx264
对 H.264 视频进行编码。-crf 23
– 输出视频质量级别。23
是默认值,值越低,质量越高。-preset medium
– 编码速度与压缩效率的权衡。默认值为medium
。-profile high
– 将 H.264 视频配置文件设置为高。-level 3.2
– 将 H.264 视频级别设置为 3.2。-pix_fmt yuv420p
–ffmpeg
尝试最小化或避免色度二次采样(取决于输入、编码器、ffmpeg
版本等)。从技术上讲,这是一件好事,但可能会导致非基于 FFmpeg 的播放器无法处理的输出。这确保了兼容的色度二次采样方案。-movflags +faststart
– 将“moov atom”重新定位到文件的开头,以便在渐进式下载的情况下(例如通过浏览器观看),可以在文件完全下载之前开始播放。-codec:a aac -strict experimental
– 使用实验性的原生 FFmpeg AAC 编码器对 AAC 音频进行编码。它不是最差的 AAC 编码器,但如果声音不好,请使用更高的比特率-b:a
(默认为 128k)。
补充笔记
使用最新版本的
ffmpeg
。旧版本在使用时不会强制使用正确的参考帧数-level
(已修复错误 #3307),但由于您使用的是 Arch Linux,所以不必担心这一点。Arch Linux Extra 存储库中的 ffmpeg 包仅支持本机 FFmpeg AAC 编码器。使用 ABS 重新编译
--enable-libfdk-aac --enable-nonfree
(使用 libfdk-aac 包作为依赖项)或使用 AUR 中的 ffmpeg-git 包来获得使用 libfdk_aac 编码的支持,这是 FFmpeg 支持的最佳 AAC 编码器。如果您想尝试此操作,建议使用 ABS 包而不是 AUR 包。如果输入视频和/或音频已经兼容,那么您可以简单地流复制它而不是重新编码,例如使用
-codec:a copy
。移动设备可能还有其他我不知道的限制,所以你必须自己试验。我也不确定该设备是否能使用简单的视频链接,但这很容易测试。
查看FFmpeg H.264 编码指南和FFmpeg AAC 编码指南了解更多信息。