Разрешение: 1280x720
Контейнер: MP4
Видеокодек: H.264
Битрейт видео: 3 Мбит/с
FPS видео: 30
Аудиокодек: AAC
Частота дискретизации звука: 44100
Битрейт аудио: 128 кбит/с
Переместите атом Moov в начало, чтобы включить потоковую передачу (необязательно)
Я не хочу использовать FFmpeg, поскольку он использует программные кодировщики и работает очень медленно. Я получаю скорость кодирования примерно в 0,7 раза при преобразовании видео H.265, 1080p, 120 кадров в секунду, 40 Мбит/с с указанными выше настройками. Кроме того, я хочу избежать хлопот с управлением библиотекой NDK.
Поэтому в конце концов я остановился на Jetpack Media3 Transformer для своего варианта использования. И у меня этот код работает отлично:
Код: Выделить всё
val transformationRequest = TransformationRequest.Builder()
.setVideoMimeType(MimeTypes.VIDEO_H264)
.setAudioMimeType(MimeTypes.AUDIO_AAC)
.setResolution(1280)
.build()
val inputMediaItem = MediaItem.fromUri(uri)
val outputFile = MediaUtils.createTempFile(c,MediaType.VIDEO)
// Create a Transformer
val transformer = Transformer.Builder(c)
.setTransformationRequest(transformationRequest) // Pass in TransformationRequest
.addListener(object: Transformer.Listener {
override fun onTransformationCompleted(inputMediaItem: MediaItem, transformationResult: TransformationResult) {
super.onTransformationCompleted(inputMediaItem, transformationResult)
Log.d("ENCODE", "Encoding Complete")
Log.d("ENCODE", "Output Size: ${MediaUtils.getFileSize(outputFile)}")
}
}) // transformerListener is an implementation of Transformer.Listener
.build()
withContext(Dispatchers.Main) {
// Start the transformation
transformer.startTransformation(inputMediaItem, outputFile.absolutePath)
}
кодирование видео работает с настройками по умолчанию, но вы также можете передать пользовательские настройки видеокодера или заменить заводской кодировщик, чтобы получить полный контроль. о том, как используются кодировщики
Но я не могу найти никакой документации о том, как установить частоту кадров видео и битрейт видео/аудио.
Подробнее здесь: https://stackoverflow.com/questions/764 ... ransformer
Мобильная версия