VideoPlayer播放视频
【前端】在Vue项目中使用vue-video-player实现视频流播放
【前端】在Vue项⽬中使⽤vue-video-player实现视频流播放⼀、背景介绍在项⽬开发的新⼀轮需求中增加了实时监控的功能,巧的是在GitHub上有⼀个开源项⽬,借此机会谈谈我在本次项⽬中的经验以及在配置过程中出现的⼀些问题的解决⽅案。
⼆、查看源码<template><video-player class="video-player-box"ref="videoPlayer":options="playerOptions":playsinline="true"customEventName="customstatechangedeventname"@play="onPlayerPlay($event)"@pause="onPlayerPause($event)"@ended="onPlayerEnded($event)"@waiting="onPlayerWaiting($event)"@playing="onPlayerPlaying($event)"@loadeddata="onPlayerLoadeddata($event)"@timeupdate="onPlayerTimeupdate($event)"@canplay="onPlayerCanplay($event)"@canplaythrough="onPlayerCanplaythrough($event)"@statechanged="playerStateChanged($event)"@ready="playerReadied"></video-player></template><script>// Similarly, you can also introduce the plugin resource pack you want to use within the component// import 'some-videojs-plugin'export default {data() {return {playerOptions: {// videojs optionsmuted: true,language: 'en',playbackRates: [0.7, 1.0, 1.5, 2.0],sources: [{type: "video/mp4",src: "https:///webM/2015/07/20/150716YesMen_synd_768k_vp8.webm"}],poster: "/static/images/author.jpg",}}},mounted() {console.log('this is current player instance object', this.player)},computed: {player() {return this.$refs.videoPlayer.player}},methods: {// listen eventonPlayerPlay(player) {// console.log('player play!', player)},onPlayerPause(player) {// console.log('player pause!', player)},// ...player event// or listen state eventplayerStateChanged(playerCurrentState) {// console.log('player current update state', playerCurrentState)},// player is readyplayerReadied(player) {console.log('the player is readied', player)// you can use it to do something...// player.[methods]}}}</script>⼤致理解⼀下,其实就是⼀个video-player组件,类似之前提到过的使⽤实现组件轮播效果。
video-player组件的使用方法
video-player组件的使用方法(实用版2篇)目录(篇1)1.引言2.video-player 组件的功能和特点3.video-player 组件的基本使用方法4.video-player 组件的属性设置5.video-player 组件的实例6.结语正文(篇1)【引言】在现代网页设计中,视频播放器已经成为了必不可少的组成部分。
为了让用户获得更好的观看体验,我们需要选择一款功能强大且易于使用的视频播放器组件。
其中,video-player 组件就是一个很好的选择。
本文将为大家介绍 video-player 组件的使用方法。
【video-player 组件的功能和特点】video-player 组件是一款功能齐全、操作简便的视频播放器。
它具有以下特点:1.支持多种视频格式,包括 mp4、webm、ogg 等。
2.提供多种播放控制按钮,如播放、暂停、快进、快退等。
3.支持视频循环播放和自动播放。
4.可以显示视频进度条和音量调节滑块。
5.支持全屏和窗口模式播放。
【video-player 组件的基本使用方法】要在网页中使用 video-player 组件,首先需要引入相应的 CSS 和JavaScript 文件。
具体做法如下:1.在 HTML 文件中引入 video-player 组件的 CSS 文件。
例如:```html<link rel="stylesheet" href="path/to/video-player.css"> ```2.在 HTML 文件中引入 video-player 组件的 JavaScript 文件。
例如:```html<script src="path/to/video-player.js"></script>```3.在 HTML 文件中创建一个用于存放视频播放器的容器。
vodplayer用法
vodplayer用法
VODPlayer是一种视频点播播放器,用户可以按照以下方式使用它:
1. 下载和安装:首先从VODPlayer的官方网站或其他可靠的
来源下载VODPlayer的安装程序。
然后运行安装程序,按照
提示完成安装过程。
2. 导入视频:打开VODPlayer后,可以在界面上找到一个“导入”或“添加”按钮。
点击该按钮,从您的计算机上选择要导入
的视频文件,并点击“打开”以将其导入到VODPlayer中。
3. 播放视频:在VODPlayer的界面上可以看到导入的视频文
件列表。
选择您想要播放的视频,并点击“播放”按钮开始播放。
4. 控制播放:VODPlayer提供了一系列控制按钮来控制视频的播放。
您可以使用进度条拖动,快进或后退视频。
还可以使用音量控制按钮调整音量,并使用全屏按钮将视频切换到全屏模式。
5. 添加字幕和音轨:如果您的视频具有字幕或多个音轨,您可以在VODPlayer中选择并添加它们。
通常在界面上会有相应
的按钮或选项来实现这些操作。
6. 设置:VODPlayer通常提供了一些设置选项,允许用户自定义播放器的行为。
您可以在设置菜单中找到这些选项,并根据自己的喜好进行调整。
以上是一般使用VODPlayer的基本步骤和功能。
具体的使用方法可能会因不同的软件版本和厂商而有所不同。
所以,当您使用VODPlayer时,最好参考软件的官方文档或帮助文件,以获取更详细和准确的使用说明。
media的用法
在C#中,"media"通常指的是一种用于处理音频和视频的库或框架。
在.NET框架中,有一个名为"System.Media"的命名空间,其中包含了一些用于处理图像、音频和视频的类和接口。
以下是一些在C#中使用"media"的示例:
1. 使用System.Media.Bitmap类加载图像:
using System.Drawing;
using System.Media;
Bitmap image = new Bitmap("path/to/image.jpg");
2. 使用System.Media.SoundPlayer类播放声音:
using System.Media;
SoundPlayer player = new SoundPlayer();
player.SoundLocation = "path/to/sound.wav";
player.Load();
player.PlaySync(); // 同步播放声音
3. 使用System.Media.VideoPlayer类播放视频:
using System.Media;
VideoPlayer player = new VideoPlayer("path/to/video.mp4");
player.Play(); // 播放视频
除了这些示例外,System.Media命名空间还包含了许多其他用于处理音频和视频的类和接口,例如WaveFileReader、WaveFileWriter、SoundMixer等。
您可以根据需要选择适当的类和方法来处理音频和视频。
AndroidGSYVideoPlayer视频播放器功能的实现
AndroidGSYVideoPlayer视频播放器功能的实现GSYVideoPlayerGSYVideoPlayer ⼀个基于IJkPlayer的播放器⽀持调节声⾳亮度边播边缓存使⽤了AndroidVideoCache;ExoPlayer使⽤SimpleCache⽀持多种协议h263\4\5、Https、concat、rtsp、hls、rtmp、crypto、mpeg等等简单滤镜(马赛克、⿊⽩、⾊彩过滤、⾼斯、模糊、模糊等等20多种)、动画、(⽔印、画⾯多重播放等)视频第⼀帧、视频帧截图功能,视频⽣成gif功能。
调整显⽰⽐例:默认、16:9、4:3、填充;播放时旋转画⾯⾓度(0,90,180,270);镜像旋转IJKPlayer、EXOPlayer、MediaPlayer切换、⾃定义内核⼩窗⼝、多窗体下(包括桌⾯)的⼩窗⼝播放。
⽚头⼴告、跳过⼴告⽀持、中间插⼊⼴告功能。
暂停前后台切换不⿊屏;调整不同清晰度的⽀持;⽆缝切换⽀持;锁定/解锁全屏点击功能;进度条⼩窗⼝预览可⾃定义渲染层、⾃定义管理层、⾃定义播放层(控制层)、⾃定义缓存层使⽤依赖1、JCenter 引⼊⽅法(推荐)你可以选择下⾯三种的其中⼀种,在module下的build.gradle添加。
A、直接引⼊//完整版引⼊implementation 'com.shuyu:GSYVideoPlayer:8.1.2'B、添加java和你想要的so⽀持:implementation 'com.shuyu:gsyVideoPlayer-java:8.1.2'//是否需要ExoPlayer模式implementation 'com.shuyu:GSYVideoPlayer-exo2:8.1.2'//根据你的需求ijk模式的soimplementation 'com.shuyu:gsyVideoPlayer-armv5:8.1.2'implementation 'com.shuyu:gsyVideoPlayer-armv7a:8.1.2'implementation 'com.shuyu:gsyVideoPlayer-arm64:8.1.2'implementation 'com.shuyu:gsyVideoPlayer-x64:8.1.2'implementation 'com.shuyu:gsyVideoPlayer-x86:8.1.2'C、⽀持其他格式协议的(mpeg,rtsp, concat、crypto协议)implementation 'com.shuyu:gsyVideoPlayer-java:8.1.2'//是否需要ExoPlayer模式implementation 'com.shuyu:GSYVideoPlayer-exo2:8.1.2'//更多ijk的编码⽀持implementation 'com.shuyu:gsyVideoPlayer-ex_so:8.1.2'代码中的全局切换⽀持//EXOPlayer内核,⽀持格式更多PlayerFactory.setPlayManager(Exo2PlayerManager.class);//系统内核模式PlayerFactory.setPlayManager(SystemPlayerManager.class);//ijk内核,默认模式PlayerFactory.setPlayManager(IjkPlayerManager.class);//exo缓存模式,⽀持m3u8,只⽀持exoCacheFactory.setCacheManager(ExoPlayerCacheManager.class);//代理缓存模式,⽀持所有模式,不⽀持m3u8等,默认CacheFactory.setCacheManager(ProxyCacheManager.class);//切换渲染模式GSYVideoType.setShowType(GSYVideoType.SCREEN_MATCH_FULL);//默认显⽰⽐例GSYVideoType.SCREEN_TYPE_DEFAULT = 0;//16:9GSYVideoType.SCREEN_TYPE_16_9 = 1;//4:3GSYVideoType.SCREEN_TYPE_4_3 = 2;//全屏裁减显⽰,为了显⽰正常 CoverImageView 建议使⽤FrameLayout作为⽗布局GSYVideoType.SCREEN_TYPE_FULL = 4;//全屏拉伸显⽰,使⽤这个属性时,surface_container建议使⽤FrameLayoutGSYVideoType.SCREEN_MATCH_FULL = -4;/**** SCREEN_TYPE_CUSTOM 下⾃定义显⽰⽐例* @param screenScaleRatio ⾼宽⽐,如 16:9*/public static void setScreenScaleRatio(float screenScaleRatio)//切换绘制模式GSYVideoType.setRenderType(GSYVideoType.SUFRACE);GSYVideoType.setRenderType(GSYVideoType.GLSURFACE);GSYVideoType.setRenderType(GSYVideoType.TEXTURE);//ijk关闭logIjkPlayerManager.setLogLevel(IjkMediaPlayer.IJK_LOG_SILENT);//exoplayer⾃定义MediaSourceExoSourceManager.setExoMediaSourceInterceptListener(new ExoMediaSourceInterceptListener() {@Overridepublic MediaSource getMediaSource(String dataSource, boolean preview, boolean cacheEnable, boolean isLooping, File cacheDir) {//可⾃定义MediaSourcereturn null;}});⾃定义⼀个播放器public class LiveVideo extends StandardGSYVideoPlayer {public LiveDataFullscreenButtonClick liveDataClick;//点击全屏按钮回调/*** 恢复暂停状态*/public void onResume() {onVideoResume();}/*** 暂停状态*/public void onPause() {onVideoPause();}/*** 接⼝回调* @param liveDataClick*/public void setOnFullscreenButtonClick(LiveDataFullscreenButtonClick liveDataClick) { this.liveDataClick = liveDataClick;}/* 重写⽅法⾃定义layout id与video_layout_standard.xml⼀致不重新使⽤系统默认布局*/ @Overridepublic int getLayoutId() {return yout.test;}public LiveVideo(Context context, Boolean fullFlag) {super(context, fullFlag);init();}public LiveVideo(Context context) {super(context);init();}public LiveVideo(Context context, AttributeSet attrs) {super(context, attrs);init();}/* 初始化操作 */private void init() {//EXOPlayer内核,⽀持格式更多// PlayerFactory.setPlayManager(Exo2PlayerManager.class);//代理缓存模式,⽀持所有模式,不⽀持m3u8等,默认// CacheFactory.setCacheManager(ProxyCacheManager.class);//系统内核模式// PlayerFactory.setPlayManager(SystemPlayerManager.class);//ijk内核,默认模式PlayerFactory.setPlayManager(IjkPlayerManager.class);settingsVideo();}/* ⼀些播放器的设置做⼀些UI的隐藏可根据⾃⼰需求*/public void settingsVideo() {GSYVideoType.enableMediaCodec();//使能硬解码,播放前设置Debuger.enable();//打开GSY的Log//隐藏⼀些UIsetViewShowState(mBottomContainer, VISIBLE);setViewShowState(mTopContainer, VISIBLE);setViewShowState(mLockScreen, GONE);setViewShowState(mLoadingProgressBar, GONE);setViewShowState(mTopContainer, GONE);setViewShowState(mThumbImageView, GONE);setViewShowState(mBottomProgressBar, GONE);//显⽰⼀些UI 进度时间当前时间全屏返回加载Loading 暂停开始setViewShowState(mStartButton, VISIBLE);setViewShowState(mLoadingProgressBar, VISIBLE);setViewShowState(mFullscreenButton, VISIBLE);setViewShowState(mBackButton, GONE);setViewShowState(mProgressBar, VISIBLE);setViewShowState(mCurrentTimeTextView, VISIBLE);setViewShowState(mTotalTimeTextView, VISIBLE);setEnlargeImageRes(R.drawable.full);setShrinkImageRes(R.drawable.full);}//拦截事件@Overridepublic boolean dispatchTouchEvent(MotionEvent ev) {mFullscreenButton.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View view) {liveDataClick.onClick();}});return super.dispatchTouchEvent(ev);}/* 取消双击暂停 */@Overrideprotected void touchDoubleUp() {// super.touchDoubleUp();}public interface LiveDataFullscreenButtonClick {void onClick();}}<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="/apk/res/android"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@android:color/black"><RelativeLayoutandroid:id="@+id/surface_container"android:layout_width="match_parent"android:layout_height="match_parent"android:gravity="center"></RelativeLayout><RelativeLayoutandroid:id="@+id/thumb"android:layout_width="match_parent"android:layout_height="match_parent"android:layout_alignParentBottom="true"android:layout_alignParentEnd="true"android:layout_alignParentLeft="true"android:layout_alignParentRight="true"android:layout_alignParentStart="true"android:layout_alignParentTop="true"android:background="#000000"android:scaleType="fitCenter" /><LinearLayoutandroid:id="@+id/layout_bottom"android:layout_width="match_parent"android:layout_height="40dp"android:layout_alignParentBottom="true"android:background="#99000000"android:gravity="center_vertical"android:orientation="horizontal"android:visibility="invisible"><TextViewandroid:id="@+id/current"android:textColor="@color/white"style="@style/news_des_style"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginLeft="16dp"android:text="00:00"/><SeekBarandroid:id="@+id/progress"android:layout_width="0dp"android:layout_height="wrap_content"android:layout_gravity="center_vertical"android:layout_weight="1.0"android:background="@null"android:padding="10dp"android:max="100"android:maxHeight="4dp"android:minHeight="4dp"android:paddingBottom="8dp"android:paddingTop="8dp"android:progressDrawable="@drawable/video_progress_bg" android:thumb="@drawable/video_seek_thumb" /><TextViewandroid:id="@+id/total"android:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_marginRight="16dp"android:text="00:00"android:textColor="@color/white"style="@style/news_des_style"/></LinearLayout><LinearLayoutandroid:id="@+id/layout_top"android:layout_width="match_parent"android:layout_height="48dp"android:background="@drawable/video_title_bg"android:gravity="center_vertical"><ImageViewandroid:id="@+id/back"android:layout_width="48dp"android:layout_height="48dp"android:paddingLeft="10dp"android:scaleType="centerInside"android:src="@drawable/video_back" /><Viewandroid:layout_weight="1"android:layout_width="0dp"android:layout_height="match_parent"/><ImageViewandroid:id="@+id/fullscreen"style="@style/left_icon_style"android:src="@drawable/full" /></LinearLayout><ProgressBarandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:id="@+id/loading"android:layout_centerInParent="true"/><ImageViewandroid:visibility="gone"android:layout_width="50dp"android:layout_height="50dp"android:layout_centerInParent="true"android:padding="5dp"android:id="@+id/start"/></RelativeLayout>api/*** 设置播放URL** @param url 播放url* @param cacheWithPlay 是否边播边缓存* @param title title* @return*/video.setUp("url", false, "");//设置播放路径video.startPlayLogic();//开始播放到此这篇关于Android GSYVideoPlayer视频播放器功能的实现的⽂章就介绍到这了,更多相关Android GSYVideoPlayer视频播放器内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
video-player组件的使用方法
video-player组件的使用方法包括以下步骤:
1. 引入video-player组件:在需要使用video-player组件的页面中,通过import引入video-player组件。
2. 创建video-player实例:在页面中创建一个video-player实例,可以通过new VideoPlayer()来创建。
3. 设置视频路径:通过实例的setOptions方法,设置视频的路径以及其他相关参数。
4. 渲染video-player组件:将创建的video-player实例渲染到页面中。
5. 控制播放:通过实例的play、pause等方法,控制视频的播放和暂停。
6. 监听视频播放状态:通过实例的onPlay、onPause等方法,监听视频的播放状态。
7. 销毁video-player组件:在组件不再使用时,通过实例的destroy 方法销毁组件,释放资源。
具体使用方法可以参考video-player组件的文档或者相关教程。
多功能高清视频播放器
多功能高清视频播放器多功能高清视频播放器(HD Video Player)是一款功能强大的视频播放器,可以播放各种高清视频格式,如1080P、4K等,给用户带来极致的观影体验。
该播放器具备多项实用功能,如倍速播放、字幕选择、截图等,满足用户对于视频播放的各种需求。
首先,该播放器支持多种高清视频格式,包括MP4、AVI、MOV、MKV等常见的视频格式,不仅可以播放电影和电视剧,还可以播放用户自己录制的视频,让用户随时回顾精彩瞬间。
同时,该播放器具备强大的解码能力,可以流畅播放高清视频,呈现出出色的画面质量。
其次,该播放器具有倍速播放功能,可以根据用户的需求调节播放速度。
对于想要快速观看一部电影的用户来说,倍速播放功能可以大大缩短观影时间;而对于学习视频或讲座的用户来说,可以将视频放慢以更好地理解讲解内容。
倍速播放功能不仅提高了观影效率,也增加了用户在观影过程中的自由度。
此外,该播放器还支持字幕选择功能。
用户可以在播放视频时选择添加外挂字幕或者内置字幕,以便更好地理解视频内容。
对于观看外语电影或纪录片的用户来说,字幕功能尤为重要,可以帮助他们更好地理解对话和讲解。
最后,该播放器还具备截图功能,用户可以随时截取视频中的精彩画面。
这对于想要保存电影中的某个镜头或者分享有趣视频截图的用户来说非常方便。
用户只需点击截图按钮,即可将当前画面保存为图片,方便后续使用。
综上所述,多功能高清视频播放器是一款实用性强的视频播放工具。
它不仅可以播放各种高清视频,还支持倍速播放、字幕选择和截图等多项功能,让用户可以根据自己的需求来定制观影体验。
无论是观看电影、录像还是学习视频,多功能高清视频播放器都能满足用户的各种需求,为用户带来优质的观影体验。
如果你是一个喜欢看视频的人,一定不要错过这款多功能高清视频播放器!。
vue-video-player实现实时视频播放方式(监控设备-rtmp流)
vue-video-player实现实时视频播放⽅式(监控设备-rtmp流)监控设备播放效果如下1、vue项⽬安装vue-video-playernpm install vue-video-player --save2、编写视频播放组件(放上完整的组件例⼦,⽗组件调⽤时给videoSrc和playerOptions.sources[0].src赋值就可以播放了,具体操作有注释)注:style样式部分⽤了lang=scss,如果⾃⼰的项⽬没⽤他请⽤⾃⼰的⽅式改⼀下样式部分避免报错<template><div class="video-js"><div v-if="videoSrc===''" class="no-video">暂未播放视频</div><video-player v-else class="video-player vjs-custom-skin"ref="videoPlayer":playsinline="true":options="playerOptions"></video-player></div></template><script>import videojs from 'video.js'import 'video.js/dist/video-js.css'import 'vue-video-player/src/custom-theme.css'import {videoPlayer} from 'vue-video-player'import 'videojs-flash'import SWF_URL from 'videojs-swf/dist/video-js.swf'videojs.options.flash.swf = SWF_URL // 设置flash路径,Video.js会在不⽀持html5的浏览中使⽤flash播放视频⽂件export default {name: 'videojs',components: {videoPlayer},data () {return {videoSrc: '',playerOptions: {live: true,autoplay: true, // 如果true,浏览器准备好时开始播放muted: false, // 默认情况下将会消除任何⾳频loop: false, // 是否视频⼀结束就重新开始preload: 'auto', // 建议浏览器在<video>加载元素后是否应该开始下载视频数据。
Video_Player_三款免费开源跨平台的视频播放器
Medium forward jump(1min)
Ctrl+Right
1:4 Quarter
Alt+1
1:2 Half
Alt+2
1:1 Original
Alt+3
2:1 Double
Alt+4ZFra bibliotekomz
Un-Zoom
Shift+z
Take video snapshot Shift+s
Normal Rate
开发者 初始版本 稳定版本 编程语言 平台 语言 类型 许可协议 网站
MPlayer team 2000 1.1.1 (2013 年 5 月 5 日;8 个月前) [±] C
跨平台 英语,匈牙利语,波兰语,俄语和西班牙语 多媒体播放器
GPL www.mplayerhq.hu
SMPlayer
Smplayer 是一个基于 Qt 库,用 Mplayer 作为后端的媒体播放器。虽然是 Qt 程序,但是在 Gnome 下 兼容良好。 SMPlayer 有一个特色功能是它能记住你播放任何文件时候的设置。
Open file
Ctrl+f
Quit
Ctrl+q
Next
>
Previous
<
Preference
Ctrl+p
Mute
m
Less use Compact Mode Equalizer Halve speed Double speed
Ctrl+c Ctrl+e { }
Mplayer_36719_Shortcuts
Esc
Play/Pause
cocos videoplayer 用法
Cocos Videoplayer是Cocos Creator中的一个重要组件,可以用于在游戏中播放视频。
它提供了丰富的API和功能,使开发者可以轻松地将视频集成到游戏中,为游戏增添更多的内容和体验。
本篇文章将针对Cocos Videoplayer的用法进行详细的介绍和演示,帮助开发者更好地理解和掌握这一组件的使用方法。
一、Cocos Videoplayer的基本概念Cocos Videoplayer是Cocos Creator中的一个视频播放组件,可以用于在游戏中播放视频文件。
它基于原生评台的视频播放器,支持常见的视频格式,并提供了丰富的控制接口,方便开发者对视频进行控制和管理。
二、Cocos Videoplayer的基本用法1. 创建Videoplayer组件在Cocos Creator中创建一个新的场景或打开已有的场景。
在场景编辑器中,点击“添加组件”按钮,在弹出的组件列表中选择“Videoplayer”,即可在场景中添加一个Videoplayer组件。
2. 设置视频文件在Videoplayer组件的属性检查器中,找到“Video Player”部分,点击“None”按钮选择要播放的视频文件。
Cocos Videoplayer支持常见的视频格式,包括mp4、avi、mov等。
3. 设置其他属性除了视频文件外,还可以设置Videoplayer的其他属性,包括是否自动播放、是否循环播放、音量大小等。
通过调整这些属性,可以实现对视频播放的各种控制。
4. 控制视频播放在代码中,可以通过Videoplayer组件提供的接口对视频进行控制。
可以通过调用play()方法开始播放视频,调用pause()方法暂停视频,调用stop()方法停止视频等。
三、Cocos Videoplayer的高级用法1. 视频事件监听除了基本的播放控制外,Videoplayer还提供了丰富的事件监听接口,可以监听视频播放过程中的各种事件,比如开始播放、暂停播放、播放完成等。
flutter videoplayer实现原理
文章标题:深度剖析Flutter Videoplayer实现原理与应用一、引言在当今移动应用开发领域,视频播放已成为不可或缺的功能之一。
而在使用Flutter构建跨评台应用时,Videoplayer作为一个重要的组件,扮演着关键的角色。
本文将深入探讨Flutter Videoplayer的实现原理,并结合实际应用,从浅入深地解析其内部机制和功能。
二、Videoplayer基本概念在开始深入探讨Videoplayer的实现原理之前,让我们先了解一下Videoplayer的基本概念。
Videoplayer是Flutter中用于播放视频的插件,可以实现视频的播放、暂停、快进、倒退等功能。
在Flutter开发中,Videoplayer可以帮助我们快速高效地集成视频播放功能,提供良好的用户体验。
三、Videoplayer实现原理1. 插件封装在Flutter中,Videoplayer是通过Platform Channel封装的,通过与原生评台的交互实现视频播放功能。
在Android评台上,Videoplayer使用的是Android MediaPlayer或ExoPlayer来实现视频播放;而在iOS评台上,则是通过AVPlayer来实现。
Flutter的Platform Channel机制提供了良好的接口,使得Videoplayer能够与原生评台无缝对接,实现跨评台的视频播放功能。
2. 视频播放控制Videoplayer提供了丰富的API,用于控制视频的播放状态,包括播放、暂停、停止、快进、倒退等功能。
通过对视频的帧率、分辨率、码率等参数进行控制,Videoplayer能够实现流畅、稳定的视频播放效果。
3. 媒体资源加载在实际应用中,Videoplayer需要能够加载各种类型的媒体资源,包括本地文件、网络视频、直播流等。
Videoplayer通过与原生评台的交互,实现了多种媒体资源的加载方式,使得应用可以灵活地处理各种媒体资源的播放需求。
unity videoplayer 的使用案例
Unity VideoPlayer 的使用案例1. 引言在现代的游戏开发中,视频播放已经成为游戏中不可或缺的一部分。
而 Unity 提供的 VideoPlayer 组件可以方便地实现视频播放功能。
在本文中,我们将探讨 Unity VideoPlayer 的使用案例,以便更好地理解如何在游戏中使用这一功能。
2. VideoPlayer 的基本介绍Unity 的 VideoPlayer 组件可以让我们在游戏中播放视频,支持多种视频格式,并且可以以纹理形式展示在游戏场景中。
这为游戏开发者提供了更多的可能性,可以在游戏中加入更多的剧情、故事情节或者广告内容。
3. 视频背景动画一种常见的使用案例是将视频作为游戏的背景动画。
通过VideoPlayer 组件,我们可以在游戏开始页面或者选关页面播放一个精美的视频,来吸引玩家的注意,为游戏增加更多的视觉效果。
4. 游戏剧情展示在游戏中加入视频可以更好地讲述游戏的剧情。
通过视频,我们可以展现更加丰富的故事情节,增加玩家的代入感和沉浸感。
在一些冒险类游戏或者解谜类游戏中,加入视频可以为游戏增加更多的趣味性。
5. 游戏广告内容在一些免费游戏中,开发者需要通过游戏中的广告来获得收益。
而VideoPlayer 组件可以很方便地实现在游戏中播放广告视频的功能。
通过精心设计的广告内容,可以为游戏增加更多的盈利机会。
6. 个人观点和理解对于我个人来说,我认为 Unity VideoPlayer 的使用案例是非常丰富多样的。
通过VideoPlayer,我们可以在游戏中呈现更多的内容形式,为游戏增加更多的亮点。
但在使用的过程中,我们也需要注意视频格式的兼容性、视频文件大小对游戏性能的影响等问题。
7. 总结与回顾通过本文的探讨,我们更深入地了解了 Unity VideoPlayer 的使用案例。
从背景动画到游戏剧情展示,再到游戏广告内容,VideoPlayer的应用范围非常广泛。
在游戏开发中,我们可以根据游戏的需求,灵活地运用 VideoPlayer 组件,为游戏增添更多的精彩内容。
gsyvideoplayer原理
gsyvideoplayer原理GSYVideoPlayer原理解析GSYVideoPlayer是一款基于Android平台的强大视频播放器,具有多样化的功能和良好的性能。
本文将从浅入深解释GSYVideoPlayer的相关原理。
1. GSYVideoPlayer的基本原理GSYVideoPlayer采用了基于Android原生MediaPlayer框架的封装方式,实现了完善的视频播放功能。
其基本原理如下:•GSYVideoPlayer通过创建MediaPlayer对象进行视频的初始化、播放、暂停等操作。
•GSYVideoPlayer提供了封装好的控制视图,包括进度条、播放按钮、全屏等,以便用户对视频进行操作。
•GSYVideoPlayer通过监听MediaPlayer的状态变化,实时更新控制视图的状态,比如播放进度、播放状态等。
•GSYVideoPlayer还提供了丰富的功能,比如倍速播放、画面旋转、视频截图等,通过对MediaPlayer的相关接口进行封装和扩展。
2. GSYVideoPlayer实现视频播放GSYVideoPlayer的视频播放主要包括以下几个步骤:1.创建MediaPlayer对象:GSYVideoPlayer在初始化时会创建一个MediaPlayer对象,用于控制视频的播放。
2.设置视频源:通过调用MediaPlayer的setDataSource()方法,指定要播放的视频文件的路径或URL。
3.准备播放:通过调用MediaPlayer的prepare()方法,使MediaPlayer进入准备状态,准备开始播放。
4.开始播放:通过调用MediaPlayer的start()方法,开始播放视频。
5.控制播放:通过监听MediaPlayer的状态变化,如播放进度、播放状态等,来控制视频的播放和暂停。
3. GSYVideoPlayer封装的控制视图GSYVideoPlayer封装了一套控制视图,方便用户对视频进行操作。
使用vue-video-player实现直播
使⽤vue-video-player实现直播摘要:在H5页⾯实现观看直播+视频回放;在开发期间使⽤过video.js、mui-player等插件,发现这些video插件对移动端的兼容性都不友好,最后发现⼀个在移动端兼容不错的插件——vue-video-player场景:移动端H5页⾯,项⽬是vue搭建的,使⽤的是HLS协议以m3u8结尾的直播流⼀、安装 vue-video-player播放HLS视频流需要安装 videojs-contrib-hls插件,播放RTMP视频流则安装 videojs-flash插件,hls插件与flash插件同时使⽤时flash插件需要在hls插件之前引⼊;(资料上讲安装vue-video-player时会⾃动安装hls插件,实际操作中并没有,还是⾃⼰⼿动安装吧!)安装⽅式1:CDN⽅式,直接在html⽂件头部引⼊⽂件: <link rel="stylesheet" href="path/to/video.js/dist/video-js.css"/> <script type="text/javascript" src="path/to/video.min.js"></script> <script type="text/javascript" src="path/to/vue.min.js"></script> <script type="text/javascript" src="path/to/dist/vue-video-player.js"> </script> <script type="text/javascript"> e(window.VueVideoPlayer) </script>安装⽅式2:点击查看代码NMP安装插件: npm install vue-video-player --savenpm install videojs-contrib-hls --savemain.js中引⼊基础样式⽂件:// 引⼊videoPlayer样式import 'video.js/dist/video-js.css'按需引⼊:import 'videojs-contrib-hls'import { videoPlayer } from 'vue-video-player'components: {videoPlayer},全局引⼊:import Vue from 'vue'import VueVideoPlayer from 'vue-video-player'// ⾃定义样式引⼊,在<video-player>添加对应类名,例如video-player-custom// import 'vue-video-player/src/custom-theme.css'e(VueVideoPlayer, /* { options: 全局默认配置,events: 全局videojs事件}*/)⼆、使⽤ vue-video-player<template><!-- playsinline:设置播放器在移动设备上不全屏[ Boolean, default: false ] --><!-- customEventName:⾃定义状态变更时的事件名[ String, default: 'statechanged' ] --><video-player class="video-player-custom"ref="videoPlayer":options="playerOptions":playsinline="true"customEventName="customstatechangedeventname"@play="onPlayerPlay"@pause="onPlayerPause"@ended="onPlayerEnded"@ready="playerReadied"@statechanged="playerStateChanged"@playing="onPlayerPlaying"@waiting="onPlayerWaiting"@loadeddata="onPlayerLoadeddata"@timeupdate="timeupdate"@canplay="onPlayerCanplay"@canplaythrough="onPlayerCanplaythrough"></video-player></template><script>import 'videojs-contrib-hls'import { videoPlayer } from 'vue-video-player'export default { components: {videoPlayer}, data() { return { playerOptions: { // 是否静⾳muted: true,// 默认为英语,设置为中⽂language: 'zh-CN',// 播放速度,指定后Video.js将显⽰⼀个控件(vjs-playback-rate类的控件),允许⽤户选择播放速度playbackRates: [0.5, 1.0, 1.5, 2.0],// 将播放器置于流畅模式,并在计算播放器的动态⼤⼩时使⽤该值,表⽰长宽⽐例aspectRatio: '4:3', // 兼容顺序,默认值是['html5'],其他已注册的技术将按其注册的顺序在该技术之后添加。
VideoPlayer播放视频
VideoPlayer播放视频VideoPlayer的使用方法(Unity5.6以后才能使用)经测试之后,暂时仅支持的视频格式(格式工厂里面的)有avi,mp4,mov,wmv,webm (格式有问题,暂不支持音频,无声)。
使用步骤:(无需脚本即可播放)1.创建一个用于显示视频的“屏幕”,Hierarchy视图里面创建一个Plane,添加渲染纹理(在Assets里面创建,右键Create—>Render Texture,拖给Plane。
)2.Hierarchy视图里面右键Video—>VideoPlayer,在Video Player组件里面有个属性Source,有两个值VideoClip和URL,分别表示视频文件、视频文件路径。
直接拖进去。
完成复制。
同理选择URL(外部文件,本地和网络),把视频的路径赋值进去。
3.赋值完成后,播放会没有声音,需要添加一个Audio Source组件,拖到指定位置进行赋值。
4.以上即完成了视频播放的流程。
VideoPlayer可以使用一系列事件来监听播放的各个动作:errorReceived:错误监听到时被执行。
frameDropped:有丢帧发生时被执行。
frameReady:新的一帧准备好时被执行。
loopPointReached:播放结束或播放到循环的点时被执行。
prepareCompleted:视频准备完成时被执行。
seekCompleted:查询帧操作完成时被执行。
started:在Play方法调用之后立刻调用。
创建一个Plane,将Test挂上去。
即可播放代码控制:publicclass Test : MonoBehaviour {//public VideoClipvideoToPlay;private VideoPlayer videoPlayer;private VideoSource videoSource;private AudioSource audioSource;// Use this for initializationvoid Start(){Application.runInBackground = true;StartCoroutine(playVideo());}IEnumerator playVideo(){videoPlayer = gameObject.AddComponent();//用于播放音频audioSource = gameObject.AddComponent();videoPlayer.playOnAwake = false;audioSource.playOnAwake = false;//We want to play from video clip not from urlvideoPlayer.source = VideoSource.VideoClip;//将视频设置为播放,然后准备音频以防止缓冲// videoPlayer.clip = videoToPlay;videoPlayer.url = Application.dataPath + "/videos/2.mp4"; videoPlayer.source = VideoSource.Url;VideoClip clip = new VideoClip();//设置音频输出模式为AudioSourcevideoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;//将视频中的音频分配给要播放的音频源videoPlayer.EnableAudioTrack(0, true);videoPlayer.SetTargetAudioSource(0, audioSource);videoPlayer.Prepare();while (!videoPlayer.isPrepared){Debug.Log("正在准备");yieldreturnnull;}Debug.Log("准备完成");videoPlayer.loopPointReached += EndReached;videoPlayer.Play();audioSource.Play();Debug.Log("播放中");while (videoPlayer.isPlaying){yieldreturnnull;}//会先打印End reached 再打印播放结束Debug.Log("播放结束");}void EndReached(VideoPlayer vPlayer) {Debug.Log("End reached!");}}。
vuevideo和vue-video-player实现视频铺满教程
vuevideo和vue-video-player实现视频铺满教程⽹页放置视频播放器,我⼀般都是⽤video.js和它的插件vue-video-player⼀:Video.js需求:对于简单的视频播放需求来说,video.js⾜以胜任了。
它可是⽀持HTML5和Flash的视频播放器呦。
1:安装video.jsnpm install -s video.js2:在main.js⽂件中引⼊相关⽂件import Video from 'video.js'import 'video.js/dist/video-js.css'Vue.prototype.$video = Video3:在组件中使⽤<template><div class="video_text"><videoid="myVideo"class="video-js"><source:src="videoUrl"type="video/mp4"></video></div></template><script>export default {name: "Video",data() {return {videoUrl:'...',//视频地址};},mounted() {this.initVideo(); //初始化视频播放器},methods: {initVideo() {//初始化视频⽅法let myPlayer = this.$video(myVideo, {//是否显⽰控制栏controls: true,//是否⾃动播放,muted:静⾳播放autoplay: false,//是否静⾳播放muted:false,//是否流体⾃适应容器宽⾼fluid:true,//设置视频播放器的显⽰宽度(以像素为单位)width: "800px",//设置视频播放器的显⽰⾼度(以像素为单位)height: "400px"});}}};</script><style lang="less">.video_text{width: 70%;margin: 0 auto;}video:focus{outline: 0; //去掉选中蓝框}.video-js .vjs-big-play-button{/*对播放按钮的样式进⾏设置*/width: 100px;height: 60px;position: absolute;top: 50%;left: 50%;transform: translate3d(-50%,-50%,0);}</style>4:效果图5:附上video.js的⼀些基本⽅法myPlayer.ready(function(){//视频播放器初始化完成后的回调函数,this代表当前播放器,可以在这进⾏⼀系列的操作(myPlayer为我视频播放器对象) myPlayer.play(); //播放myPlayer.pause(); //暂停var currentTime = myPlayer.currentTime(); //当前播放进度myPlayer.currentTime(120); //⾃定义修改当前进度var duration = myPlayer.duration(); //加载完成视频后就可以获取视频总时长了,注意:在flash情况下⽆效!var buffered = myPlayer.buffered(); //视频缓冲,返回值为下载了多⼤⽂件var bufferedPercent = myPlayer.bufferedPercent(); //视频缓冲,返回值为下载了百分之⼏var volume = myPlayer.volume(); //获取视频⾳量⼤⼩,值在0-1之间myPlayer.volume(0.2); //设置视频⾳量⼤⼩var width = myPlayer.width(); //获取视频的宽度myPlayer.width(640); //设置视频的宽度var howTallIsIt = myPlayer.height(); //获取视频的⾼度myPlayer.height(200); //设置视频⾼度myPlayer.size(640,480); //同时设置视频⾼宽myPlayer.enterFullScreen(); //视频全屏显⽰myPlayer.enterFullScreen(); //视频退出全屏显⽰})除此之外,我们还可以绑定监听事件://视频播放完毕的回调事件myPlayer.on("ended", function(){console.log("end", this.currentTime());});//视频暂停的回调事件myPlayer.on("pause", function(){console.log("pause")});//视频删除事件myPlayer.removeEvent(“eventName”, function(){console.log("delete")});⼆:vue-video-player1:下载vue-video-playernpm install -s vue-video-player2:在main.js中引⼊相关⽂件import VideoPlayer from 'vue-video-player'require('video.js/dist/video-js.css')require('vue-video-player/src/custom-theme.css')//引⼊ hls,视频直播(m3u8)必须引⼊的import 'videojs-contrib-hls'//播放rtmp视频import 'videojs-flash'//如果你需要⾃定义播放器的样式,⾃⼰新建⼀个cssrequire('./assets/css/video_css/myvideo.css')e(VideoPlayer)3:组件中使⽤(有点长,其实多数是列出的⼀些回调函数⽽已,不需要使⽤的话忽略掉即可)<template><div class="my_video"><video-player class="video-player vjs-custom-skin"ref="videoPlayer":playsinline="true":options="videoPlayerOptions"@play="onPlayerPlay($event)"@pause="onPlayerPause($event)"@ended="onPlayerEnded($event)"@waiting="onPlayerWaiting($event)"@playing="onPlayerPlaying($event)"@loadeddata="onPlayerLoadeddata($event)"@timeupdate="onPlayerTimeupdate($event)"@canplay="onPlayerCanplay($event)"@canplaythrough="onPlayerCanplaythrough($event)"@statechanged="playerStateChanged($event)"@ready="playerReadied"></video-player></div></template><script>// 导⼊组件import {videoPlayer} from 'vue-video-player'export default {name: 'VideoPlayer',components: {videoPlayer},data () {return {video:'', //具体视频fileType: 'mp4', // 资源的类型videoUrl: '', // 资源的路径地址posterUrl:'' //封⾯地址}},mounted(){},methods:{// 播放回调onPlayerPlay(player) {//console.log('player play!', player)},// 暂停回调onPlayerPause(player) {//console.log('player pause!', player)},// 视频播完回调onPlayerEnded($event) {this.$refs.videoPlayer.player.src(this.fileUrl)},// DOM元素上的readyState更改导致播放停⽌onPlayerWaiting($event) {//console.log(player)},// 已开始播放回调onPlayerPlaying($event) {// console.log(player)},// 当播放器在当前播放位置下载数据时触发onPlayerLoadeddata($event) {// console.log(player)},// 当前播放位置发⽣变化时触发。
vue-video-player解决微信自动全屏播放问题(横竖屏导致样式错乱问题)
vue-video-player解决微信⾃动全屏播放问题(横竖屏导致样式错乱问题)对于vue-video-player,从上找到⼀段代码,直接放页⾯!可以了,视频展⽰出来了!开始下⼀个功能。
这可能是⼤部分前端开发者⼀贯的思维模式,拿来⼀个插件,看着demo就做出来了,功能展⽰正常就OK了,但是⼀旦出了bug,就会⾯向百度编程或者⾯向Google编程!其实,我也是这样的,哈哈哈哈.....废话不多说,最近在做⼀个视频播放的功能,找到vue-video-player插件后,咔咔咔完事,拿着我的爱疯,完美演绎!但是其他⼈的国产某牌⼿机,展⽰的完全不⼀样,打开后⾃动全屏,⽽且还有个横竖屏控制。
“这是我写的页⾯”,⼼中⼀万只神兽在奔腾。
横竖屏切换后,视频下的内容在全屏模式下展⽰了出来⼀部分。
百度了半天,看源码,还是不知道咋回事。
后来终于找到了解决办法:之前:playsinline="playsinline"这⾥是true写死的,现在改为计算属性playsinline()computed: {player () {return this.$refs.videoPlayer.player},playsinline () {let ua = erAgent.toLocaleLowerCase()// x5内核if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {return false} else {// ios端return true}}}添加playsinline()这个计算属性,原因是在安卓和iOS端微信使⽤的内核不同,所需要的attribute也不同,尝试后,采⽤x5内核返回false,反之为true配合jq⼯具,继续添加两个端所需的属性@canplay="onPlayerCanplay($event)"onPlayerCanplay (player) {var ua = erAgent.toLocaleLowerCase()// x5内核if (ua.match(/tencenttraveler/) != null || ua.match(/qqbrowse/) != null) {$('body').find('video').attr('x-webkit-airplay', true).attr('x5-playsinline', true).attr('webkit-playsinline', true).attr('playsinline', true)} else {// ios端$('body').find('video').attr('webkit-playsinline', 'true').attr('playsinline', 'true')}},⾄此,完美解决安卓端微信播放时,横竖屏的播放样式错乱和播放时视频内容未⾃适应。
Vue使用video-player播放M3U8视频流
Vue使⽤video-player播放M3U8视频流Vue使⽤ video-player 播放 M3U8 视频流因为前端页⾯如果是接⼊视频流的话,说难也难,说不难也不难。
如果单纯提供视频流url连接,没有中间件进⾏转的话:rtsp 是不能直接接近web的,因为web不能直接接⼊rtsp视频流,需要后端或者是中间件进⾏转化,把rtsp的视频流转换成其他前端可以接⼊的视频流格式,⼀般是hls,也就是m3u8。
rtmp格式视频流以前是可以接⼊的,但是现在不⾏了,因为⼤多数浏览器在2020年底陆续宣布不在⽀持flash插件,但是rtmp视频流必须使⽤flash插件播放,因此在浏览器不⽀持flash的前提下,rtmp格式的视频流也就不能在web端播放了,很遗憾!所以说,现在视频流播放⼀般都会采⽤M3U8格式的视频流进⾏播放,当然了,确定也就暴露出来了,那就是资源消耗的⽐较⼤,延时性⽐较⾼,毕竟是后端对其他视频流进⾏转换得到的,转换、传输、展⽰都需要时间,延时都会在10秒左右,如果单纯看的话没问题,控制的话就体验性差了,你控制了⼀下,⼗秒钟之后才能看到移动的⾓度,难受,但是没办法。
但是电脑软件接⼊rtsp或者是rtmp是没有问题的,这个东西是浏览器不在⽀持,与其他东西⽆关。
加油,祝你好运!安装插件npm install vue-video-player -Snpm install 'video.js' -S使⽤⾸先引⼊// require stylesimport 'video.js/dist/video-js.css'import 'vue-video-player/src/custom-theme.css'//引⼊hls.jsimport 'videojs-contrib-hls'// video-playerimport { videoPlayer } from 'vue-video-player'然后在data创建⼀个对象对播放器进⾏设置playerOptions: {language: 'zh-CN', // 语⾔playbackRates: [0.5, 1.0, 1.5, 2.0], // 可选的播放速度sources: [{type: "application/x-mpegURL", // 类型withCredentials: false,src: '/live/cctv1_2/index.m3u8' // 中央1 M3U8连接}],techOrder: ['html5'],flash: { hls: { withCredentials: false } },html5: { hls: { withCredentials: false } },autoplay: true, // 是否⾃动播放controls: true, // 是否显⽰控制栏notSupportedMessage: '⽆信号',muted: true, // 是否静⾳}然后HTML创建⼀个播放器。
vue项目中播放rtmp视频文件流的方法
vue项⽬中播放rtmp视频⽂件流的⽅法想要播放rtmp视频⽂件流⽤H5的video标签是不可⾏的,所以这⾥我引⽤了⼀款插件 vue-video-player ,当然想要流畅的运⽤vue-video-player 播放视频还必须安装辅助插件 videojs-flash。
最后还要特别注意的是必须使⽤npm安装,当然我在安装过程中也遇到了⼀个问题,就是在选择使⽤ vue-video-player前还安装了videojs插件,卸载从新安装 vue-video-player时由于项⽬中有以前安装的其他视频组件影响,⼀直运⾏不起来,后⾯我把node_modules相关的视频组件都删除以及package中的安装⽬录都删除后从新安装就可以运⾏了,如果你们有遇到这种类似的情况可以对你们有帮助。
下⾯展⽰⼀些相关的操作步骤:1、安装vue-video-player和videojs-flash插件npm install vue-video-player --savenpm install video-flash --save2、在package⾥⾯查看是否安装成功以及安装后的版本,如下图所⽰:3、全局引⽤,在main.js⽂件中引⼊,如下图所⽰:import VueVideoPlayer from 'vue-video-player'import 'video.js/dist/video-js.css'import 'videojs-flash'e(VueVideoPlayer)或者是在当前页⾯引⽤,如下所⽰:import 'video.js/dist/video-js.css'import { videoPlayer } from 'vue-video-player'import 'videojs-flash'<template><videoPlayer class="vjs-custom-skin videoPlayer" ref="videoplayer":playsinline="true" width="90%" :options="playerOptions"customEventName="changed" @play="onPlayerPlay($event)"></videoPlayer></template><script>import 'video.js/dist/video-js.css'import { videoPlayer } from 'vue-video-player'import 'videojs-flash'export default {components: {videoPlayer},data(){return{playerOptions: {//测试视频流数据width: "210",height: "134",language: 'zh-CN',techOrder: ['flash'],muted: true,autoplay: true,controls: true,loop: true,sources: [{type: 'rtmp/mp4',src: 'rtmp://:554/live/goodtv.sdp' //rtmp流地址}],poster: 'static/fire/bgpp.png',flash:{swf:'static/video-js.swf' //视频屏幕⼩于400x300时设置}},}}}</script>5、部分bug解决办法①当视频⼩于400x300时,视频不能⾃动播放,在flash下⾯添加静态video-js.swf资源,如上⾯案例所⽰;②如果是像这样(rtmp://192.168.20.185:1935/live/openUrl/l2MJZsI)的流⽂件,需要在后⾯加⼀个 /才可以播放③videojs-flash和vue-video-player的顺序问题,vue-video-player必须放置在videojs-flash之前④如果都没有上⾯的问题,可以查看⼀下是否浏览器的flash是否开起,开起可以在浏览器的设置⾥⾯去搜索flash,查到后设置允许即可总结到此这篇关于vue项⽬中播放rtmp视频⽂件流的⽂章就介绍到这了,更多相关vue播放rtmp视频⽂件流内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
VideoPlayer的使用方法(Unity5.6以后才能使用)经测试之后,暂时仅支持的视频格式(格式工厂里面的)有avi,mp4,mov,wmv,webm (格式有问题,暂不支持音频,无声)。
使用步骤:(无需脚本即可播放)
1.创建一个用于显示视频的“屏幕”,Hierarchy视图里面创建一个Plane,添加渲染纹理(在
Assets里面创建,右键Create—>Render Texture,拖给Plane。
)
2.Hierarchy视图里面右键Video—>VideoPlayer,在Video Player组件里面有个属性Source,
有两个值VideoClip和URL,分别表示视频文件、视频文件路径。
直接拖进去。
完成复制。
同理选择URL(外部文件,本地和网络),把视频的路径赋值进去。
3.赋值完成后,播
放会没有声音,需要添加一个Audio Source组件,拖到指定位置进行赋值。
4.以上即完成了视频播放的流程。
VideoPlayer可以使用一系列事件来监听播放的各个动作:
∙errorReceived:错误监听到时被执行。
∙frameDropped:有丢帧发生时被执行。
∙frameReady:新的一帧准备好时被执行。
∙loopPointReached:播放结束或播放到循环的点时被执行。
∙prepareCompleted:视频准备完成时被执行。
∙seekCompleted:查询帧操作完成时被执行。
∙started:在Play方法调用之后立刻调用。
创建一个Plane,将Test挂上去。
即可播放
代码控制:
publicclass Test : MonoBehaviour {
//public VideoClipvideoToPlay;
private VideoPlayer videoPlayer;
private VideoSource videoSource;
private AudioSource audioSource;
// Use this for initialization
void Start()
{
Application.runInBackground = true;
StartCoroutine(playVideo());
}
IEnumerator playVideo()
{
videoPlayer = gameObject.AddComponent<VideoPlayer>();
//用于播放音频
audioSource = gameObject.AddComponent<AudioSource>();
videoPlayer.playOnAwake = false;
audioSource.playOnAwake = false;
//We want to play from video clip not from url
videoPlayer.source = VideoSource.VideoClip;
//将视频设置为播放,然后准备音频以防止缓冲
// videoPlayer.clip = videoToPlay;
videoPlayer.url = Application.dataPath + "/videos/2.mp4"; videoPlayer.source = VideoSource.Url;
VideoClip clip = new VideoClip();
//设置音频输出模式为AudioSource
videoPlayer.audioOutputMode = VideoAudioOutputMode.AudioSource;
//将视频中的音频分配给要播放的音频源
videoPlayer.EnableAudioTrack(0, true);
videoPlayer.SetTargetAudioSource(0, audioSource);
videoPlayer.Prepare();
while (!videoPlayer.isPrepared)
{
Debug.Log("正在准备");
yieldreturnnull;
}
Debug.Log("准备完成");
videoPlayer.loopPointReached += EndReached;
videoPlayer.Play();
audioSource.Play();
Debug.Log("播放中");
while (videoPlayer.isPlaying)
{
yieldreturnnull;
}
//会先打印End reached 再打印播放结束Debug.Log("播放结束");
}
void EndReached(VideoPlayer vPlayer) {
Debug.Log("End reached!");
}
}。