我目前正在尝试将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)上运行它。
关于如何让它运行,有没有提示?
答案 0 :(得分:1)
您使用的编码器libx264没有实现硬件加速的编码。仅OpenCL-accelerated look-ahead function(s)(部分)可用,并且从中获得的性能提升最多marginal,尤其是在高端系统上。要在该库中公开超前加速预览,请确保系统上存在OpenCL ICD和OpenCL头文件,并且在x264的配置阶段省略选项--disable-opencl
。同样,对于FFmpeg,请确保在配置阶段启用了--enable-opencl
。
看看有关使用FFmpeg进行硬件加速编码的查询所提供的类似答案。
使用NVENC。
使用QuickSync(在配置和构建FFmpeg时需要安装Intel Media SDK)。
使用VAAPI。
还有FFmpeg wiki关于硬件加速。