IP摄像头RTSP协议网页无插件直播视频平台EasyNVR如何在直播或录像中添加定制化音频?

时间:2022-07-24
本文章向大家介绍IP摄像头RTSP协议网页无插件直播视频平台EasyNVR如何在直播或录像中添加定制化音频?,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

在我们接触的关于景区、餐饮安全等场景的可视化监控方案当中,有的用户提出了一些需求,想为直播流增加一些背景音,比如音乐,或者直播现场的介绍等等。这个需求我们也可以通过优化代码来实现,下面TSINGSEE青犀视频就以EasyNVR视频平台举例,来讲一下如何在EasyNVR里添加音频。

为EasyNVR增加背景音,可以通过在EasyNVR的拉流库中添加音频流的方式实现。合成音视频流,则能够在直播或录像中增加定制化的音频。

在EasyNVR中增加音频的主要问题在于: 1.音频视频的打包处理 2.视频实时流,音频是一段流,需要做到循环使用

增加音频播放,则设计到音视频的循环播放,我们使用av_compare_ts进行音视频的写入。

{
int av_ts_ret = 0;
av_ts_ret = av_compare_ts(cur_pts_v,
          m_icodec->streams[m_video_stream_idx]->time_base,
			 cur_pts_a, p_input_format_ctx_a->streams[m_audio_stream_idx]->time_base);
	printf("<<F:%s,Line:%d>> cur_pts_v:%d,cur_pts_a:%d,av_ts_ret:%dn", 
__FUNCTION__, `ls_line` , cur_pts_v, cur_pts_a, av_ts_ret);
	if (av_ts_ret <= 0){
//写入视频
}else{
//写入音频
}

在音频读到文件结尾后,需要重新读取文件

int decode_done = av_read_frame(p_input_format_ctx_a, &packet);
if (decode_done < 0)
{
if (decode_done == AVERROR_EOF) //文件结尾
{
	  is_read_end = true;
	  av_seek_frame(p_input_format_ctx_a, m_audio_stream_idx, 0, AVSEEK_FLAG_BACKWARD);
	  continue;
	}
}
这样增加音频完成,在EasyNVR上,接入rtsp视频流后,即可在直播页面听到新增的音频。

EasyNVR直播界面

EasyNVR视频平台的使用范围广泛,除了以上我们说到的风景区监控之外,还有不少智慧校园智慧工地的项目场景。视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可自行进行下载及测试。