Я хочу кодировать видео с помощью API трансформаторов Media3, он работает правильно, но выводит битрейт больше, чем входной битрейт. Хотя я использую сниженную частоту кадров, разрешение, битрейт, но он не работает правильно, и в видео Metada 1024x576 с 90 вращением. Как я могу это исправить? Заранее спасибо. < /P>
val mediaItemSp = MediaItem.fromUri(testUri).buildUpon()
.setClippingConfiguration(
MediaItem.ClippingConfiguration.Builder()
.setStartPositionMs(mStartPosition.toLong())
.setEndPositionMs(mEndPosition.toLong()).build()
).build()
val inputMediaItem = mediaItemSp
val overlayef: OverlayEffect? = myOverlayEf(myContext)
var targetBitrate: Int? = null
var targetFrameRate: Int? = null
var editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.build()
var videoEncoderSettings = VideoEncoderSettings.Builder()
.build()
if (actualFrame != null) {
if (actualFrame >= 30) {
targetFrameRate = 30
} else {
targetFrameRate = null
}
}
if (actualBitrate != null) {
if (actualBitrate >= 2000000) {
targetBitrate = 1800000
}
if (actualBitrate >= 1500000 && actualBitrate < 2000000) {
targetBitrate = 1500000
}
if (actualBitrate >= 1000000 && actualBitrate < 1500000) {
targetBitrate = 1000000
}
if (actualBitrate < 990000) {
targetBitrate = null
}
}
if (actualBitrate == null && actualFrame == null) {
targetFrameRate = null
targetBitrate = null
}
if (targetBitrate != null) {
videoEncoderSettings = VideoEncoderSettings.Builder()
.setBitrateMode(BITRATE_MODE_CBR)
.setBitrate(targetBitrate)
.build()
}
if (targetFrameRate != null) {
if (overlayef != null && actualFrame != null) {
editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.setEffects(
Effects(
listOf(),
listOf(
Presentation.createForWidthAndHeight(
576, 1024, LAYOUT_SCALE_TO_FIT
),
overlayef,
FrameDropEffect.createSimpleFrameDropEffect(
actualFrame.toFloat(),
targetFrameRate.toFloat()
)))).build()
}
} else {
if (overlayef != null && actualFrame != null) {
editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.setEffects(
Effects(
listOf(),
listOf(
Presentation.createForWidthAndHeight(
576, 1024, LAYOUT_SCALE_TO_FIT
),
overlayef,
))).build()
}
}
val compositionBuilder = Composition.Builder(EditedMediaItemSequence(editedMediaItem))
Log.e("getTheVideoMData", "actual bitrate $actualBitrate")
Log.e("getTheVideoMData", "actual frame rate $actualFrame")
Log.e("getTheVideoMData", "target bitrate $targetBitrate")
Log.e("getTheVideoMData", "target frame rate targetFrameRate")
< /code>
Но когда я добавляю < /p>
.setBitrateMode(BITRATE_MODE_CBR)
< /code>
В журнале отображается < /p>
Ошибка видеокодера: format = format (null, null, null, video /avc, avc1 .4D401F, -1, null, [1024, 576, 29.97003, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1]), colorInfo=ColorInfo(BT709 , Ограниченный диапазон, SDR SMPTE 170M, FALSE, 8 -битный LUMA, 8 -битный Chroma) и My Log GetTheVideOmData
E Фактический битрейт 1138922
E Фактическая частота кадров 30
< Br /> e Target Bitrate 1000000
e Целевая частота кадров 30 < /p>
< /blockquote>
Подробнее здесь: https://stackoverflow.com/questions/789 ... es-bitrate
Media3 Transformer увеличивает битрейт ⇐ Android
Форум для тех, кто программирует под Android
1739652938
Anonymous
Я хочу кодировать видео с помощью API трансформаторов Media3, он работает правильно, но выводит битрейт больше, чем входной битрейт. Хотя я использую сниженную частоту кадров, разрешение, битрейт, но он не работает правильно, и в видео Metada 1024x576 с 90 вращением. Как я могу это исправить? Заранее спасибо. < /P>
val mediaItemSp = MediaItem.fromUri(testUri).buildUpon()
.setClippingConfiguration(
MediaItem.ClippingConfiguration.Builder()
.setStartPositionMs(mStartPosition.toLong())
.setEndPositionMs(mEndPosition.toLong()).build()
).build()
val inputMediaItem = mediaItemSp
val overlayef: OverlayEffect? = myOverlayEf(myContext)
var targetBitrate: Int? = null
var targetFrameRate: Int? = null
var editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.build()
var videoEncoderSettings = VideoEncoderSettings.Builder()
.build()
if (actualFrame != null) {
if (actualFrame >= 30) {
targetFrameRate = 30
} else {
targetFrameRate = null
}
}
if (actualBitrate != null) {
if (actualBitrate >= 2000000) {
targetBitrate = 1800000
}
if (actualBitrate >= 1500000 && actualBitrate < 2000000) {
targetBitrate = 1500000
}
if (actualBitrate >= 1000000 && actualBitrate < 1500000) {
targetBitrate = 1000000
}
if (actualBitrate < 990000) {
targetBitrate = null
}
}
if (actualBitrate == null && actualFrame == null) {
targetFrameRate = null
targetBitrate = null
}
if (targetBitrate != null) {
videoEncoderSettings = VideoEncoderSettings.Builder()
.setBitrateMode(BITRATE_MODE_CBR)
.setBitrate(targetBitrate)
.build()
}
if (targetFrameRate != null) {
if (overlayef != null && actualFrame != null) {
editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.setEffects(
Effects(
listOf(),
listOf(
Presentation.createForWidthAndHeight(
576, 1024, LAYOUT_SCALE_TO_FIT
),
overlayef,
FrameDropEffect.createSimpleFrameDropEffect(
actualFrame.toFloat(),
targetFrameRate.toFloat()
)))).build()
}
} else {
if (overlayef != null && actualFrame != null) {
editedMediaItem = EditedMediaItem.Builder(inputMediaItem).setRemoveAudio(false)
.setEffects(
Effects(
listOf(),
listOf(
Presentation.createForWidthAndHeight(
576, 1024, LAYOUT_SCALE_TO_FIT
),
overlayef,
))).build()
}
}
val compositionBuilder = Composition.Builder(EditedMediaItemSequence(editedMediaItem))
Log.e("getTheVideoMData", "actual bitrate $actualBitrate")
Log.e("getTheVideoMData", "actual frame rate $actualFrame")
Log.e("getTheVideoMData", "target bitrate $targetBitrate")
Log.e("getTheVideoMData", "target frame rate targetFrameRate")
< /code>
Но когда я добавляю < /p>
.setBitrateMode(BITRATE_MODE_CBR)
< /code>
В журнале отображается < /p>
Ошибка видеокодера: format = format (null, null, null, video /avc, avc1 .4D401F, -1, null, [1024, 576, 29.97003, ColorInfo(BT709, Limited range, SDR SMPTE 170M, false, 8bit Luma, 8bit Chroma)], [-1, -1]), colorInfo=ColorInfo(BT709 , Ограниченный диапазон, SDR SMPTE 170M, FALSE, 8 -битный LUMA, 8 -битный Chroma) и My Log GetTheVideOmData
E Фактический битрейт 1138922
E Фактическая частота кадров 30
< Br /> e Target Bitrate 1000000
e Целевая частота кадров 30 < /p>
< /blockquote>
Подробнее здесь: [url]https://stackoverflow.com/questions/78958428/media3-transformer-increases-bitrate[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия