ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12

场景

开源流媒体服务器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

ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第1张图片

注:

博客:
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的流程和接口以后,发现拉流接口等均返回正常

ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第2张图片

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

 ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第3张图片

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!

ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第4张图片

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

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

ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第5张图片

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

ZLMediaKit实现拉取摄像头(海康协议)编码为H265并使用flv.js播放时提示:FLV:Unsupported codec in video frame:12_第6张图片

你可能感兴趣的:(架构之路,流媒体)