将H265编码为hvc1编解码器

时间:2015-08-22 03:49:32

标签: ffmpeg

以下是我的源文件的信息: enter image description here

我想保持音频质量并只对视频轨道进行编码,因此我使用此命令:

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

这是结果: enter image description here

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

3 个答案:

答案 0 :(得分:15)

使用最新的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)将无法打开。

答案 1 :(得分:6)

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

mp4box -raw 1 file.mp4 

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

mp4box -add file_track1.hvc output.mp4

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

答案 2 :(得分:0)

scrollView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() { @Override public void onGlobalLayout() { int padding = getResources().getDisplayMetrics().widthPixels / 2; scrollView.setPadding(padding, 0, padding, 0); scrollView.setClipToPadding(false); } }); 添加为@SushiHangover的答案,并将-tag:v hvc1添加到-bsf:v hevc_mp4toannexb命令(3.4及更高版本)中。这样将创建与QuickTime兼容的mov文件。

ffmpeg