A media packaging and development framework for VOD and Live DASH and HLS applications, supporting Common Encryption for Widevine and other DRM Systems.
Go to file
KongQun Yang 40ea1286b9 Add support for EditLists in ISO-BMFF
- EditLists in input files are parsed and applied to sample timestamps.
- An EditList will be inserted in the ISO-BMFF output if
  - There is an offset between the initial presentation timestamp (pts)
    and decoding timestamp (dts). Chrome, as of M67, still uses dts in
    buffered range API [1], which creates various problems when buffered
    range by pts does not align with buffered range by dts. There is
    another bug in Chrome that applies EditList to pts only [2]. This
    means that we can insert an EditList to align pts range and dts range.
  - MediaSamples have negative timestamps (e.g. for Audio Priming).

You may notice the below change on some contents:
- Some media duration is reduced by one or two frames. This is because
  EditList in the input file was ignored in the previous code, so video
  streams start with a zero dts and a non-zero pts; the smaller of dts
  and pts was used as the starting timestamp (related to the earlier
  workaround for Chrome's dts bug), so the calculated duration was
  actually a bit larger than the actual duration. Now with EditList
  applied, the initial pts is reduced to zero, so the media duration is
  also reduced to reflect the actual and correct media duration.

It may also result in negative timestamps in TS/HLS Packed Audio, which
will be addressed in a follow up CL.

Fixes #112.
Partially address b/110782437.

[1] https://crbug.com/718641, fixed but behind MseBufferByPts.
[2] https://crbug.com/354518. Chrome is planning to enable the fix for
    [1] before addressing this bug, so we are safe.

Change-Id: I59317740ad3807ca66fa74b3a18fdf7f32c96aeb
2018-07-26 23:20:21 +00:00
.github Update github issue template with mailing list for test files 2017-06-02 18:16:41 +00:00
docs Add an example command for using trick play. 2018-07-25 23:58:07 -07:00
kokoro Fix build failures in MacOS 10.12.6 with XCode 9.0 2018-01-05 12:21:41 -08:00
packager Add support for EditLists in ISO-BMFF 2018-07-26 23:20:21 +00:00
.clang-format Use Chromium style for clang-format 2014-07-02 22:49:46 +00:00
.gitignore Add gitignores for msvs files 2016-12-19 21:26:26 +00:00
.gitmodules Add an empty .gitmodules to avoid gclient warning 2014-03-28 22:13:33 +00:00
.travis.yml Include shared_library and mpd_generator in ci and releases 2017-12-12 23:11:01 +00:00
AUTHORS Fix order of VPS, SPS, PPS in hvcC box of HEVC/MP4 (#300) 2017-11-30 14:34:42 -08:00
CHANGELOG.md Update CHANGELOG for v2.1.1 2018-07-03 21:03:20 +00:00
CONTRIBUTING.md Add AUTHORS, CONTRIBUTORS, CONTRIBUTING.md, and README.md 2014-04-19 00:05:38 +00:00
CONTRIBUTORS Fix order of VPS, SPS, PPS in hvcC box of HEVC/MP4 (#300) 2017-11-30 14:34:42 -08:00
DEPS Fix build failures in MacOS 10.12.6 with XCode 9.0 2018-01-05 12:21:41 -08:00
Dockerfile Fix docker build failure due to build update 2016-08-29 17:52:53 -07:00
LICENSE Update README and LICENSE 2016-09-07 19:22:41 +00:00
README.md [doc] Fix broken link in DockerHub 2018-06-14 20:25:00 +00:00
appveyor.yml Fix build failures in MacOS 10.12.6 with XCode 9.0 2018-01-05 12:21:41 -08:00
chromium-LICENSE Add Chromium license 2014-04-10 19:58:08 +00:00
gyp_packager.py Address gcc build failures in some platforms 2017-12-07 11:45:26 -08:00

README.md

Shaka Packager

Build Status Build status

Shaka Packager is a tool and a media packaging SDK for DASH and HLS packaging and encryption. It can prepare and package media content for online streaming.

Shaka Packager supports:

  • Both Video-On-Demand and Live.

  • Streaming formats:

  • Key systems:

  • Encryption standards:

  • Media Containers and codecs

    Codecs ISO-BMFF WebM MPEG2-TS WVM Packed Audio²
    H264 (AVC) I / O - I / O I -
    H265 (HEVC) I / O - I - -
    VP8 I / O I / O - - -
    VP9 I / O I / O - - -
    AAC I / O - I / O I O
    Dolby AC3/EAC3 I / O - I - O
    DTS I / O - - - -
    FLAC I / O - - - -
    Opus I / O³ I / O - - -
    Vorbis - I / O - - -

    NOTES:

  • Subtitles

    • WebVTT in both text form and embedded in MP4
    • TTML in text form (DASH only)
  • Platforms

    • Linux
    • Mac
    • Windows
    • Cross compiling for ARM is also supported.

1: Limited support

Getting Shaka Packager

There are several ways you can get Shaka Packager.

Useful Links

Contributing

If you have improvements or fixes, we would love to have your contributions. See https://github.com/google/shaka-packager/blob/master/CONTRIBUTING.md for details.