Описание
Кодирует изображения и аудиосэмплы в аудио- или видеофайл.
При создании экземпляра этого класса создается кодировщик, который создаст аудио-, видео- или аудио-/видеофайл с указанными дорожками.
Поочередно вызывайте методы AddFrame() и AddSamples() для каждой дорожки, чтобы кадры и сэмплы заполнили каждую дорожку одинаково.
После того, как все нужные кадры и сэмплы будут добавлены в файл, вызовите Dispose(), чтобы правильно завершить каждую дорожку и закрыть файл.
using UnityEditor.Media;
using UnityEngine;
using Unity.Collections;
using System.IO;
public class Recorder
{
static public void RecordMovie()
{
var videoAttr = new VideoTrackAttributes
{
frameRate = new MediaRational(50),
width = 320,
height = 200,
includeAlpha = false
};
var audioAttr = new AudioTrackAttributes
{
sampleRate = new MediaRational(48000),
channelCount = 2,
language = "fr"
};
int sampleFramesPerVideoFrame = audioAttr.channelCount *
audioAttr.sampleRate.numerator / videoAttr.frameRate.numerator;
var encodedFilePath = Path.Combine(Path.GetTempPath(), "my_movie.mp4");
Texture2D tex = new Texture2D((int)videoAttr.width, (int)videoAttr.height, TextureFormat.RGBA32, false);
using (var encoder = new MediaEncoder(encodedFilePath, videoAttr, audioAttr))
using (var audioBuffer = new NativeArray(sampleFramesPerVideoFrame, Allocator.Temp))
{
for (int i = 0; i < 100; ++i)
{
// Fill 'tex' with the video content to be encoded into the file for this frame.
// ...
encoder.AddFrame(tex);
// Fill 'audioBuffer' with the audio content to be encoded into the file for this frame.
// ...
encoder.AddSamples(audioBuffer);
}
}
}
}
Конструкторы
MediaEncoder | Создаёт новый кодировщик с различными аранжировками дорожек. |
Публичные Методы
AddFrame | Добавляет кадр к видеодорожке файла. |
AddSamples | Добавляет образцы кадров к указанной звуковой дорожке. |
Удаление | Завершает запись всех дорожек и закрывает записываемый файл. |