Ffmpeg 将H265编码为hvc1编解码器

Ffmpeg 将H265编码为hvc1编解码器,ffmpeg,Ffmpeg,以下是我的源文件的信息: 我想保持音频质量,只需对视频曲目进行编码,因此我使用以下命令: ffmpeg -i INPUT -c:a copy -c:v libx265 video-h265.mp4 结果是: 但是视频曲目的编解码器是hev1。我希望它是hvc1'hev1'/'hvc1'是用于向容器mp4文件中的流的不同打包发送信号的代码点。编码本身没有变化。可以在两种模式之间往返。尝试使用mp4box: mp4box -raw 1 file.mp4 这将把流提取到原始HEVC文件中 m

以下是我的源文件的信息:

我想保持音频质量,只需对视频曲目进行编码,因此我使用以下命令:

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


但是视频曲目的编解码器是hev1。我希望它是hvc1

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

mp4box -raw 1 file.mp4 
这将把流提取到原始HEVC文件中

mp4box -add file_track1.hvc output.mp4

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

使用最新的
ffmpeg
N-87630-ge9f9175-tessus
或从
头构建
)您可以使用
-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确认更改:

发件人:

致:

如果您使用的是基于avc1的旧mp4,则需要对其重新编码

ffprobe
示例(
avc1
):

编码示例:

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)将无法打开。

-tag:v hvc1
添加为@SushiHangover的答案和
-bsf:v hevc_mp4toanexb
添加到
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

为什么您提供文本图像而不是简单地复制和粘贴它?有什么区别?文本是可搜索的,可以复制和粘贴(通常对答案有用),不依赖于我假设的第三方图像主机,占用更少的空间,应该更容易和更少的时间,而且更容易显示您应该始终提供的完整控制台输出。是的,我做到了。我忘了自己回答问题,too@cconcolato这是否可以直接在ffmpeg编码命令中进行,而无需mp4box后期编码步骤?您可以使用
brew安装ffmpeg--with-x265--HEAD
使用自制软件进行安装。@Florian我通常这样做,但它已损坏,有一个拉请求来修复它,但被拒绝了……真奇怪!我在发布命令之前使用了它。有什么变化吗?我在High Sierra 10.13.6和QT 10.4上这样做了,但它仍然不能播放h265。通过ffprobe检查,它确实是hvc1。我的消息来源是一个AVI。在VLC上玩得很好。奇怪……这真的帮了我的忙。这些都应该在一条线上吗?
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
ffmpeg -i input-hev1.mp4 -c:v copy -tag:v hvc1 -bsf:v hevc_mp4toannexb
-c:a copy output-hvc1.mov