在我们接触的关于景区、餐饮安全等场景的可视化监控方案当中,有的用户提出了一些需求,想为直播流增加一些背景音,比如音乐,或者直播现场的介绍等等。这个需求我们也可以通过优化代码来实现,下面TSINGSEE青犀视频就以EasyNVR视频平台举例,来讲一下如何在EasyNVR里添加音频。
为EasyNVR增加背景音,可以通过在EasyNVR的拉流库中添加音频流的方式实现。合成音视频流,则能够在直播或录像中增加定制化的音频。
在EasyNVR中增加音频的主要问题在于: 1.音频视频的打包处理 2.视频实时流,音频是一段流,需要做到循环使用
增加音频播放,则设计到音视频的循环播放,我们使用av_compare_ts进行音视频的写入。
代码语言:javascript复制{
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{
//写入音频
}
在音频读到文件结尾后,需要重新读取文件
代码语言:javascript复制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;
}
}
代码语言:javascript复制这样增加音频完成,在EasyNVR上,接入rtsp视频流后,即可在直播页面听到新增的音频。
EasyNVR直播界面
EasyNVR视频平台的使用范围广泛,除了以上我们说到的风景区监控之外,还有不少智慧校园、智慧工地的项目场景。视频相关解决方案均可访问TSINGSEE青犀视频,可以联系我们获取演示方案,直观感受,也可自行进行下载及测试。