海思3518E V200中RTSP实验自己构建RTP发送的函数代码及VLC播放器的一个播放注意事项

在VLC播放器播放海思3518E V200的RTSP流时,必须在""工具""--u003e""首选项""中选择特定的RTP设置才能正常显示画面。如果选择""RTP over RTSP (TCP)"
摘要由CSDN通过智能技术生成

在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&
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值