video - FFMPEG:将 UHD H265 转码为 SDR H264 而不会丢失颜色

标签 video ffmpeg command-line transcode

我正在我的服务器上测试 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
我遵循了许多谷歌结果来提出这些命令,其中一些是:
  • FFMPEG Transcode H265 video from 10-bit to 8-bit
  • https://blender.stackexchange.com/questions/73743/lossless-10-bit-colorspace-yuvj420p-video-output
  • https://askubuntu.com/questions/922563/set-bit-depth-in-ffmpeg-encoding-for-hevc
  • 最佳答案

    问题与 10 位 HEVC 编码无关,而与转换过程中 HDR 元数据的丢失有关。这是 UHD 4K 视频到 SDR 转换的典型案例。
    我不是 FFMPEG 专家,所以我无法为这个答案提供更多细节,但是如果有人想将 HDR 转换为 SDR,那么你可以使用这个命令:

    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
    

    关于video - FFMPEG:将 UHD H265 转码为 SDR H264 而不会丢失颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64981984/

    相关文章:

    javascript - 在 Bootstrap 模态中暂停 Vzaar 视频

    java - 视频伪影/伪影的原因

    opencv - 我可以创建虚拟网络摄像头并向其传输数据吗?

    python - 我可以用python下载和分割视频吗?

    linux - 为什么在构建这个简单的 if else 语句时会出现错误 "Unary Operator Expected"?

    iphone - 如何在xcode中调用多个web服务

    ios - 保存自拍视频后视频的大小发生变化 swift 4

    video - 使用 ffprobe 从视频中获取帧号和时间戳

    mysql - 如何让 vi 键绑定(bind)在 mysql 客户端中工作?

    linux - BASH:- 将字符串解析为单独的命令行参数