Описание
Дескриптор атрибутов кодировщика H.264.
using UnityEditor.Media;
using UnityEngine;
using UnityEditor;
using Unity.Collections;
using System.IO;
public class Recorder
{
static public void RecordMovie()
{
H264EncoderAttributes h264Attr = new H264EncoderAttributes
{
gopSize = 25,
numConsecutiveBFrames = 2,
profile = VideoEncodingProfile.H264High
};
var videoAttr = new VideoTrackEncoderAttributes(h264Attr)
{
frameRate = new MediaRational(50),
width = 320,
height = 200,
targetBitRate = 3000000
};
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);
}
}
}
}
Свойства
gopSize | Максимальный размер группы изображений, в кадрах. |
numConsecutiveBFrames | Максимальное количество последовательных кадров B между кадрами I и P. |
profile | VideoEncodingProfile для закодированного видео. |