Установить видеокодек на H.264 при использовании экземпляра AVCaptureMovieFileOutput? Xamarin
Нужна помощь в установке видеокодека на H.264 при использовании экземпляра AVCaptureMovieFileOutput.
Глядя на Apple Docs, я вижу, что они поддерживают структуру типа AVVideoCodecType, однако я не вижу этого в Xamarin.iOS Docs.
Помощь будет принята с благодарностью, поскольку я не хочу переписывать логику захвата видео для использования AVAssetWriter.
1 ответ
Итак, я нашел решение, и вот оно для тех, кто придет за мной.
Шаг 1. Создайте экземпляр AVCaptureMovieFileOutput.
var output = new AVCaptureMovieFileOutput();
Шаг 2: Создайте NSDictionary, где вы перечисляете ключи и значения параметров вывода фильма, которые вы хотите.
var outputSettings = new NSDictionary(AVVideoCodecType.H264, AVVideo.CodecKey);
Шаг 3: Установите настройки вывода
output.SetOutputSettings(outputSettings, output.ConnectionFromMediaType(AVMediaType.Video))
Хитрость заключается в том, чтобы вызвать метод ConnectionFromMediaType, передав в MediaType ваш экземпляр AVCaptureMovieFileOutput, который возвращает AVCaptureConnection.
Чтобы заставить это работать в Xamarin.iOS, мне пришлось сделать следующее:
var videoOutput = new AVCaptureMovieFileOutput();
var outputSettings = new NSDictionary(AVVideo.CodecKey, AVVideo.CodecH264);
videoOutput.SetOutputSettings(outputSettings, videoOutput.Connections[0]);