Skip to main content

Python package to convert m3u8 playlists to mp4 videos using FFMPEG

Project description

M3U8-to-MP4

Python package to convert m3u8 playlists to mp4 videos using FFMPEG

Install

Install using pip install

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

Project details


Release history Release notifications | RSS feed

This version

1.0

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

py_m3u8_to_mp4-1.0.tar.gz (4.7 kB view details)

Uploaded Source

Built Distribution

py_m3u8_to_mp4-1.0-py3-none-any.whl (5.4 kB view details)

Uploaded Python 3

File details

Details for the file py_m3u8_to_mp4-1.0.tar.gz.

File metadata

  • Download URL: py_m3u8_to_mp4-1.0.tar.gz
  • Upload date:
  • Size: 4.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.9.19

File hashes

Hashes for py_m3u8_to_mp4-1.0.tar.gz
Algorithm Hash digest
SHA256 58ca786584996e2cc3cb068f1dad1c94130e6637aefe9f52e2ee726874cf8867
MD5 fa9346eaecc4bf2adf7a5ff2b78ca5f3
BLAKE2b-256 a848d9af6ae08f4c5b8f89cfdd63c9c80f17127e19cea9134dc5c06b0facb3dd

See more details on using hashes here.

File details

Details for the file py_m3u8_to_mp4-1.0-py3-none-any.whl.

File metadata

File hashes

Hashes for py_m3u8_to_mp4-1.0-py3-none-any.whl
Algorithm Hash digest
SHA256 bac920d278a9b63e9e915d602b1549ae988bc004d9477e35ed5934ab65aaac76
MD5 e82e58c01695fa729ff6b84fab03e698
BLAKE2b-256 8122a4f1a5e340f8ef333e4d82077f05abc0cc1c3cb276b999717fe85437b4ad

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page