首页 > 解决方案 > 加速视频编码

问题描述

我的任务是从输入视频(.avi、.mov、.mp4 等)创建与 html5 兼容的视频。我的理解是我的输出应该是 .webm 或 .mp4(H264 视频,aac 音频)。我使用ffmpeg进行转换,需要很多时间。我想知道是否可以使用 ffprobe 来测试输入视频是否为“H264”和“aac”,如果是,那么也许我可以直接将视频/音频复制到输出中而无需修改。

即我有下一个想法:

  1. 使用 ffprobe 获取输入视频信息:
ffprobe {input} -v quiet -show_entries stream=codec_name,codec_type -print_format json

结果将是这样的 JSON:

"streams": [
 {codec_name="mjpeg",codec_type="video"},
 {codec_name="aac",codec_type="audio"}
]
  1. 如果 JSON 告诉视频编解码器是 h264,那么我想我可以复制视频流。如果 JSON 告诉音频编解码器是h264 aac,那么我想我可以复制音频流。
  2. 上面的 JSON 告诉我我的音频是“aac”。所以我想我可以将音频流复制到输出视频中,但仍然需要视频流转换。对于上面的示例,我的 ffmpeg 命令如下:
ffmpeg -i {input} -c:v libx264 -c:a copy ouput.mp4

问题是我是否总是可以使用这个想法来制作与 html5 兼容的视频,以及这种方法是否真的会加速视频转换。

标签: ffmpegvideo-encodingffprobe

解决方案


问题是我是否总是可以使用这个想法来制作兼容 html5 的视频

可能,但有一些警告:

  • 您的输出可能使用 H.264 High profile,但您的目标设备可能不支持(但现在不太可能)。
  • 确保像素格式为 yuv420p。如果不是,那么它可能无法播放,您将不得不重新编码-vf format=yuv420p。您可以pix_fmt在您的-show_entries stream.
  • 如果文件直接来自摄像机或其他编码效率低的设备,则文件大小可能对您的查看器来说过大。
  • 添加-movflags +faststart到您的命令,以便视频可以在文件完全下载之前开始播放。

如果这种方法真的会加速视频转换。

是的,因为您只是快速的流复制(重新混合),而不是重新编码一些/所有缓慢的流。


推荐阅读