以前读文件一直使用ffmpeg的接口可以直接读取视频文件和网络流,这次有需求做一个测试,不使用FFmpeg接口,只使用它的decode接口;
1、fread()读取264视频文件,关键点是查找起始码,两段起始码直接为一个NALU,因此需要做一些附加的判断截取工作,网上有个NalDecode代码,可以参考;
2、在送解码之前,必须要保证是IDR为一个单元再送解码器,否则解码会失败,即得到的nalu之后需要判断Nual type,然后把sps、pps、I帧做一个缓存单元;
3、P帧单独作为一个单元即可;
4、然后解码成功,写YUV文件,或者转为RGB、或者送编码器进行编码;
5、NalDecode的代码网上有的,还可以学习到如何打包成RTP。