Git Product home page Git Product logo

m3u8-to-mp4's Introduction

M3U8-to-MP4

Python package to convert m3u8 playlists to mp4 videos using FFMPEG

Install

Install using pip install py-m3u8-to-mp4

It also requires the user to have FFMPEG in their PATH, Download it here

Usage

Create an object using file = M3U8_Playlist('path_to_file.m3u8')
For the path you can input a path to a local m3u8 file or a remote web link to it by using the prefix "URL:"

Afterward, to convert the playlist to mp4, you can call file.to_mp4('output.mp4').

NOTE: Using a weblink will automatically download the m3u8 file temporarily; the file will then get deleted when the mp4 is compiled.

Example:

m3u8 = M3U8_Playlist('playlist-1.m3u8')
m3u8.to_mp4('test-1.mp4')

Special Case:

Segments without full links

m3u8 = M3U8_Playlist('URL:https://vz-cea98c59-23c.b-cdn.net/c309129c-27b6-4e43-8254-62a15c77c5ee/842x480/video.m3u8')
m3u8.append_to_segments('https://vz-cea98c59-23c.b-cdn.net/c309129c-27b6-4e43-8254-62a15c77c5ee/842x480/')
m3u8.to_mp4('test-2.mp4')

In this case, the link used as path will link to a m3u8 that has segments without full links:

#EXTINF:4.000000,
video0.ts
#EXTINF:4.000000,
video1.ts
#EXTINF:4.000000,
video2.ts

To get the .ts files of those segments and compile them together to a mp4, we need to get the full link
You can use append_to_segments() to append a starting URL to each; which will result in this:

#EXTINF:4.000000,
https://vz-cea98c59-23c.b-cdn.net/c309129c-27b6-4e43-8254-62a15c77c5ee/842x480/video0.ts
#EXTINF:4.000000,
https://vz-cea98c59-23c.b-cdn.net/c309129c-27b6-4e43-8254-62a15c77c5ee/842x480/video1.ts
#EXTINF:4.000000,
https://vz-cea98c59-23c.b-cdn.net/c309129c-27b6-4e43-8254-62a15c77c5ee/842x480/video2.ts

Now we can call to_mp4() to compile it into a full mp4 video

Details

to_mp4(destination, delete_after, frame_rate, whitelist, run_async)
Convert the playlist to a mp4 video

  • destination - path to the output mp4 file
  • delete_after - will delete the m3u8 file after conversion, default for links ( URL: ) supplied as path is true
  • frame_rate - frame/seconds of the resulting video
  • whitelist - string of protocols allowed
  • run_async - run conversion asynchronously

append_to_segments(append_str)
Some m3u8 file may not have full URLs for each segments, use this to append a starting URL to the start of each segment in the m3u8 playlist. This function will check if each segment starts with a valid http link. If it does, it will not append!

  • append_str - prefix that is appended to each segment

setHeaders(headers)
Set the header that will be used when making a GET request in the case of using a weblink for the m3u8 file and not local

  • headers - header used for get request

m3u8-to-mp4's People

Contributors

olivialba avatar

Stargazers

 avatar

Watchers

 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.