Comments (7)
Hi @yuriikonovalov, could you share your Transformer export settings, frame rate or any other parameters you set in Transformer?
from media.
Hi @droid-girl, here are MediaItem and Transformer builders. Just in case it matters, the PNG frame is created via ffmpeg library from a webm video.
Media items:
val backgroundMediaItem = MediaItem.Builder()
.setUri(backgroundUri)
.setMimeType(MimeTypes.IMAGE_PNG)
.build()
val backgroundEditedMediaItem = EditedMediaItem.Builder(backgroundMediaItem)
.setDurationUs(6_000_000)
.setFrameRate(30)
.setEffects(
Effects(
listOf(),
listOf(Presentation.createForWidthAndHeight(1080, 1920, Presentation.LAYOUT_SCALE_TO_FIT_WITH_CROP))
)
)
.build()
val frameMediaItem = MediaItem.Builder()
.setUri(frameUri)
.setMimeType(MimeTypes.IMAGE_PNG)
.build()
val frameEditedMediaItem = EditedMediaItem.Builder(frameMediaItem)
.setDurationUs(6_000_000)
.setFrameRate(30)
.setEffects(
Effects(
listOf(),
listOf(Presentation.createForWidthAndHeight(1080, 1920, Presentation.LAYOUT_SCALE_TO_FIT_WITH_CROP))
)
)
.build()
Video composition:
val backgroundSequence = EditedMediaItemSequence(backgroundEditedMediaItem)
val frameSequence = EditedMediaItemSequence(frameEditedMediaItem)
val composition = Composition.Builder(frameSequence, backgroundSequence)
.setEffects(
Effects(
listOf(),
listOf(
Presentation.createForWidthAndHeight(1080, 1920, Presentation.LAYOUT_SCALE_TO_FIT_WITH_CROP),
FrameDropEffect.createDefaultFrameDropEffect(30f),
)
)
)
.build()
Transfromer settings:
val transformer = Transformer.Builder(context)
.setVideoMimeType(MimeTypes.VIDEO_H264)
.setAudioMimeType(MimeTypes.AUDIO_AAC)
.setEncoderFactory(DefaultEncoderFactory.Builder(context.applicationContext).build())
.addListener(transformerListener)
.build()
transformer.start(composition, outputFilePath)
from media.
Here is also a video created from same background and frame PNG images but using ffmpeg.
ffmpeg.mp4
from media.
Thank you for sharing this information. There might be several reasons for this behaviour.
@tof-tof: I wonder if downscaling is producing this artifact and a downscaling algorithm would solve this problem? or is there another reason?
from media.
Hmmm not completely sure. sounds a bit like #1050 which is being solved by upcoming work, we'll see if that solves this as well
from media.
@tof-tof I guess #1050 fixes the color problem but not the quality problem. Maybe the reason for that is the bitrate of the output video? I compared the original video (size - 1080:1920, so scaling should not be the case) with the output video. The bitrate of the original video is 13815kbps. The bitrate of the output video is 8582kbps.
The original video and the output video.
from media.
As an experiment, you can try setting bitrate value as described here.
Assigning this issue to @ychaparov for his input
from media.
Related Issues (20)
- Duplicate child manifest and segment is loaded at the beginning of HLS playback HOT 3
- HLS stream cannot be played from the beginning. Need to seek forward a little to be able to play it. HOT 6
- Why Exoplayer downloads content manifest before pre-roll manifest? HOT 7
- demo-session process restarted when swiped away from paused state HOT 3
- How to construct ExoPlayer as TextureView rather than SurfaceView in C# .NET? HOT 2
- CastPlayer returns wrong currentMediaItemIndex when cast is stopped HOT 1
- Disable Jetifier HOT 4
- Swiping away demo-session while playing does not end process HOT 5
- ExoPlayer's DownloadManager download priority
- Decoder init failed
- com.google.android.exoplayer2.upstream.HttpDataSource$InvalidResponseCodeException HOT 1
- Forcing a timeline change after modifying MediaMetadata extras HOT 2
- How to show playback notification for basic player implementation HOT 1
- Handle frame which has negative presentationTimeUs value HOT 3
- Using test utilities to produce a fake media source which emulates buffering behaviour HOT 7
- Transformer does not work with supported image MimeTypes when the type comes from ContentResolver HOT 1
- Pause the download and not cancel the notification HOT 1
- Exoplayer cannot be constructed with a specification for "surface_type" programmatically? Why not? HOT 5
- ExoPlayer wrongly decode some MP3 file HOT 8
- There is an issue with supporting ass subtitles, exo version 1.3.1 HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from media.