Как установить битрейт и FPS в Media3 TransformerAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как установить битрейт и FPS в Media3 Transformer

Сообщение Anonymous »

Я хочу сжать видео для публикации в приложении для Android. Вот мои предпочтительные настройки:

Разрешение: 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)
}
Это кодирование выполняется со скоростью в 4–5 раз. Но не вижу возможности настроить что-либо кроме кодеков и разрешения. В документации Transformer сказано следующее:

кодирование видео работает с настройками по умолчанию, но вы также можете передать пользовательские настройки видеокодера или заменить заводской кодировщик, чтобы получить полный контроль. о том, как используются кодировщики

Но я не могу найти никакой документации о том, как установить частоту кадров видео и битрейт видео/аудио.

Подробнее здесь: https://stackoverflow.com/questions/764 ... ransformer
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»