【问题标题】:Speed up video encoding加速视频编码
【发布时间】:2019-08-27 07:52:10
【问题描述】:

我的任务是从输入视频(.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 的视频,以及这种方法是否真的可以加快视频转换速度。

【问题讨论】:

    标签: ffmpeg video-encoding ffprobe


    【解决方案1】:

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

    可能,但有一些注意事项:

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

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

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

    【讨论】:

      猜你喜欢
      • 2011-06-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-28
      • 2013-11-11
      • 2013-09-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多