硬件编码工具简介

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张图片

表 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个转码流。
硬件编码工具简介_第2张图片

H264.1080p 转 H264.480p(使用硬件加速的方法)

硬件编码工具简介_第3张图片

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集中更多的资源去处理其他应用任务。

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架构的不同,支持的编码格式也不同,见下表

硬件编码工具简介_第4张图片

提供的API:

NVENC SDK:只提供编码功能,主要用于视频编码、转码、编辑等场合
GRID SDK:同时提供屏幕采集和编码功能,主要用于云端游戏、流媒体等场合

扩展性:

可与ffmpeg整合

性能测试:

对分辨率为1280x720的4:2:0格式YUV视频应用不同的编码预设,不同的码率控制模式,不同的编码标准进行编码,以FPS表示编码速度,结果如下:

硬件编码工具简介_第5张图片

硬件编码工具简介_第6张图片




你可能感兴趣的:(编码,Intel,硬件加速,nvenc)