我想保持音频质量并只对视频轨道进行编码,因此我使用此命令:
ffmpeg -i INPUT -c:a copy -c:v libx265 video-h265.mp4
但视频轨道的编解码器是 hev1 。我想要它 hvc1
答案 0 :(得分:15)
使用最新的ffmpeg
(N-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