【问题标题】:Encode H265 to hvc1 codec将 H265 编码为 hvc1 编解码器
【发布时间】:2015-08-22 03:49:31
【问题描述】:

这是我的源文件的信息:

我想保持音频质量并且只对视频轨道进行编码,所以我使用了这个命令:

ffmpeg -i INPUT -c:a copy -c:v libx265 video-h265.mp4

这是结果:

但是视频轨道的编解码器是 hev1 。我想要的是 hvc1

【问题讨论】:

  • 为什么提供文字图片而不是简单的复制粘贴?
  • 有什么区别?
  • 文本是可搜索的,可以复制和粘贴(通常对答案有用),不依赖于我假设的第三方图像主机,占用空间更少,应该更容易并且花费更少的时间,并且更容易显示您应该始终提供的完整控制台输出。

标签: ffmpeg


【解决方案1】:

使用最新的 ffmpegN-87630-ge9f9175-tessus 或从 HEAD 构建),您可以使用 -tag:v hvc1 编码为 macOS High Sierra Quicktime 所需的 MP4 版本。

如果您有基于hev1 的mp4,并且您需要容器为hvc1 并且您不想对其重新编码:

ffmpeg -i input-hev1.mp4 -c:v copy -tag:v hvc1 -c:a copy output-hvc1.mp4

使用 ffprobe 确认更改:

发件人:

~~~~
Stream #0:0(eng): Video: hevc (Main) (hev1 / 0x31766568), yuv420p(tv, progressive), 720x404, 164 kb/s, 29.97 fps,
~~~~

收件人:

~~~~
Stream #0:0(eng): Video: hevc (Main) (hvc1 / 0x31637668), yuv420p(tv, progressive), 720x404, 164 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 29.97 tbc (default)
~~~~

如果你有一个基于avc1的mp4,你需要重新编码。

ffprobe 示例 (avc1):

Stream #0:0(und): Video: h264 (Main) (avc1 / 0x31637661), yuv420p(tv, bt709), 960x540 [SAR 1:1 DAR 16:9], 2778 kb/s, 29.97 fps, 29.97 tbr, 90k tbn, 180k tbc (default)

编码示例:

ffmpeg 
    -i input.mp4 \
    -c:v libx265 \
    -preset slow \
    -vf scale="720:trunc(ow/a/2)*2" \
    -crf 28 \
    -tag:v hvc1 \
    -c:a aac -b:a 44100 \
    output-hvc1.mp4

关键是-tag:v hvc1,否则您将得到一个基于hev1 的容器,Quicktime 10.4+ (High Sierra) 将无法打开。

【讨论】:

  • 您可以使用 brew install ffmpeg --with-x265 --HEAD 使用 Homebrew 安装它。
  • @Florian 我通常会这样做,但它坏了,有一个拉取请求来修复它,但它被拒绝了......
  • 这很奇怪!我在发布之前使用了该命令。
  • 有什么变化吗?我在 High Sierra 10.13.6 和 QT 10.4 上执行了此操作,它仍然无法播放 h265。用ffprobe检查它确实是hvc1。我的来源是 AVI。在 VLC 上播放良好。奇怪....
  • 这对我很有帮助。
【解决方案2】:

'hev1'/'hvc1' 是用于指示容器 mp4 文件中流的不同打包的代码点。编码本身没有变化。可以在两种模式之间往返。尝试使用 mp4box:

mp4box -raw 1 file.mp4 

这会将流提取到原始 HEVC 文件中。

mp4box -add file_track1.hvc output.mp4

如果可以的话,这将使用 hvc1 重新导入流。

【讨论】:

  • 是的,我做到了。我也忘记自己回答我的问题了
  • @cconcolato 是否可以直接在 ffmpeg 编码命令中,无需 mp4box 后编码步骤?
【解决方案3】:

-tag:v hvc1 添加为@SushiHangover 的答案并将-bsf:v hevc_mp4toannexb 添加到ffmpeg 命令(3.4 版及更高版本)。这将创建一个与 QuickTime 兼容的 mov 文件。

ffmpeg -i input-hev1.mp4 -c:v copy -tag:v hvc1 -bsf:v hevc_mp4toannexb -c:a copy output-hvc1.mov

【讨论】:

  • 所有这些都应该在一条线上吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-08-14
  • 2017-07-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多