Coder Social home page Coder Social logo

m3u8downloader's Introduction

Disclaimer: I did not create this library, I have only made minor modifications. Original project homepage can be found here: https://pypi.org/project/m3u8downloader/.

m3u8downloader

m3u8downloader is a tool to download video at a m3u8 link. HTTP Live Streaming (HLS) is becoming popular. m3u8 playlist is used by HLS to serve video fragments of different quality to different clients. This tool supports HLS master playlist and media playlist. If master playlist is given, it selects the highest resolution automatically. HLS fragment encryption is supported. Resume from partial download is supported, just rerun the same command to continue.

ffmpeg is used to convert the downloaded fragments into final mp4 video file.

Installation

To install m3u8downloader, simply:

$ sudo apt install -y ffmpeg
$ pip install --user m3u8downloader

Quick Start

Example command line usage:

downloadm3u8 -o ~/Downloads/foo.mp4 https://example.com/path/to/foo.m3u8

If ~/.local/bin is not in $PATH, you can use full path:

~/.local/bin/downloadm3u8 -o ~/Downloads/foo.mp4 https://example.com/path/to/foo.m3u8

Here is built-in command line help:

usage: m3u8downloader [-h] [--version] [--debug] --output OUTPUT
                      [--tempdir TEMPDIR] [--concurrency N]
                      URL

download video at m3u8 url

positional arguments:
  URL                   the m3u8 url

optional arguments:
  -h, --help            show this help message and exit
  --version             show program's version number and exit
  --debug               enable debug log
  --output OUTPUT, -o OUTPUT
                        output video filename, e.g. ~/Downloads/foo.mp4
  --tempdir TEMPDIR     temp dir, used to store .ts files before combing them
                        into mp4
  --concurrency N, -c N
                        number of fragments to download at a time

Documentation

This command line tool doesn't have extra documents.

Limitations

This tool only parses minimum m3u8 extensions for selecting media playlist from master playlist, downloading key and fragments from media playlist. If a m3u8 file doesn't download correctly, it's probably some new extension was added to the HLS spec which this tool isn't aware of.

ChangeLog

  • v0.9.0
    • add support for --user-agent and --origin parameters
  • v0.8.7
    • bugfix: do not rewrite KEY URI if it is already a local file path.
  • v0.8.6
    • fix a regression in v0.8.4. the v0.8.4 release should be avoided. Either use v0.8.3 or v0.8.6+
  • v0.8.4
    • minor bugfix: still try rewrite path when using m3u8 file from cache. when rewrite path in m3u8 file, do not rewrite if path has already been rewritten before. This is a minor change, it only fix things when process is killed when .m3u8 file is downloaded but path in it has not been rewritten yet.
  • v0.8.3
    • bugfix: ensure output file name and temp dir name is always valid for windows platform.
  • v0.8.1
    • bugfix: should rewrite key uri to local file path.
    • some bugfix for windows platform.
  • v0.8.0 2019-03-31
    • add logrotate for log handler
  • v0.7.8 2019-03-09
    • bugfix: fragment url rewrite fail for some cases
  • v0.7.7 2019-03-08
    • bugfix: always rewrite fragment url to local abs path
  • v0.7.5 2019-03-07
    • set default log level to INFO
  • v0.7.4 2019-03-07
    • initial release

m3u8downloader's People

Contributors

josephcappadona avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.