Vue项目中播放直播流

直播流播放协议

视频直播服务支出输出RTMP、FLV、HLS三种协议

阿里云视频直播

  1. RTMP(Real Time Message Protocol:实时消息传输协议)延时低(1s~3s),TCP长连接,适合PC端
  2. HLS是为移动设备开发的基于HTTP的流媒体解决方案,是将视频或流切成小片(TS),并建立索引(M3U8)。支持视频流H.264,音频AAC。hls跨平台,可由HTML5解封播放,延时高(>10s)HTTP短连接,适合PC端、移动端。
  3. FLV 在手机浏览器上的支持非常有限,但适合手机端App直播协议,需要集成SDK才能播放, 延时低(1s~3s),TCP长连接,适合PC端。
视频直播技术

在Vue中使用video.js (直播流是RTMP和HLS格式)
1.下载播放器 vue-video-player (vue-video-player就是video.js集成到vue中)

npm install vue-video-player --save

/*  如果要播放HLS流,需要安装videojs-contrib-hls插件
*如果要播放RTMP流,需要安装videojs-flash插件
*如果两个都需要播放,flash插件需要安装到hls插件之前
*/

vue-video-player demo

### 实现 Vue.js 中 HLS 直播流播放器 要在 Vue.js 项目中集成 HLS 直播流播放器,可以按照以下方式完成: #### 安装依赖库 首先需要安装 `video.js` 和其扩展插件 `videojs-contrib-hls` 来支持 HLS 协议。可以通过 npm 或 yarn 进行安装。 ```bash npm install video.js videojs-contrib-hls --save ``` 或者使用 Yarn: ```bash yarn add video.js videojs-contrib-hls ``` #### 配置 main.js 文件 为了全局注册组件,在项目的入口文件 `main.js` 中引入并挂载视频播放器模块。 ```javascript import VideoPlayer from &#39;vue-video-player&#39;; import &#39;video.js/dist/video-js.css&#39;; // 引入样式文件 Vue.use(VideoPlayer); ``` 此操作会将 `VideoPlayer` 注册为全局可用的组件[^1]。 #### 创建播放页面 在具体的 Vue 组件中定义播放逻辑。以下是完整的代码示例: ```html <template> <div> <!-- 使用 vue-video-player 的默认标签 --> <video-player class="video-box" :options="playerOptions" @ready="onPlayerReady"> </video-player> </div> </template> <script> export default { data() { return { playerOptions: { autoplay: false, controls: true, sources: [{ type: "application/x-mpegURL", // HLS 类型 src: "http://your-live-stream-url.com/live/stream.m3u8" // 替换为实际直播地址 }], techOrder: [&#39;html5&#39;], // 确保优先加载 HTML5 技术栈 poster: "", // 封面图 URL 可选 } }; }, methods: { onPlayerReady(player) { console.log(&#39;HLS Player is ready!&#39;, player); } } }; </script> <style scoped> .video-box { width: 100%; } </style> ``` 上述代码通过设置 `sources.type` 参数指定媒体类型为 `"application/x-mpegURL"` 并提供有效的 `.m3u8` 地址来启用 HLS 支持[^2]。 #### Nginx 配置(可选) 如果自行部署 HLS 流,则需要调整 Web 服务器配置以适配 HLS 请求。例如对于 Nginx,可以在站点配置文件中加入如下片段[^3]: ```nginx server { listen 80; server_name localhost; location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /path/to/hls/files; # 修改为你存储 .ts/.m3u8 文件的实际路径 add_header Cache-Control no-cache; add_header Access-Control-Allow-Origin *; add_header Access-Control-Allow-Methods GET, HEAD, OPTIONS; add_header Access-Control-Allow-Headers Range; add_header Accept-Ranges bytes; } } rtmp { server { listen 1935; chunk_size 4096; application hls { live on; hls on; hls_path /path/to/hls/files/; hls_fragment 10s; } } } ``` 以上配置允许客户端访问 `/hls` 路径下的资源,并动态生成所需的 TS 片段和 M3U8 清单文件。 #### 销毁机制优化 为了避免内存泄漏或重复初始化问题,建议监听父级传递的状态变化信号执行清理工作。比如当组件卸载时调用 `dispose()` 方法释放实例对象[^4]。 ```javascript watch(() => props.closeVideo, (newVal) => { if (newVal && this.player) { this.player.dispose(); this.player = null; } }, { deep: true }); ``` --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值