Directshow过滤器UDP传输H264视频提要

 

H264视频的关键祯有2种,一种是带序列头的,这个序列头只会发送一次,另一种是没有序列头的。序列头用来告诉解码方图象的相关信息。如果在UDP传输中丢失了这个信息,就会产生黑屏的问题。序列头存放的是图象的相关信息.

 

//H264 frame sequen header define
static unsigned char seq_header[103] =
 {
  0x00, 0x00, 0x00, 0x01, 0x67, 0x64, 0x00, 0x28, 0xAD, 0x84,
  0x05, 0x45, 0x62, 0xB8, 0xAC, 0x54, 0x74, 0x20, 0x2A, 0x2B,
  0x15, 0xC5, 0x62, 0xA3, 0xA1, 0x01, 0x51, 0x58, 0xAE, 0x2B,
  0x15, 0x1D, 0x08, 0x0A, 0x8A, 0xC5, 0x71, 0x58, 0xA8, 0xE8,
  0x40, 0x54, 0x56, 0x2B, 0x8A, 0xC5, 0x47, 0x42, 0x02, 0xA2,
  0xB1, 0x5C, 0x56, 0x2A, 0x3A, 0x10, 0x24, 0x85, 0x21, 0x39,
  0x3C, 0x9F, 0x27, 0xE4, 0xFE, 0x4F, 0xC9, 0xF2, 0x79, 0xB9,
  0xB3, 0x4D, 0x08, 0x12, 0x42, 0x90, 0x9C, 0x9E, 0x4F, 0x93,
  0xF2, 0x7F, 0x27, 0xE4, 0xF9, 0x3C, 0xDC, 0xD9, 0xA6, 0xB4,
  0x03, 0xC0, 0x11, 0x3F, 0x2A, 0x00, 0x00, 0x00, 0x01, 0x68,
  0xEE, 0x3C, 0xB0
 };

 

因为UDP的包问题,接受时可能不会从关键ZHEN开始,所以在必要时再每ZHEN前加入该序列头.即可解决黑屏或过段时间黑屏的问题的问题.

 

关于花块,一般是缓冲区叠加即没有清空造成的。

你可能感兴趣的:(directshow,C/C++/VC)