Intel Media SDK
Intel Media SDK可以利用Intel平台的一系列处理器为视频编解码和预处理应用提供硬件加速。除支持硬件编码外,Intel Media SDK在无法实现硬件加速的平台上也提供仅利用CPU的软编功能。
项目网址:
https://software.intel.com/en-us/media-client-solutions
支持的硬件:
配有Intel HD集成显卡的第三代、第四代及更高的Intel Core处理器;和少数配有支持Intel Quick Sync Video技术集成显卡的Celeron、Pentium、Atom处理器支持的操作系统:
Windows 7 ,Windows 8 ,Windows 8.1,Linux
支持的编码和解码格式:
HEVC,H.264,MPEG2,VC1,JPEG
扩展性:
可与ffmpeg整合
性能测试
测试1:1080P高清转码测试
使用Intel Media SDK的多路转码示例程序(sample_multi_transcode.exe),该程序支持多个输入流和输出流,即可以同时执行多个转码会话。测试环境如下所示操作系统 :Microsoft Windows 7 Professional 64-bit
CPU :Intel®Xeon E3-1275V2
内存 :Kingstone DDR3 1333MHz 8GB SDRAM
显卡 :Intel® HD Graphics G4000
将一个分辨率为1080p,时长10s,帧率30fps,MPEG-2编码的视频转码为H.264编码的视频,其余参数保持不变。使用硬件加速方法的测试结果如表1所示,采用软件方法的测试结果如表2所示(以红色显示的结果表示转码时间超过了播放时间,即不能实时转码)。
通过对转码测试结果的比较,很明显,使用硬件的方法CPU的使用率非常低(约9%),而使用软件的方法则因为所有的转码都是由软件编码直接处理的,因此CPU使用率极高。
如果考虑实时转码的性能时,使用硬件的方法可以支持8个高清的转码流,而软件的方法只能支持1个高清转码流,并且当转码流的数量增至2个时,则需要长达23秒才能完成转码任务,这个处理时间远远大于被测视频剪辑播放持续的时间。
表 1: MPEG2.1080p 转 H264.1080p (使用硬件加速的方法)
表2:MPEG2.1080p 转H264.1080p (使用软件的方法)
测试2:1080p转480p的分辨率下降转码测试
使用Intel Media SDK的多路转码示例程序(sample_multi_transcode.exe),该程序支持多个输入流和输出流,即可以同时执行多个转码会话。测试环境如下所示操作系统 :Microsoft Windows 7 Professional 64-bit
CPU :Intel®Xeon E3-1275V2
内存 :Kingstone DDR3 1333MHz 8GB SDRAM
显卡 :Intel® HD Graphics G4000
将一个分辨率为1080p,时长10s,帧率30fps,H.264编码的视频转码为分辨率为480p,其与参数不变的视频。使用硬件加速方法的测试结果如表3所示,使用软件方法的测试结果如表4所示(红色部分表示转码所需时间超出播放时间,即不能实时转码)。
通过比较测试结果,很明显使用硬件的方法,CPU使用率远远再次低于使用软件的方法时CPU的使用率。
同样的,对于实时转码性能,硬件的方法可以同时支持16个转码流(H264.1080p 转 H264.480p),而软件的方法只能支持3个转码流。
H264.1080p 转 H264.480p(使用硬件加速的方法)
H264.1080p 转 H264.480p(使用软件的方法)
测试3:1080p高清压缩质量测试
使用Intel Media SDK的编码示例程序(sample_encode.exe),该程序支持将YUV序列编码为H.264或其他格式的压缩码流。测试环境如下所示:操作系统 :Microsoft Windows 8 Professional 64-bit
CPU :Intel®Core i7-4790 CPU@3.60GHz
内存 :Kingstone DDR3 1333MHz 4GB SDRAM
显卡 :Intel® HD Graphics 4600
将分辨率为360p,720p,1080p,时长10s,帧率25fps的三个YUV序列分别使用ffmpeg的libx264库和Intel Media SDK压缩为不同码率的H.264序列,查看压缩生成序列的PSNR和SSIM值,比较压缩质量。
通过比较测试结果,可以看到使用硬件加速方法进行编码在大幅提高速度的同时,还能基本保持良好的压缩质量,并且压缩码流的分辨率越高,越能体现出硬件加速的性能优势。
|
| Resolution | Bitrate | Encode Time | PSNR | SSIM |
Seq1 | Intel Media SDK | 1080p | 2.6Mbps | 3.56s | 37.11 | 0.984 |
| ffmpeg | 1080p | 2.6Mbps | 5.91s | 38.048 | 0.99 |
| Intel Media SDK | 720p | 1.2Mbps | 1.02s | 35.421 | 0.97 |
| ffmpeg | 720p | 1.2Mbps | 2.6s | 36.418 | 0.982 |
| Intel Media SDK | 360p | 288k | 0.53s | 32.216 | 0.85 |
| ffmpeg | 360p | 288k | 0.66s | 33.342 | 0.885 |
Seq2 | Intel Media SDK | 1080p | 2.6Mbps | 2.84s | 37.74 | 0.992 |
| ffmpeg | 1080p | 2.6Mbps | 5.59s | 38.823 | 0.995 |
| Intel Media SDK | 720p | 1.2Mbps | 1.2s | 37.568 | 0.987 |
| ffmpeg | 720p | 1.2Mbps | 2.1s | 39.496 | 0.994 |
| Intel Media SDK | 360p | 288k | 0.52s | 36.079 | 0.935 |
| ffmpeg | 360p | 288k | 0.52s | 38.212 | 0.961 |
Seq3 | Intel Media SDK | 1080p | 2.6Mbps | 2.11s | 28.952 | 0.909 |
| ffmpeg | 1080p | 2.6Mbps | 6.56s | 30.057 | 0.919 |
| Intel Media SDK | 720p | 1.2Mbps | 1.08s | 27.929 | 0.87 |
| ffmpeg | 720p | 1.2Mbps | 2.84s | 27.609 | 0.883 |
| Intel Media SDK | 360p | 288k | 0.55s | 24.986 | 0.67 |
| ffmpeg | 360p | 288k | 0.78s | 25.216 | 0.695 |
测试4:多分辨率下的转码速度测试
使用Intel Media SDK的转码示例程序(sample_full_transcode.exe),该程序支持m2ts和mp4两种封装格式码流的转码。测试环境如下所示:操作系统 :Microsoft Windows 8 Professional 64-bit
CPU :Intel®Core i7-4790 CPU@3.60GHz
内存 :Kingstone DDR3 1333MHz 4GB SDRAM
显卡 :Intel® HD Graphics 4600
将分辨率为360p,720p,1080p,时长10s,帧率25fps的三个m2ts序列分别使用ffmpeg的libx264库和Intel Media SDK转码为MP4封装格式的码流,比较转码所用的时间。
通过比较可见,在进行转码任务时,利用硬件加速技术可以获得性能上的大幅提升。
|
| Resolution | Bitrate | Transcode Time |
Seq1 | Intel Media SDK | 1080p | 5.2Mbps | 1.91s |
| Ffmpeg | 1080p | 5.2Mbps | 8.33s |
| Intel Media SDK | 720p | 2.3Mbps | 1.34s |
| Ffmpeg | 720p | 2.3Mbps | 3.47s |
Seq2 | Intel Media SDK | 1080p | 5.2Mbps | 2.19s |
| Ffmpeg | 1080p | 5.2Mbps | 9.26s |
| Intel Media SDK | 720p | 2.3Mbps | 1.27s |
| Ffmpeg | 720p | 2.3Mbps | 4.09s |
Seq3 | Intel Media SDK | 1080p | 5.2Mbps | 2.22s |
| Ffmpeg | 1080p | 5.2Mbps | 9.26s |
| Intel Media SDK | 720p | 2.3Mbps | 1.21s |
| Ffmpeg | 720p | 2.3Mbps | 4.24s |
NVIDIA VIDEO ENCODER(NVENC)
NVENC即基于NVIDA GPU的硬件加速视频编码技术,它起源于基于CUDA的硬件加速编码技术。基于CUDA的编码器在利用GPU图形引擎资源的同时还要使用CPU资源,这成为了它的一大弊端,而NVENC只利用新型架构的NVIDIA GPU中独立的编码引擎资源,可以获得更高的性能,最多可以支持16路1080P@30fps的H.264视频的并行实时编码。项目网址:
https://developer.nvidia.com/nvidia-video-codec-sdk
支持的GPU型号:
使用Kepler或Maxwell架构的NVIDIA GPU
支持的操作系统:
Windows Vista / Win7 / Win8, Linux
支持的编码格式:
依据GPU架构的不同,支持的编码格式也不同,见下表提供的API:
NVENC SDK:只提供编码功能,主要用于视频编码、转码、编辑等场合GRID SDK:同时提供屏幕采集和编码功能,主要用于云端游戏、流媒体等场合
扩展性:
可与ffmpeg整合
性能测试:
对分辨率为1280x720的4:2:0格式YUV视频应用不同的编码预设,不同的码率控制模式,不同的编码标准进行编码,以FPS表示编码速度,结果如下: