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