2016-03-28 72 views
0

我正在从服务器以h264格式读取数据,当我们包含UINT8 u8NAL[4] = {0x00, 0x00, 0x00, 0x01};时,它会在.h264文件中成功写入数据。 但是当我们评论//UINT8 u8NAL[4] = {0x00, 0x00, 0x00, 0x01}; .h264文件存储数据,但我们无法在Vlc或Qt上看到数据。为什么我们需要在写入流数据之前首先将.h264文件写入.h264文件

UINT8 u8NAL[4] = {0x00, 0x00, 0x00, 0x01}; 
     char name1[100], name2[100]; 
     _snprintf(name1, 99, "D:\\sizeH264_%p.txt", threadArgs->clientHandle); 
     _snprintf(name2, 99, "D:\\dataH264_%p.h264", threadArgs->clientHandle); 

    fp = fopen(name1, "w"); 
    fpFrames = fopen(name2, "wb"); 

     fwrite(u8NAL, 4, 1, fpFrames); 
     fwrite(threadArgs->tmpStreamParams->spsData, threadArgs->tmpStreamParams->spsDataSize, 1, fpFrames); 
+0

H.264规范及其附录B有答案。它可以免费下载。 –

回答

0

0 0 0 1它是一个H264帧的帧头部分,所以在很短的球员能知道在哪里,我要开始,在哪里停下来,这是我们不得不放弃这个十六进制数据的每一个起点方式帧。

而你只有在你存储数据时才需要它,否则你可以给玩家直接框架。

相关问题