↑ 返回顶部

简介 链接到标题

Unity 的 Avpro 插件是用于视频播放的一个插件,简单好用!

官方文档参考速成:如何使用Avpro插件快速加载视频

1,MediaPlayer 链接到标题

MediaPlayer 组件用于加载和读取视频,可以设置视频是否自动读取/自动播放/音量大小/音量平衡等,十分方便

组件参数参考

该组件中还可以对不同的平台进行单独设置

但是读取视频时要注意路径问题:首先,Unity 打包的时候并不会自动将 Assets 目录下的文件打包进 Build ,除非该文件位于 Resources 文件夹下/ StreamingAssets 文件夹下/被显示引用, Avpro 插件的 MediaPlayer 组件读取视频时会按照选择视频时解析的路径去读取对应文件,所以一旦视频文件未能被正确打包,项目打包后便无法正常播放视频。通常为了避免这种情况,建议将视频文件放入 StreamingAssets 文件夹下后在代码中加载对应的视频,或者直接使用插件中的路径枚举读取:


_mediaPlayer.OpenVideoFromFile(
    MediaPlayer.FileLocation.RelativeToStreamingAssetsFolder,
    "your_video.mp4",
    true
);//读取了相对于 StreamingAssets 文件夹的路径

使用路径枚举的时候还可以采用 AbsolutePathOrUrl ,适用于运行时动态拼接的完整路径或者网络流媒体链接

// 本地绝对路径
string path = Path.Combine(Application.streamingAssetsPath, "Media", "video.mp4");
mediaPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL, path, false);

// 网络 URL
mediaPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL, "https://example.com/video.mp4", false);

// RTSP 流
mediaPlayer.OpenMedia(MediaPathType.AbsolutePathOrURL, "rtsp://192.168.1.1/stream", false);

2, Display 组件 链接到标题

AVpro 插件中有两种 Display 组件: Display uGUI 和 Display IMGUI ,它们都是用于显示视频内容的组件,需要挂载 MediaPlayer 才能显示其加载的视频

其中 IMGUI 基于 Unity 的旧版 IMGUI 系统, uGUI 基于新版 UGUI 系统,相比下来如今 Display uGUI 更为常用

插件参考

Display 组件一定程度上替代了 RawImage 的功能,因此在使用组件时并不需要额外添加 Image/RawImage相关组件,它自己本身就能渲染视频了

3,常用接口 链接到标题

简单理解:Control 是 Set,Info 是 Get

1,MediaPlayer.Control 链接到标题

这个接口主要用于控制播放器,它主动控制播放行为,主要封装的内容如下:


// 播放控制
mediaPlayer.Control.Play();//播放
mediaPlayer.Control.Pause();//暂停
mediaPlayer.Control.Stop();//停止
mediaPlayer.Control.Rewind();//回到视频第一帧

// 跳转
mediaPlayer.Control.Seek(timeSeconds);//跳转到timeSeconds秒

// 音量/音频
mediaPlayer.Control.SetVolume(0.8f);//设置音量
mediaPlayer.Control.SetMuted(true);//是否静音
mediaPlayer.Control.SetPlaybackRate(2.0f);  // 倍速

// 循环
mediaPlayer.Control.SetLooping(true);//是否循环

// 选择轨道(可以内嵌多音频/字幕轨道)
mediaPlayer.Control.SetAudioTrack(trackIndex);
mediaPlayer.Control.SetTextTrack(trackIndex);

2,MediaPlayer.Info 链接到标题

这个接口主要用于查询播放器的状态


// 时间信息
float current = mediaPlayer.Info.GetCurrentTime();//获取当前播放到的时间
float duration = mediaPlayer.Info.GetDuration();//获取视频时长

// 播放状态
bool isPlaying = mediaPlayer.Info.IsPlaying();//获取当前是否正在播放
bool isPaused = mediaPlayer.Info.IsPaused();//获取当前是否暂停
bool isFinished = mediaPlayer.Info.IsFinished();//获取当前是否播放完成
bool isBuffering = mediaPlayer.Info.IsBuffering();//播放器是否正在等待数据(通常是网络视频流媒体场景下使用的判断)

// 媒体信息
int width = mediaPlayer.Info.GetVideoWidth();//获取视频宽度
int height = mediaPlayer.Info.GetVideoHeight();//获取视频高度
float fps = mediaPlayer.Info.GetVideoFrameRate();//获取视频帧率

// 轨道信息
int audioTrackCount = mediaPlayer.Info.GetAudioTrackCount();//获取音轨数量
int textTrackCount = mediaPlayer.Info.GetTextTrackCount();//获取字幕轨道数量