场景

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放:

开源流媒体服务器ZLMediaKit在Windows上运行、配置、按需拉流拉取摄像头rtsp视频流)并使用http-flv网页播放_srs按需拉流_霸道流氓气质的博客-CSDN博客

按照上面流程进行拉取摄像头的rtsp流并转流使用flv.js播放时提示:

DemuxException: type - CodeUnsupported,info - Flv: Unsupported codec in video fram:12

注:

博客:
https://blog.csdn.net/badao_liumang_qizhi 

实现

1、这里拉取的是海康威视的摄像头的rtsp流。

海康威视rtsp流格式为:

rtsp://admin:123456@ip:554/h264/ch1/main/av_stream

这里admin是账户,123456是密码,修改Ip和端口,这里拉取h264编码格式的主流。

这里一开始未考虑摄像头编码是H265的情况导致出现问题。

但是这里使用

rtsp://admin:123456@ip:554/h264/ch1/main/av_stream

以及

rtsp://admin:123456@ip:554/h265/ch1/main/av_stream

都能使用vlc等软件播放。

但是在使用flv.js进行播放时提示如上。

2、在仔细核对了ZLMEediaKit的流程和接口以后,发现拉流接口等均返回正常

但是使用对应的flv的地址进行播放时失败,在vlc中提示:

 

VLC无法判别此音频或视频解码器

3、为了解决该问题,首先使用ffmpeg模拟出来一个海康协议的rtsp流

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流:

Windows上使用FFmpeg实现本地视频推送模拟海康协议rtsp视频流_霸道流氓气质的博客-CSDN博客

然后使用模拟的rtsp流地址

执行以上流程,发现能正常播放。

所以大概率是摄像头本身的问题。

查看官方flv.js的说明,发现其特征为:

FLV container with H.264 + AAC / MP3 codec playback
Multipart segmented video playback
HTTP FLV low latency live stream playback
FLV over WebSocket live stream playback
Compatible with Chrome, FireFox, Safari 10, IE11 and Edge
Extremely low overhead, and hardware accelerated by your browser!

 4、于是登录该海康威视摄像头,查看其编码格式

配置-视音频-视频-视频编码,果然为H265

将其修改为H264之后,播放正常

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐