传统的视频转码服务基本都是基于X86下CPU、GPU转码,对硬件性能、功耗、成本来说都比较高。从技术角度来说现有视频转码技术有:
视频编码转变:
-
H.264 => H.265 保持视频分辨率、清晰度不变情况下,更改视频压缩方式,可以有效降低码率、视频帧率,更适合网络传输。
-
H.265 => H.264 保持视频分辨率、清晰度不变情况下,更改视频压缩方式,对一些播放条件要求的进行转换,如WebRTC下无法播放H265视频流,这时就是需要进行视频转码。
-
H.264 => H.264 保持视频分辨率不变情况下,一般用来降低码流、帧率的方式进行视频压缩,使之更适合更低速率的网络进行视频传输。
-
H.265 => H.265 保持视频分辨率不变情况下,一般用来降低码流、帧率的方式进行视频压缩,使之更适合更低速率的网络进行视频传输。
使用技术:
分析市场上产品来看,几乎都在使用ffmpeg来进行视频的编解码、转码,再加上ffmpeg的技术迭代更新比较迅速,技术研发者都比较熟悉其API调用,可以通过少量命令参数、PIPELINE等方式即可进行硬件性能的调用(CUDA、QSV、Vaapi、vdupa等等)。
改变:
通过技术预研,硬件分析等发现基于瑞芯微3588的方案,目前还比较适合用来做视频编解码,本身RK3588的VPU支持最多16路1080P@25fps的编码和解码(同编同解)。编解码侧有rkmpp的sdk,图片缩放有RGA。
同样也可以使用ffmpeg的api接口来进行调用,github上有位大佬集成了mpp和rga链接ffmpeg with rockchip,通过此分支利用无缝的把X86上的程序迁移至arm上运行。
Decoders/Hwaccel:
bash
V..... av1_rkmpp Rockchip MPP (Media Process Platform) AV1 decoder (codec av1)
V..... h263_rkmpp Rockchip MPP (Media Process Platform) H263 decoder (codec h263)
V..... h264_rkmpp Rockchip MPP (Media Process Platform) H264 decoder (codec h264)
V..... hevc_rkmpp Rockchip MPP (Media Process Platform) HEVC decoder (codec hevc)
V..... mpeg1_rkmpp Rockchip MPP (Media Process Platform) MPEG1VIDEO decoder (codec mpeg1video)
V..... mpeg2_rkmpp Rockchip MPP (Media Process Platform) MPEG2VIDEO decoder (codec mpeg2video)
V..... mpeg4_rkmpp Rockchip MPP (Media Process Platform) MPEG4 decoder (codec mpeg4)
V..... vp8_rkmpp Rockchip MPP (Media Process Platform) VP8 decoder (codec vp8)
V..... vp9_rkmpp Rockchip MPP (Media Process Platform) VP9 decoder (codec vp9)
Encoders:
bash
V..... h264_rkmpp Rockchip MPP (Media Process Platform) H264 encoder (codec h264)
V..... hevc_rkmpp Rockchip MPP (Media Process Platform) HEVC encoder (codec hevc)
Filters:
bash
... overlay_rkrga VV->V Rockchip RGA (2D Raster Graphic Acceleration) video compositor
... scale_rkrga V->V Rockchip RGA (2D Raster Graphic Acceleration) video resizer and format converter
... vpp_rkrga V->V Rockchip RGA (2D Raster Graphic Acceleration) video post-process (scale/crop/transpose)