• 使用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播放视频相关推荐

  1. Android三种播放视频的方式

     分类: Android多媒体(12)  Android应用层(93)  版权声明:本文为博主原创文章,未经博主允许不得转载. 在Android中,我们有三种方式来实现视频的播放: 1.使用其自带的播 ...

  2. OpenCV播放视频-----滚动条随着视频播放移动代码

    学习OpenCV,使用highGUI工具包实现视频的播放控制,使滚动条随着视频播放移动 代码如下: #include "highgui.h" #include "dire ...

  3. win10html5无法播放,win10系统中网页中无法播放视频怎么办

    近日有win10系统用户要通过浏览器来打开网页观看视频的时候,却发现在网页中打开视频的时却无法播放,这是怎么回事呢,经过分析是由于Adobe Flash Player ActiveX插件未安装.版本过 ...

  4. 【Ubuntu】VirtualBox显卡驱动VBoxVGA、VBoxSVGA、VMSVGA +3D对播放视频的影响

    一.VBOXVGA.VMSVGA.VBOXSVGA简述 VBOXVGA和VBOXSVGA是vbox自己的,SVGA比VGA先进一点, VBoxSVGA: 使用Linux或者 Windows 7或者更高 ...

  5. ue4蓝图节点手册中文_在UE4中播放视频

    简介: 在日常使用UE4做项目时,会遇到在UE4里播放视频文件的需求,在UE4中可以使用媒体框架(Media Framework)来实现这一功能.这里介绍两种简单的方法来使用这一功能,分别是在场景里播 ...

  6. 小程序给视频加默认图片封面,点击播放视频并停止播放上一个视频

    微信小程序开发交流qq群   173683895    承接微信小程序开发.扫码加微信. 实现的功能: 微信小程序视频组件添加图片封面, 点击图片播放视频, 点击下一个视频的封面图自动停止播放当前视频 ...

  7. 【播放器SDK】Android如何实现固定竖屏播放视频

    安卓的固定竖屏播放并不受手机是否开启旋转的限制,需要用户设置Activity为固定竖屏.目前带皮肤的播放器内部对竖屏播放视频做了一定的支持.用户使用相对比较简单. 带皮肤播放器 参考Demo代码Fix ...

  8. 【WPF】使用控件MediaElement播放视频

    需求是点击按钮后,弹出弹窗播放视频.按钮的点击事件如下. public void ShowVideo() {Window window = new Window();window.Width = 80 ...

  9. 播放视频android学习笔记---44_在线视频播放器,网络视频解析器,SurfaceView 控件使用方法...

    最近用使开辟的过程中涌现了一个小题问,顺便录记一下因原和法方--播放视频 44_在线视频播放器 ------------------------- 1.注意这里,在模拟器中,android2.2和an ...

最新文章

  1. JAVA入门到精通-网络编程补充和QQ案例
  2. C++explicit关键字
  3. oracle中的cursor属性有哪些,Cursor语法及理解
  4. 层次分析法matlab_建模开讲课程回放2:层次分析法及其MATLAB
  5. jenkins即将重启问题
  6. mysql server8 jdbc_mysql8.0 jdbc连接注意事项
  7. TensorFLow one-hot
  8. The requested URL /xxxx.html was not found on this server
  9. 小菜的项目管理修炼之道
  10. m_pRecordset遍历记录集之后,m_pRecordset-MoveFirst()为什么会出错
  11. 微信小程序列表item点击事件 js获取点击到的数据
  12. 苹果手机怎么投屏王者荣耀
  13. 计算机c盘垃圾,详解win7怎么清理C盘垃圾
  14. 携程网络防火墙自动化运维之道
  15. Unity 调用Android手机触屏事件
  16. JSP设置Excel表格换行_Excel单元格内换行简单操作!新手易懂超实用!
  17. fflush函数使用
  18. 理解什么是接口测试?怎样做接口测试?
  19. Lanczos 重采样
  20. 韩剧机器人题材的_穿越、超能力、监狱题材之后,2018年的韩剧盯上了机器人...

热门文章

  1. 用Python和Pygame写游戏-从入门到精通
  2. vscode (Visual Studio Code)安装汉化以及前端常用插件推荐
  3. 适合中职学生的C语言课本,浅谈中职c语言校本教材的开发.pdf
  4. HP Laserjet 1022n 打印机如何使用网络接口进行打印?
  5. 北邮计算机2015学霸,我国邮电大学“四大金刚”1所211比985还难考剩下3所非学霸难考上...
  6. HEVC方案---软编解码器
  7. 机房计算机和家用计算机区别,谈计算机机房的管理与维护
  8. BRT 快速公交系统三维可视化
  9. uefi版和装机版有什么区别?
  10. 语音翻译软件app哪个好用?告诉你4个超实用工具