• 基于flv.js的视频自动播放


    1: html

    1. <video class="video-content" id="video">
    2. 您的浏览器不支持 HTML5 video!
    3. </video>

    2: 创建flv实例并播放

    1. let videoPlayer = document.getElementById('video'); //获取html
    2. if (flvJs.isSupported()) {
    3. //创建flv实例
    4. this.Player = flvJs.createPlayer({//MediaDataSource
    5. type: 'flv',
    6. hasAudio: false, //是否带音频播放
    7. isLive: true, //<====加个这个
    8. url: 'url'
    9. }, {//Config
    10. enableWorker: false,
    11. enableStashBuffer: false
    12. //当带音频播放时,config部分配置项尽量采取默认状态,否则过分优化会造成卡死
    13. });
    14. this.Player.attachMediaElement(videoPlayer);
    15. this.Player.load(); //加载
    16. this.Player.play(); //播放
    17. }

    3:停止播放

    1. this.Player.pause(); //停止播放
    2. this.Player.unload(); //停止加载
    3. this.Player.detachMediaElement(); //销毁实例
    4. this.Player.destroy();
    5. this.Player= null;

    4:由于累积延过大时,跳帧播放问题

    可以设置一个定时器指定时间跳帧, 时间不可过大或过小,容易造成卡顿和画面衔接过于突兀

    1. setInterval(() => {
    2. this.jumpToEndBuffer();
    3. }, 60 * 1000);
    4. jumpToEndBuffer(){
    5. let buffered = this.Player.buffered;
    6. if (buffered.length > 0) {
    7. let end = buffered.end(0);
    8. if (end - this.Player.currentTime > 0.2) {
    9. this.Player.currentTime = end - 0.1;
    10. }
    11. }
    12. }

    5: 关于同时播放多路视频问题(6路以上)

    websocket播放六路以上视频, 需后端将视频的URL单独设置端口, 谷歌浏览器最大可进行6路长链接(浏览器请求并发), 如果想要请求第七路会造成请求阻塞, (由于打包后的js文件按需加载, 会造成js文件请求等待, 页面卡死 )

    6: 页面花屏绿屏问题

    浏览器的版本过低会造成绿屏, 建议升级浏览器版本

    视频码流问题, 建议后端排查

    7: 流跨域问题

    后端做了处理,前端未作深入研究

    8: 带音频播放黑屏问题

    原因是由于音频和视频时间戳不同步,flvjs的config中fixAudioTimestampGap属性默认是true使音视同步,修改为false即可

    扩展如果做手动点击播放,可用html5中video标签的方法,如v-on:pause="";v-on:play="";

     

  • 相关阅读:
    websocket入门
    Java是值传递还是引用传递
    win7电脑开机后找不到explorer. exe怎么办
    【数据库应用-2】——CDA
    centos7.9用docker运行一个nginx容器
    Git使用详解
    周记之马上要答辩了
    【已解决】msvcp140.dll丢失怎样修复?msvcp140.dll重新安装的解决方法
    数组的再学习
    【VsCode】vscode创建文件夹有小图标显示和配置
  • 原文地址:https://blog.csdn.net/yinshipin007/article/details/128154026