当前位置:   article > 正文

LM视频中间件H5实时视频打开API_视频开放api

视频开放api

概览
LM视频中间件支持对接入的海康、大华、GB28181、RTSP、ISUP/EHOME等设备码流进行转换,提供HLS、Websocket-flv, http-flv, webrtc,rtsp流输出。

视频编码支持:

H265
H264
 

音频编码支持:

PCMA
PCMU
G722
AAC
实时视频的API调用也比较简单,本文中只针对API调用后需要对URL进行拼接做下说明。

说明:
因目前H5浏览器没有支持H265的显示播放,业界现在H265的播放都是采用修改FLV格式的视频编码,浏览器在收到H265时,采用WASM的方式进行软解码播放,在多路播放时稳定性还待观察,同时对电脑的要求都比较高,并且在移动环境下支持的也不友好,因此我们暂时使用的是服务器转码方案,这样对前端的开发门槛比较低

API接口说明
获取实时流视频地址API中 type 参数根据采用H5播放器自行选择。


参数 subString 默认为false,获取主码流的播放地址,true为获取辅码流播放地址,辅码流的占用带宽小,但是视频分辨率比主码流低

视频返回的参数 url 在请求不同的视频协议地址时,拼接规则有所不同,具体参见下表:

ip : LM视频中间件访问地址
port : LM视频中间件访问端口
url : 获取实时流视频地址API返回的参数 url

注意

辅码流只支持海康、大华和ISUP(EHOME)协议接入的设备
获取视频地址API返回的参数 ssid 只有是请求码流类型为RTSP时才有效
获取视频地址API返回的参数 expires 数值时指,应用系统在请求视频地址后,却不进行播放,该地址保留的最长时间,若已通过此地址连接观看视频,此参数失效
 

H5播放示例
相关播放js文件可咨询商务人员获取https://houhangkeji.com/

HTTP-FLV& Websocket-flv
打开视频

  1. startVideo(data, num) {
  2. let play1 = document.getElementById(num);
  3. data.flvPlayer = flvjs.createPlayer({
  4. type: 'flv',
  5. isLive: true,
  6. hasAudio: true,
  7. hasVideo: true,
  8. url: data.url
  9. },
  10. {
  11. enableWorker:true,
  12. stashInitialSize: 64,
  13. enableStashBuffer: false
  14. });
  15. data.flvPlayer.attachMediaElement(play1);
  16. data.flvPlayer.load();
  17. data.flvPlayer.on('error', err => {
  18. console.log(err);
  19. });
  20. data.flvPlayer.play();
  21. this.selectVideo(num+1);
  22. data.timerId = setInterval(()=> {
  23. if(!play1.buffered.length){
  24. return
  25. }
  26. var diff = parseFloat(play1.buffered.end(0) - play1.currentTime);
  27. if(diff >= 2) {
  28. play1.playbackRate = 2;
  29. }
  30. else if(diff >= 1.5 && diff < 2) {
  31. play1.playbackRate = 1.3;
  32. }
  33. else if (diff < 1.5 && diff >= 1.2){
  34. play1.playbackRate = 1.2;
  35. }
  36. else if (diff < 1.2 && diff >= 0.5){
  37. play1.playbackRate = 1.1;
  38. }
  39. else if(diff < 0.5 && diff >= 0.2){
  40. play1.playbackRate = 1;
  41. }
  42. else if(diff < 0.2){
  43. play1.playbackRate = 0.5;
  44. }
  45. },500);
  46. }

关闭视频

  1. closeVideo_flv(item,index) {
  2. let play = document.getElementById(index);
  3. let e = this.outside[index] ? this.outside[index].flvPlayer : null;
  4. if (!e) {
  5. return;
  6. }
  7. this.selectVideo(index);
  8. e.pause();
  9. e.unload();
  10. e.detachMediaElement();
  11. e.destroy();
  12. clearInterval(this.outside[index].timerId);
  13. this.outside[index].flvPlayer = null;
  14. }

WEBRTC

打开视频

  1. startVideo_webrtc(data, num) {
  2. let play1 = document.getElementById(num);
  3. data.flvPlayer = new JSWebrtc_Player(
  4. data.url,
  5. {
  6. video: play1,
  7. autoplay: true,
  8. protocol:window.location.protocol,
  9. hostname: window.location.hostname,
  10. port:window.location.port
  11. });
  12. this.selectVideo(num+1);
  13. }

关闭视频

  1. closeVideo_webrtc(item,index) {
  2. let play = document.getElementById(index);
  3. let o = this.outside[index]
  4. if(o.flvPlayer){
  5. o.flvPlayer.destroy();
  6. this.selectVideo(index);
  7. }
  8. o.url = null;
  9. this.outside[index].flvPlayer = null;
  10. }

HLS

打开视频

  1. startVideo_hls(data, num) {
  2. let video = document.getElementById(num);
  3. data.html = video.outerHTML;
  4. var hls = videojs(video);
  5. hls.src({ type: "application/x-mpegURL", src: data.url });
  6. hls.load(data.url);
  7. hls.play();
  8. data.flvPlayer = hls;
  9. this.selectVideo(num+1);
  10. }

关闭视频

  1. closeVideo_hls(item, index){
  2. let e = this.outside[index] ? this.outside[index].flvPlayer : null;
  3. if (!e) {
  4. return;
  5. }
  6. this.selectVideo(index);
  7. e.dispose();
  8. var myVideoDiv = document.getElementById(this.getId(index));
  9. myVideoDiv.insertAdjacentHTML('afterbegin', this.outside[index].html);
  10. this.outside[index].flvPlayer = null;
  11. }

常见错误码

交流联系: 

杭州厚航科技有限公司http://houhangkeji.com/

QQ技术交流群:698793654

 

本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号