Menu toggle
latest: v0.9.1 GitHub

New versions are released through GitHub, so the reference page is the GitHub Releases page.

Starting from 0.7.0, you can now support development through the GitHub Sponsors program. Companies can share a tiny part of their revenue and get private support hours in return. Thanks!


  • Improvement: DefaultDataSink new constructor with support for FileDescriptor. (#87)


  • New: BlankAudioDataSource can be used to add muted audio to a video-only track, thanks to @mudar (#64)
  • Enhancement: you can now concatenate multiple files even if some of them have no audio, thanks to @mudar (#64)
  • Enhancement: you can now concatenate multiple files without audio track, thanks to @cbernier2 (#61)


  • New: TrimDataSource to trim segments. Use it to wrap your original source. Thanks to @mudar (#50)
  • New: ClipDataSource, just likes TrimDataSource but selects trim values with respect to video start (#54)

Transcoder will trim video segments only at the closest video sync frame. If your video has few sync frames, the trim timestamp might be different than what was selected.

  • Fix: fixed Xamarin incompatibility, thanks to @aweck (#41)
  • Fix: fixed small bugs with specific API versions / media files (#47)
  • Fix: fixed issues with specific media files, ensure consistent onProgress callback (#48)

  • Fix: fixed bug with files that do not have an audio track, thanks to @pawegio (#31)
  • Fix: fixed possible issues with FilePathDataSource (#32)

  • Improvement: better input format detection. Fixes bugs with certain files (#29)
  • Improvement: added DefaultAudioStrategy.Builder.bitRate() option (#29)

  • Improvement: update the underlying OpenGL library (#20)


  • New: video concatenation to stitch together multiple media (#14)
  • New: select a specific track type (VIDEO or AUDIO) for sources (#14)
  • New: audio resampling through DefaultAudioStrategy (#16)
  • New: custom resampling through TranscoderOptions.setAudioResampler() (#16)
  • Breaking change: TranscoderOptions.setDataSource() renamed to addDataSource() (#14)
  • Breaking change: TranscoderOptions.setRotation() renamed to setVideoRotation() (#14)
  • Breaking change: DefaultVideoStrategy.iFrameInterval() renamed to keyFrameInterval() (#14)
  • Breaking change: DefaultAudioStrategy now uses a builder - removed old constructor (#16)
  • Improvement: rotate videos through OpenGL instead of using metadata (#14)
  • Improvement: when concatenating multiple sources, automatically clip the longer track (audio or video) (#17)
  • Improvement: various bug fixed (#18)


  • New: ability to change video/audio speed and change each frame timestamp (#10)
  • New: ability to set the video output rotation (#8)
  • Improvement: new frame dropping algorithm, thanks to @Saqrag (#9)
  • Improvement: avoid format validation on tracks coming from PassThroughTrackTranscoder, thanks to @Saqrag ([#11][11])


  • New: video cropping to any dimension. Encoder will crop the exceeding size. (#6)
  • New: AspectRatioResizer to crop to a given aspect ratio. (#6)
  • Breaking change: MediaTranscoder renamed to Transcoder. (#6)
  • Breaking change: MediaTranscoderOptions renamed to TranscoderOptions. (#6)
  • Breaking change: MediaTranscoder.Listener renamed to TranscoderListener. (#6)
  • Improvement: use EglCore to replace GL logic. (#5)
  • Improvement: bug fixes and a new demo app to test transcoding options easily (#4)