对于H264编解码,
(一)如果是D1(720×576)分辨率的话,在一般PC上只能支持大约1~5路(跟硬件配置有关),那如果需要同时播放
16路,而且CPU利用率不能太大,怎么办?(硬件资源不能改变。)
假设H264 I 帧周期帧情况如下:
帧类型:I P B P B P B P ... I P B P B P B P
序号: 1 2 3 4 5 6 7 8 ... 31 32 ...
(1)丢掉所有B帧。(如果编码端没有如B帧的非参考帧的话,该方法不可行。)
(2)从一个I 帧周期后面丢掉P帧,但是为了避免过大的跳跃,可以先降低I 帧周期的帧数。(需要编码端提供修改GOP的方法
。)
这样一来,相当于一个I 帧周期的帧数缩小了N倍,相应一般PC支持的通道就增加了N倍。其实,丢掉帧后的H264数据流相当于1
秒内的帧数缩小了N倍,但丢得合适的话,让这些剩余帧均匀分散在一秒内,仍然可以让眼睛看起来,图像平缓性不会很差。
当多路中有一路全屏时,可以把丢掉的重新补上,全部帧播放。也即一路全屏时,这一路不丢帧。
(二)如果是CIF(352×288)分辨率的话,它能支持的通道数是D1的大约4倍(理论上小于4倍),那需要丢掉的帧就少了很多
,甚至不用丢,就能支持16路同时播放。
(三)如果是QCIF(176×144)分辨率的话,它能支持的通道数是D1的大约16倍(理论上小于16倍),这时如果硬件允许,是不
用丢帧就能16路同时播放的。