in LINE android- transcoder *A**** P* X O *A**** H***** X O *A**** P* X O *A**** H***** X X *A**** M***** O O > android-transcoder made by Yuya Tanaka > https://github.com/ypresto/android-transcoder > Written with pure Java without codec licensing issues. > Supports OpenGL renderer
Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Extracting, Decoding Rendering Encoding, Muxing Reference: https://github.com/ypresto/android-transcoder
Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Extracting, Decoding Rendering Encoding, Muxing Reference: https://github.com/ypresto/android-transcoder
Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
encoded data stream > Demux data streams into each track android.media.MediaExtractor Media Extractor Audio info: AAC Video info: H.264 Audio Track (AAC) Video Track (H.264) MP4 Container
encoded data stream > Demux data streams into each track android.media.MediaExtractor Media Extractor Audio info: AAC Video info: H.264 Audio Track (AAC) Video Track (H.264) MP4 Container Audio Decoder Video Decoder
Encoder Video Encoder Muxer Video OpenGL Renderer Extractor android.media.MediaCodec Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Audio Decoder Video Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Extractor Audio Track (AAC) Video Track (H.264) MP4 Container Video Renderer onFrameAvailable Released Buffer in Surface Empty Input Buffer Fill Input Buffer
Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Extracting, Decoding Rendering Encoding, Muxing Reference: https://github.com/ypresto/android-transcoder
Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Extracting, Decoding Rendering Encoding, Muxing Reference: https://github.com/ypresto/android-transcoder
Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container Reference: https://github.com/ypresto/android-transcoder
Video Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container
Bitrate 2 Mbit/s Resolution 720*1280 Trim range 1200 ms ~ 250300 ms Audio Codec AAC Sample Rate 44.1 kHz ... ... > Adjust sampling rate of audio > Add APIs for a trancoding policy including codec, resolution, trim ranges, and etc.
Audio Decoder Video Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container
on libsamplerate made by erikd > https://github.com/erikd/libsamplerate > A library for performing sample rate conversion of audio data 320 kbit/s 96 kbit/s
with a simple policy for transcoding > Trims video Container MP4 Video Codec H.264 Bitrate 2 Mbit/s Resolution 720*1280 Trim range 1200 ms ~ 250300 ms Audio Codec AAC Samplerate 44.1 kHz
with a simple policy for transcoding > Trims video > Mutes audio X Container MP4 Video Codec H.264 Bitrate 2 Mbit/s Resolution 720*1280 Trim range 1200 ms ~ 250300 ms Audio Codec AAC Samplerate 44.1 kHz
Video Decoder Audio Encoder Video Encoder Muxer Video OpenGL Renderer Extractor Audio Track Video Track Video Container Audio Track Video Track Video Container
sticker as a Bitmap instance and replace it to a texture that OpenGL can recognize Teuxture Output Surface from Decoder FrameBuffer Input Surface to Encoder
0 kbit/s 0 kbit/s Audio Format Video Format Container Audio Decoder Audio Encoder Muxer Extractor Audio Down Sampler Audio Format Container Video Format 0 kbit/s 0 kbit/s
0 kbit/s 96 kbit/s 96 kbit/s Audio Format Video Format Container Audio Decoder Audio Encoder Muxer Extractor Audio Down Sampler Audio Format Container Video Format 96 kbit/s
Audio Encoder Muxer Extractor Audio Down Sampler Audio Format Container Video Format > We transcoded the audio track and resampled the ByteBuffer of the audio > We don’t need to resample this problematic audio track 24 kbit/s (123 kbit/s) 24 kbit/s (123 kbit/s) 24 kbit/s (123 kbit/s) 24 kbit/s (123 kbit/s)
extracting 24 kbit/s > Cruiser bypasses the resampling process if it has 24 kbit/s Audio Format Video Format Container Audio Decoder Audio Encoder Muxer Extractor Audio Down Sampler Audio Format Container Video Format X X X Audio Stream Bypass 24 kbit/s (123 kbit/s) 24 kbit/s (123 kbit/s)