在VLC播放器中“工具” --》“首选项”设置里面需要注意必须使用下图中红色框圈出来的设置,如果选择的是后面的“RTP over RTSP (TCP)”的话会播放不出画面,具体原因未去深入探究。
另可以参考他人的代码完成其他功能,网址如下:https://blog.csdn.net/chenchong_219/article/details/37996161
上面网址中的代码就没有添加H264中NALU的开始码,实际在海思3518E V200平台测试是不能播放的,需要修改成如下代码;
还有一个参考代码是整个sample代码,这份代码中是有H264的开始码的,网址如下:https://blog.csdn.net/qq_29350001/article/details/78135133
/* 函数功能:给H264码流添加RTP头,并判断是否需要分包发送;
* 特别需要注意的是不能少掉H264的开始码、NALU头数据,具体原因看下面函数
* 中的注释
*/
HI_S32 VENC_Sent(char *buffer,int buflen)
{
HI_S32 i;
int is=0;
int nChanNum=0;
/* 提取NALU头 */
unsigned char NALU = buffer[4];
for(is=0;is<MAX_RTSP_CLIENT;is++)
{
if(g_rtspClients[is].status!=RTSP_SENDING)
{
continue;
}
int heart = g_rtspClients[is].seqnum % 10000;
char* nalu_payload;
int nAvFrmLen = 0;
int nIsIFrm = 0;
int nNaluType = 0;
char sendbuf[500*1024+32];
nAvFrmLen = buflen;
struct sockaddr_in server;
server.sin_family=AF_INET;
server.sin_port=htons(g_rtspClients[is].rtpport[0]); //59936
server.sin_addr.s_addr=inet_addr(g_rtspClients[is].IP); //192.168.1.20
int bytes=0;
unsigned int timestamp_increse&