82bc7a3b95
Opening a named pipe can block until both ends are open, and we cannot control when the other end will be open. Ideally, we would always open files in a thread so that Packager can be used with piped inputs from naive applications without a potential deadlock. This change will defer opening WebVTT files until the parser Run() method is called from a thread. This way, WebVTT files being sent in from a pipe will never be able to block the main thread. Previously, files were opened on the main thread before calling the parser constructor, passing the open file to the constructor as an argument. I also tried doing it in the parser's InitializeInternal() method, but that is also called from the main thread. Change-Id: I54cc68ed9d48a8dc697829119be84d4065b1ae1c |
||
---|---|---|
.github | ||
docs | ||
kokoro | ||
packager | ||
.clang-format | ||
.dockerignore | ||
.gitignore | ||
.gitmodules | ||
.travis.yml | ||
AUTHORS | ||
CHANGELOG.md | ||
CONTRIBUTING.md | ||
CONTRIBUTORS | ||
DEPS | ||
Dockerfile | ||
LICENSE | ||
README.md | ||
appveyor.yml | ||
chromium-LICENSE | ||
gyp_packager.py |
README.md
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 - - - AV1 I / O I / O - - - AAC I / O - I / O I O Dolby AC3 I / O - I / O - O Dolby EAC3 I / O - O - O DTS I / O - - - - FLAC I / O - - - - Opus I / O³ I / O - - - Vorbis - I / O - - - NOTES:
- I for input and O for output.
- ²: https://tools.ietf.org/html/draft-pantos-http-live-streaming-23#section-3.4
- ³: Opus support in ISO-BMFF is experimental.
-
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.
- Using Docker. Instructions are available here.
- Get prebuilt binaries from release.
- Built from source, see Build Instructions for details.
Useful Links
- Announcement List (join for release announcements and surveys)
- Documentation
- Tutorials
- Several open source players:
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.