5

我正在我的服务器上测试 FFMPEG。我正在尝试将 H265 10 位转码为 H264 8 位,以支持在所有主要网络浏览器上播放视频。

1 . 这是第一个命令:

ffmpeg -i 4K.ts -c:a aac -c:v h264 -crf 19 -preset ultrafast out.mp4

结果:视频只能在 VLC 媒体播放器上播放。不能在任何浏览器上播放

2 . 然后我尝试使用这个命令:

ffmpeg -i 4K.ts -c:a aac -c:v h264 -crf 19 -profile:v main -preset ultrafast -vf "format=yuv420p" out.mp4

结果:视频在任何地方都可以播放,但会出现大量色彩损失。

3 . 然后我尝试了另一个命令:

ffmpeg -i 4K.ts -c:a aac -c:v h264 -crf 19 -profile:v main -preset ultrafast -vf "format=yuvj420p" out.mp4

结果:视频在任何地方都可以播放,但增加了色彩范围

我不知道我是否遗漏了什么,或者我是否应该完全禁止用户上传 10 位深度的视频。任何帮助将不胜感激

如果有人对我正在测试的视频感兴趣,那么这里是链接:https ://drive.google.com/uc?export=download&id=1pGsnknkoIDRPKrW-YPFS7U31J09PeM4N

我遵循了许多谷歌结果来提出这些命令,其中一些是:

  1. FFMPEG 将 H265 视频从 10 位转码为 8 位
  2. https://blender.stackexchange.com/questions/73743/lossless-10-bit-colorspace-yuvj420p-video-output
  3. https://askubuntu.com/questions/922563/set-bit-depth-in-ffmpeg-encoding-for-hevc
4

2 回答 2

3

The problem is not related to the 10bit HEVC encoding, but rather the loss of HDR metadata during conversion. It's a typical case of UHD 4K video to SDR conversion.

I'm not an FFMPEG expert, so I can't provide much further detail to this answer however if someone wants to convert HDR to SDR then you can use this command:

ffmpeg -i 4K.ts -vf zscale=t=linear:npl=100,format=gbrpf32le,zscale=p=bt709,tonemap=tonemap=hable:desat=0,zscale=t=bt709:m=bt709:r=tv,format=yuv420p -c:v h264 -crf 19 -preset ultrafast output.mp4
于 2021-06-29T09:43:12.633 回答
-4

使用最新版本的 ffmpeg.exe 修复,尝试并享受:

https://ffmpeg.org/download.html#build-windows
于 2021-06-28T17:30:35.630 回答