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 [email protected]
内存 :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 [email protected]
内存 :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 |
综上,使用Intel Media SDK的硬件加速技术进行转码,可以充分调用GPU资源,转码速度更快,支持更多路的实时处理,同时可以维持很低的CPU资源占用率,可以让CPU集中更多的资源去处理其他应用任务。
NVENC即基于NVIDA GPU的硬件加速视频编码技术,它起源于基于CUDA的硬件加速编码技术。基于CUDA的编码器在利用GPU图形引擎资源的同时还要使用CPU资源,这成为了它的一大弊端,而NVENC只利用新型架构的NVIDIA GPU中独立的编码引擎资源,可以获得更高的性能,最多可以支持16路1080P@30fps的H.264视频的并行实时编码。
https://developer.nvidia.com/nvidia-video-codec-sdk
使用Kepler或Maxwell架构的NVIDIA GPU
Windows Vista / Win7 / Win8, Linux
依据GPU架构的不同,支持的编码格式也不同,见下表
NVENC SDK:只提供编码功能,主要用于视频编码、转码、编辑等场合
GRID SDK:同时提供屏幕采集和编码功能,主要用于云端游戏、流媒体等场合
可与ffmpeg整合
对分辨率为1280x720的4:2:0格式YUV视频应用不同的编码预设,不同的码率控制模式,不同的编码标准进行编码,以FPS表示编码速度,结果如下:
关注公众号,掌握更多多媒体领域知识与资讯
文章帮到你了?可以扫描如下二维码进行打赏~,打赏多少您随意~