在现实生活中有许多rtsp摄像头,这些摄像头如果能充分利用起来可以生成很多有趣、有用的应用:比如户外互动大屏等。在第4课,我们实现了一个播放器,当时来用它播放rtmp流和mp4时它好象工作的很好。这节课我们就用它来播放rtsp流试试。
1.复制demo4并改名为demo16.
2.将原rtmp地址修改为rtsp地址:
const char *inFileName = "rtsp://admin:passwd@192.168.0.100:554/h264/ch1/main/av_stream";
上述代码中的rtsp地址是海康摄像头通用的格式,admin指用户名,passwd指密码。
3.调试运行,可能会发现报错,错误一般出在音频转换部分,我们可以参与下面的代码尝试进行修正:
//将音频帧转换到数组
audioSwrCtx = swr_alloc_set_opts(audioSwrCtx, AV_CH_LAYOUT_MONO, AVSampleFormat::AV_SAMPLE_FMT_S16, frame->sample_rate, frame->channel_layout, (AVSampleFormat)frame->format, frame->sample_rate, NULL, NULL);
//扬声器设置
outWaveform.nChannels = 1;
4.再次运行,它可以正常工作了,声音也正常了。
RTSP摄像头分布广泛,成功播放了RTSP视频和音频就可以在下一步开发一些实用的应用程序了。