Hi3516A通过RTSP播放H.265视频流的源码
日常生活小技巧 – 文件对比工具 Beyond Compare
参看:Hi3516A如何实现PC实时视频监控–里面有示例代码
代码下载:Hi3516A如何实现PC实时视频监控 代码
编译时放在sample下面。上面用的OV4689,用其他摄像头的在Makefile里面改宏定义。
RTSP 流媒体功能模块主要由四个组成部分:
第一个部分: 应用层服务器构建
第二个部分: RTP/RTCP 传输(应用层和传输层之间)
第三个部分: IP网络层
第四个部分: H264 Stream 及 Audio Stream
(朱)hisi3518示例venc添加rtsp支持后的venc代码)
在海思venc示例代码中添加rtsp服务器反馈支持(不包括传输控制)
1、在入口Venc/最后面的main函数处 添加RtspServer_init();
0.一些RTSP环境准备
1.RTSP服务器线程
2.RTSP循环检测环装链表并发送
2、s32Ret = SAMPLE_VENC_720P_CLASSIC();//直接选定一路编码格式
3、编码码流由mpp_sample的3码流改为1码流
4、将mpp_sample的保存至文件改为保存至环装链表buff
0、添加rtsp支持后的main函数框架:
int main(int argc, char *argv[])
{
RtspServer_init();
1、RtspServerListen
RtspClientMsg
2、vdRTPSendThread(HI_VOID *p)
SAMPLE_VENC_720P_CLASSIC();
//step 6: stream venc process -- get stream, then save it to file.
SAMPLE_COMM_VENC_StartGetStream(s32ChnNum); 即SAMPLE_COMM_VENC_GetVencStreamProc
//step 2.5 : save frame to file
3种处理方法:
A、保存至本地文件
SAMPLE_COMM_VENC_SaveStream(enPayLoadType[i], pFile[i], &stStream);
SAMPLE_COMM_VENC_SaveH264(pFd, pstStream);//写入目标文件
B、直接发送
SAMPLE_COMM_VENC_Sentjin(&stStream); //调用VENC_Sent直接发送
C、保存至环状队列(在线程vdRTPSendThread中检测并发送)
saveStream(&stStream);
}
1、RtspServer_init
void RtspServer_init(void)
{
int i;
pthread_t threadId = 0;
/* 有啥用???
memset(&g_rtp_playload,0,sizeof(g_rtp_playload));
strcpy(&g_rtp_playload,"G726-32");//rtsp里面用的是rtp进行发送 G.726是ITU-T ADPCM 语音编解码器标准 32kbit/s
pthread_mutex_init(&g_sendmutex,NULL);
pthread_mutex_init(&g_mutex,NULL);
pthread_cond_init(&g_cond,NULL);
*/
memset(&g_rtspClients,0,sizeof(RTSP_CLIENT)*MAX_RTSP_CLIENT);//准备好空间用于将来存储客户端数据
//to listen visiting
1.1、服务器监听 +