Установить видеокодек на 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]);
Другие вопросы по тегам