FFMPEG硬件编码H264

时间:2017-07-28 12:19:42

标签: video ffmpeg live-streaming hardware-acceleration vaapi

我目前正在尝试将FFMPEG与硬件/ GPU编码一起使用H264编解码器。

我所做的是,我将原始数据direclty传输到ffmpeg以将它们输出到udp流。这些是我的设置:

var ffmpegArgs = [
    '-c:v', 'rawvideo',// input container
    '-f', 'rawvideo',
    '-pix_fmt', 'rgba', // input pixel format
    '-s', '600x600', //input size
    '-video_size', '600x600',
    '-i', 'pipe:0', // input source
    '-f', 'mpegts', // output container format
    '-s', '600x600',
    '-video_size', '600x600',
    '-c:v', 'libx264', // output video codec
    '-b:v', '1m', // output bitrate
    'udp://239.255.123.46:1234' // output destination
];

一般而言,它正在发挥作用,但质量和延迟非常糟糕。帧落后5秒钟,然后有很多错误,所以至少需要10或15秒才能看到孔框(视频是"直播"来自画布)。

然而,我认为GPU编码可能对此有所帮助,但我不能让它工作。我试图使用VAAPI,但无论我试图使用哪个命令(descirbed here),它都无法使用.... < / p>

我试图在Ubuntu 16.04上的Intel NUC(this one)上运行它。

关于如何让它运行,有没有提示?

1 个答案:

答案 0 :(得分:1)

您使用的编码器libx264没有实现硬件加速的编码。仅OpenCL-accelerated look-ahead function(s)(部分)可用,并且从中获得的性能提升最多marginal,尤其是在高端系统上。要在该库中公开超前加速预览,请确保系统上存在OpenCL ICD和OpenCL头文件,并且在x264的配置阶段省略选项--disable-opencl。同样,对于FFmpeg,请确保在配置阶段启用了--enable-opencl

看看有关使用FFmpeg进行硬件加速编码的查询所提供的类似答案。

  1. 使用NVENC

  2. 使用QuickSync(在配置和构建FFmpeg时需要安装Intel Media SDK)。

  3. 使用VAAPI

还有FFmpeg wiki关于硬件加速。