Unity学习笔记---音视频播放

音频

Audiolistener组件

AudioListener组件是音频监听器,将组件挂在角色或camera上面,每个场景中最多只有一个AudioListener组件。

AudioSource组件

AudioSource组件是音源,用来播放音频AudioClip.将他挂在产生声音的物体上,可以产生声音,距离越远声音越小。

属性

AudioClip:音频片段

Output:输出

Mute:静音

Bypass Effects:环绕声

Bypass Listener Effects:环绕声监听器

Bypass Reverb Zones:环绕声混响

Play On Awake:游戏开始时播放声音

Loop:是否循环播放

Priority:音源优先级

Volume:音量

Pitch:音准

Stereo Pan:音效,只对单声道和立体声有效

Spatial Blend:2D、3D 声音调节

Reverb Zone Mix:3D混响区域

AudioClip组件

AudioClip组件是音频片段,需要挂载在播放器组件上播放。

播放控制

// 加载音频片段
AudioClip audioClip = (AudioClip) Resources.Load("Audio/Footstep01");
// 获取AudioSource组件
AudioSource audioSource = GetComponent<AudioSource>();
// 绑定音频片段
audioSource.clip = audioClip;
// 播放音频(选其中一种方式)
audioSource.Play();
// 此方式播放音频, Unity3D会在transform.position处创建一个空游戏对象, 播放完音频后自动销毁该游戏对象
AudioSource.PlayClipAtPoint(audioClip, transform.position);

视频

VideoPlayer组件

VideoPlayer组件是视频播放器,将这个组件添加到作为屏幕介质的游戏物体上,比如一个平面或者需要的立体对象。可以在介质上播放视频。

属性

Source:视频源类型,有 2 种类型:Video Clip、URL;

Video Clip:视频片段;

Update Mode:更新模式,用来校准时间。

Play On Awake:启动时播放视频;

Wait For First Frame:是否在第一帧加载完成后才播放,只有在 Play On Awake 被勾选时才会生效;

Loop:是否开启循环播放;

Skip On Drop:允许跳帧来校准时间

Playback Speed:播放速度;

Render Mode:渲染模式,主要有:

        Camera Far Plane(在相机远平面上播放,需要绑定到相机,此时其他物体都在视频前面)

        Came Near Plane(在相机近平面上播放,需要绑定到相机,此时其他物体都在视频后面)

       Render Texture(视频的每一帧输出到 Render Texture 文件中,可以使用 RayImage 显示                 Render Texture,这样视频就可以在 RayImage 中播放)

        Material Override(需要绑定到一个 Renderer 对象,如 Cube 的 MeshRenderer,这样视频就可以在立方体表面播放)

Renderer:渲染器,当 Render Mode 选择为 Material Override 时才会有此选项,如:将 Hierarchy 窗口的 Cube 对象拖拽到 Renderer 中,视频就会在 Cube 表面播放;

AutoSelectProperty:自动选择纹理主要属性。

Audio Output Mode:音频输出模式,主要有:None(不输出音频)、AudioSource(用 AudioSource 播放)、Direct(直接发送到音频输出硬件)。

如何播放

在 Hierarchy 窗口创建一个 RayImage 对象,并为其添加 VideoPlayer 组件,调整 Render Mode 为 Render Texture;在 Assets 窗口创建 Render Texture 文件,并将该文件拖拽到 VideoPlayer 组件中的 Target Texture 中以及 RayImage 组件的 Texture 中

给RayImage添加脚本如下:

using UnityEngine;
using UnityEngine.Video;
 
public class VideoController : MonoBehaviour {
	private VideoPlayer videoPlayer;
 
	private void Awake() {
		videoPlayer = GetComponent<VideoPlayer>();
		videoPlayer.isLooping = true;
		videoPlayer.playOnAwake = false;
		videoPlayer.clip = (VideoClip) Resources.Load("Video/Video");
		videoPlayer.Prepare(); // 播放引擎准备(提高开始播放时的速度)
	}
 
	private void Start() {
		videoPlayer.Play(); // 播放
	}
 
	private void Update() {
		if (Input.GetKeyDown(KeyCode.Space)) {
			if (videoPlayer.isPlaying) {
				videoPlayer.Pause(); // 暂停
			} else {
				videoPlayer.Play(); // 播放
			}
		}
	}
}

相关推荐

  1. Unity学习笔记---视频播放

    2024-06-08 19:44:02       8 阅读
  2. Qt6 播放视频

    2024-06-08 19:44:02       11 阅读
  3. qt+ffmpeg 实现视频播放(一)

    2024-06-08 19:44:02       17 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-06-08 19:44:02       18 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-06-08 19:44:02       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-06-08 19:44:02       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-06-08 19:44:02       20 阅读

热门阅读

  1. 不明确的unicode字符

    2024-06-08 19:44:02       6 阅读
  2. iptables常用命令总结

    2024-06-08 19:44:02       10 阅读
  3. 启山智软助力企业数字化转型

    2024-06-08 19:44:02       4 阅读
  4. Debezium日常分享系列之:Debezium 2.6.2.Final发布

    2024-06-08 19:44:02       7 阅读
  5. WebSocket首次使用踩坑记录

    2024-06-08 19:44:02       9 阅读
  6. Hive面试问题

    2024-06-08 19:44:02       7 阅读
  7. VRRP简介

    2024-06-08 19:44:02       8 阅读