
if you want to modify audio frames, pass in a list of BufferFilters in TransformationOptions, which will be applied in order.if you want to modify video frames, pass in a list of GlFilters in TransformationOptions, which will be applied in order.It is also possible to have them on a non-UI transformation thread, for example, if any "heavy" works needs to be done in listener implementation. by default listener callbacks happen on a UI thread, it is safe to update UI in listener implementation.transformation is performed asynchronously, listener will be called with any transformation progress or state changes.passing null target format means that you don't want to modify track(s) of that type.target formats will be applied to all tracks of that type, non video or audio tracks will be copied "as is".make sure to provide a unique requestId, it will be used when calling back on a listener, or needed when cancelling an ongoing transformation.Getting Startedįew notable things related to transformation: It also uses MediaExtractor and MediaMuxer to read/write media. creating preview bitmap(s) (with filters applied) at specific timestamp(s) (filmstrip)īy default, LiTr uses Android MediaCodec stack for hardware accelerated decoding/encoding and OpenGL for rendering.creating "empty" video, or a video out of single image.positioning source video frame arbitrarily onto target video frame.apply overlay to one video track, but not the other) transforming tracks individually (e.g.including/excluding tracks, which allows muxing/demuxing tracks.

applying different effects (brightness/contrast, saturation/hue, blur, etc.) to video pixels.

