基于EasyPlayer在React中打造流畅稳定的流媒体播放体验

630 阅读2分钟

引言

在流媒体时代,视频播放器的质量直接关系到用户体验的好坏。EasyPlayer,一款由TsingSee青犀视频精心打造的流媒体播放器,以其卓越的性能和广泛的应用场景,正在成为开发者手中的利器。

一、EasyPlayer简介

EasyPlayer不仅仅是一个播放器,它是一系列针对不同协议和平台优化的播放器集合。从RTSP到RTMP,从HTTP到HLS,再到本地文件播放,EasyPlayer几乎覆盖了所有主流的流媒体协议。其核心基于FFmpeg,这意味着开发者可以获得稳定、高效且可扩展的视频播放体验。具有以下特点:

  • 协议兼容性:支持RTSP、RTMP、HLS等多种协议,满足不同应用场景需求。
  • 平台适应性:提供Windows、Android、iOS及Linux版本,确保跨平台的一致性。
  • 功能丰富:具备多屏播放、倍速播放、广告植入、数据监测等功能,提升用户交互体验。
  • 易用性:提供详细的SDK和API文档,便于快速集成到现有项目中。
  • 性能优化:支持H.264/H.265视频编码格式,保证高清流畅的视频播放效果。

二、如何学习使用

我们可以通过访问EasyPlayer的官网或者GitHub仓库来获取详细的介绍和文档,推荐先从官方文档中的快速入门指南开始,逐步熟悉其API接口和配置选项。 官方网站

三、在React中使用方法

第一步,命令行中下载Easy-player

EasyPlay.zip 小伙伴们可以直接保存我的这个文件然后将其解压到public中,也可以按照如下的步骤进行操作

npm i easy-player

第二步,移动文件

项目中打开node_modules,找到它

image.png

复制这三个文件

image.png

粘贴到public

image.png

需要注意这两种方法中的js文件名会略有不同,但功能一致所以不必为此困扰。

第三步,引入

点开public,进入index.html,用script标签引入

image.png

在我们的主应用src文件下的html文件中也进行引用

image.png

第四步,使用

使用iframe进行开发

 
 this.iframe = React.createRef()
 
 <iframe
     ref={this.iframe}
     height="100%"
     width="100%"
     frameBorder="0"
     src={g('/easyplayer/easyplayer.html')}
/>


  //自定义双击全屏
  doubleClick = () => {
    const iframe = this.iframe.current
    iframe.contentWindow.requestFullscreen()
  }

  

  //自定义播放视频
  playVideo = (videoUrl) => {
    const iframe = this.iframe.current
    console.log(iframe,'iframe');
    if(iframe.contentWindow.playVideo){
      console.log(iframe.contentWindow.playVideo,' this.iframe');
      iframe.contentWindow.playVideo(videoUrl)
    }
  
  }

可以使用标签进行开发,更多的属性可以去官方进行查看

    <EasyPlayer
        videoUrl="src" // 视频地址
        aspect="18:6" // 视频长宽的比例 
        live // 是否为直播流 
        autoplay // 是否自动播放 
        stretch // 是否自适应 
        style="width:100%;height:60px" // 样式 >
    </EasyPlayer>

四、如何在Vue中使用EasyPlayer

<template> 
    <div class="page-header-index-wide"> 
      <EasyPlayer 
        :videoUrl="src" // 视频文件 
         aspect="19:9" // 长宽的比例 
         live // 是否直播流 
         autoplay // 是否自动播放 
         stretch // 是否自适应 
      ></EasyPlayer> 
    </div>
</template> 
<script> 
import EasyPlayer from 'easy-player' 
export default { 
    name: '',
    components: { 
    EasyPlayer 
    } 
} 
</script>