工具
1.视频编码器。下载后双击安装。
链接:https://pan.baidu.com/s/1iTcLu8RiTqDNXlnj5NdnFQ
提取码:yih9
2.AVProMovieCapture,下载后导入Unity工程。
链接:https://pan.baidu.com/s/11r5SE4fLKxwcgqHSGuCsqg
提取码:t7ln
步骤
1.使用AVProMovieCapture录制视频并且含外音即CaptureAudio为ture,需设置CaptureMode:ReadltimeCapture,Source:System Recoding Device。
2.使用默认编码格式录屏会占用大量的内存。使用h.264录屏会卡顿。所以自己安装了一种编码格式:x264vfw - H.264/MPEG-4 AVC codec,录制时Code设置为它即可。其他设置如图:
3.修改CaptureBase.cs
4.添加RecordVidioButton.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using RenderHeads.Media.AVProMovieCapture;
using UnityEngine.UI;
public class RecordVidioButton : MonoBehaviour
{
public CaptureBase m_MovieCapture;
[HideInInspector]
public int OnClickCount = 0;
public Button m_RecordButton;
private float m_Shake;
private Image m_RecordBg;
// Use this for initialization
void Start()
{
m_RecordButton.onClick.AddListener(StartRecord);
}
// Update is called once per frame
void Update()
{
闪烁效果
//if (m_RecordBg != null)
//{
// m_Shake += Time.deltaTime;
// if (m_Shake % 1 > 0.5f)
// {
// m_RecordBg.enabled = true;
// }
// else
// {
// m_RecordBg.enabled = false;
// }
//}
}
public void StartRecord()
{
if (OnClickCount == 0)
{
m_MovieCapture.index++;
m_MovieCapture.StartCapture();
//Tip.m_TipStatic.m_RecordImg.gameObject.SetActive(true);
OnClickCount = 1;
//m_RecordBg = Tip.m_TipStatic.m_RecordImg.gameObject.GetComponent<Image>();
}
else
{
m_MovieCapture.StopCapture();
//Tip.m_TipStatic.m_RecordImg.gameObject.SetActive(false);
m_RecordBg = null;
OnClickCount = 0;
}
}
}
5.参考场景Demo:ScreenCaptureDemo。
6.最后效果: