FFmpeg UHD编码(管道到x265)

时间:2016-12-13 22:43:03

标签: ffmpeg piping hevc

根据好的答案进行更新:

来源: Prores HQ 4:2:2 10bit 4kp25 REC:2020

现在是我的语法:

ffmpeg -pix_fmt yuv422p10 -i JUNGLES_PLUTO_UHD_HDR_HLG.mov -pix_fmt yuv420p10 -f yuv4mpegpipe - | x265 --y4m - --input-res 3840x2160 --fps 25 --preset veryslow --b-adapt 2 --ref 4 --no-open-gop --keyint 50 --min-keyint 50 --no-scenecut --profile main --level-idc 5 --no-high-tier --sar 1:1 --colorprim bt709 --transfer bt709 --colormatrix bt709 --bframes 3 --hrd --vbv-bufsize 25000 --bitrate 25000 --vbv-maxrate 25000 --aud --no-info --b-pyramid -o test.h265

output: Option pixel_format not found. 

目标:(非hdr UHD机顶盒)

hevc.file 
rec:709
  • 问题1:如何从ffmpeg正确管道到x265?
  • 问题2:如何确保cpus全部纳税?我有 16vcores,但我在所有
  • 上的使用率为2-3%
  • 问题3:对增加参数的任何建议 质量?
  • 问题4:由于内容是BT2020,但我的目标设备目前无法显示/渲染BT2020,但BT709 ..我将如何更改语法以最佳方式启用此功能..(缩减它) 会:

    - colorprim bt2020 --transfer bt2020 --colormatrix bt709

是对的吗?

1 个答案:

答案 0 :(得分:3)

  

Option pixel_format not found.

删除-pix_fmt yuv422p10输入选项。这不是必需的,因为您的输入不是rawvideo,ffmpeg可以自动从输入文件中检测到它。

  

问题1:如何从ffmpeg正确管道到x265?

避免管道

如果您的ffmpeg支持libx265,那么您甚至不需要管道:

ffmpeg -i input.mov -c:v libx265 -crf 28 output.mp4

使用管道

您没有提供ffmpeg的任何输出。在管道时,您可以使用-作为输出。

ffmpeg -i input.mov -f yuv4mpegpipe - | x265 --y4m - -o output.265
  • 输入为MOV,因此此容器包含像素格式,大小和帧速率信息,因此您可以省略所有输入选项。此外,正如安德烈在评论中提到的那样,您也不需要-f rawvideo因为它将覆盖MOV分路器的自动选择。

  • 如果您实际上是在输入rawvideo,那么您需要其他选项,但应将其更改为:-pxt_fmt-pixel_format-s-video_size ,以及-r-framerate,如rawvideo demuxer documentation所示。

  • 使用-f yuv4mpegpipe而不是-t yuv4mpegpipe

  • 您无需为x265的Y4M输入声明--input-res--fps

  

问题2:如何确保cpus全部纳税?我有16vcores,但我在所有

上的使用率为2-3%

您可以一次运行多个编码实例。

  

问题3:有关提高质量的参数的建议吗?

使用--crf代替--bitrate。较低的值是较高的质量。范围是0-51。请参阅FFmpeg Wiki: H.265

  

问题4:由于内容是BT2020,但我的目标设备目前无法显示/渲染BT2020,但BT709 ..我将如何更改语法以最佳方式启用此功能..(缩减它)< / p>

您可以使用ffmpeg-vf scale=-2:1080

缩减