SceneKit播放视频
- 使用SceneKit如何播放视频
scenekit 播放视频的方式有很多种,今天我就给大家介绍一种最简单的播放视频的方式
- 使用的技术
要用到SpriteKit框架中的一个类SKVideoNode,这个类主要用来在2D游戏中渲染视频的,今天我们就借助这个类,实现在3D场景中播放视频
- 效果如下
实现步骤
1.第一步 创建工程(略)
2.第二步 导入两个游戏框架
import SceneKit
import SpriteKit
3.第三步 创建游戏专用视图
let scnView = SCNView(frame: self.view.bounds);scnView.scene = SCNScene()self.view.addSubview(scnView);
4.第四步 创建一个摄像机
let cameraNode = SCNNode()cameraNode.camera = SCNCamera()cameraNode.camera?.automaticallyAdjustsZRange = true;// 自动调节可视范围cameraNode.position = SCNVector3Make(0, 0, 10);scnView.scene?.rootNode.addChildNode(cameraNode);
5.第五步 创建一个节点并绑定一个平面几何对象
let boxNode = SCNNode()let plane = SCNPlane(width: 16, height: 9)boxNode.geometry = plane;boxNode.geometry?.firstMaterial?.isDoubleSided = trueboxNode.position = SCNVector3Make(0, 0, -30);scnView.scene?.rootNode.addChildNode(boxNode);
6.第六步 创建一个2D游戏场景和一个播放视频的对象
let url = Bundle.main.url(forResource: "123-pad", withExtension: "mp4")let videoNode = SKVideoNode(url: url!)videoNode.size = CGSize(width: 1600, height: 900)videoNode.position = CGPoint(x: videoNode.size.width/2, y: videoNode.size.height/2)videoNode.zRotation = CGFloat(M_PI)let skScene = SKScene()skScene.addChild(videoNode)skScene.size = videoNode.size
经验:
1.视频添加到项目中的时候,使用右击->add File to 的方式添加文件
2.指定视频节点的大小 videoNode.size
3.指定2d场景的大小,这个一般和视频节点大小保持一致,如果你有特殊要求,可以根据要求设置
4.videoNode.zRotation = CGFloat(M_PI)
注意,这点非常重要,一定要将视频节点旋转180度,否则渲染出来的画面会颠倒。
7.第七步 给平面体设置渲染内容
plane.firstMaterial?.diffuse.contents = skScene
8.第八步 播放视频
videoNode.play()
9.第十步 打开摄像头控制查看效果
scnView.allowsCameraControl = true;
SceneKit播放视频相关推荐
- Android三种播放视频的方式
分类: Android多媒体(12) Android应用层(93) 版权声明:本文为博主原创文章,未经博主允许不得转载. 在Android中,我们有三种方式来实现视频的播放: 1.使用其自带的播 ...
- OpenCV播放视频-----滚动条随着视频播放移动代码
学习OpenCV,使用highGUI工具包实现视频的播放控制,使滚动条随着视频播放移动 代码如下: #include "highgui.h" #include "dire ...
- win10html5无法播放,win10系统中网页中无法播放视频怎么办
近日有win10系统用户要通过浏览器来打开网页观看视频的时候,却发现在网页中打开视频的时却无法播放,这是怎么回事呢,经过分析是由于Adobe Flash Player ActiveX插件未安装.版本过 ...
- 【Ubuntu】VirtualBox显卡驱动VBoxVGA、VBoxSVGA、VMSVGA +3D对播放视频的影响
一.VBOXVGA.VMSVGA.VBOXSVGA简述 VBOXVGA和VBOXSVGA是vbox自己的,SVGA比VGA先进一点, VBoxSVGA: 使用Linux或者 Windows 7或者更高 ...
- ue4蓝图节点手册中文_在UE4中播放视频
简介: 在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能.这里介绍两种简单的方法来使用这一功能,分别是在场景里播 ...
- 小程序给视频加默认图片封面,点击播放视频并停止播放上一个视频
微信小程序开发交流qq群 173683895 承接微信小程序开发.扫码加微信. 实现的功能: 微信小程序视频组件添加图片封面, 点击图片播放视频, 点击下一个视频的封面图自动停止播放当前视频 ...
- 【播放器SDK】Android如何实现固定竖屏播放视频
安卓的固定竖屏播放并不受手机是否开启旋转的限制,需要用户设置Activity为固定竖屏.目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码Fix ...
- 【WPF】使用控件MediaElement播放视频
需求是点击按钮后,弹出弹窗播放视频.按钮的点击事件如下. public void ShowVideo() {Window window = new Window();window.Width = 80 ...
- 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...
最近用使开辟的过程中涌现了一个小题问,顺便录记一下因原和法方--播放视频 44_在线视频播放器 ------------------------- 1.注意这里,在模拟器中,android2.2和an ...
最新文章
- JAVA入门到精通-网络编程补充和QQ案例
- C++explicit关键字
- oracle中的cursor属性有哪些,Cursor语法及理解
- 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB
- jenkins即将重启问题
- mysql server8 jdbc_mysql8.0 jdbc连接注意事项
- TensorFLow one-hot
- The requested URL /xxxx.html was not found on this server
- 小菜的项目管理修炼之道
- m_pRecordset遍历记录集之后,m_pRecordset-MoveFirst()为什么会出错
- 微信小程序列表item点击事件 js获取点击到的数据
- 苹果手机怎么投屏王者荣耀
- 计算机c盘垃圾,详解win7怎么清理C盘垃圾
- 携程网络防火墙自动化运维之道
- Unity 调用Android手机触屏事件
- JSP设置Excel表格换行_Excel单元格内换行简单操作!新手易懂超实用!
- fflush函数使用
- 理解什么是接口测试?怎样做接口测试?
- Lanczos 重采样
- 韩剧机器人题材的_穿越、超能力、监狱题材之后,2018年的韩剧盯上了机器人...
热门文章
- 用Python和Pygame写游戏-从入门到精通
- vscode (Visual Studio Code)安装汉化以及前端常用插件推荐
- 适合中职学生的C语言课本,浅谈中职c语言校本教材的开发.pdf
- HP Laserjet 1022n 打印机如何使用网络接口进行打印?
- 北邮计算机2015学霸,我国邮电大学“四大金刚”1所211比985还难考剩下3所非学霸难考上...
- HEVC方案---软编解码器
- 机房计算机和家用计算机区别,谈计算机机房的管理与维护
- BRT 快速公交系统三维可视化
- uefi版和装机版有什么区别?
- 语音翻译软件app哪个好用?告诉你4个超实用工具