Skip to main content

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

Metadata

Release files for py-m3u8-to-mp4 1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for py-m3u8-to-mp4 1.1
File Size Uploaded
py_m3u8_to_mp4-1.1.tar.gz 5.0 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for py-m3u8-to-mp4 1.1
File Interpreter ABI Platform
py_m3u8_to_mp4-1.1-py3-none-any.whl Python 3 none any Details

Total release size: 10.8 kB

Release files / py_m3u8_to_mp4-1.1.tar.gz

Download URL py_m3u8_to_mp4-1.1.tar.gz
Size 5.0 kB
Tags Source
SHA-256 checksum
How to use checksums
885e6541a2c307bb570a41ce0fed2b8bfe2006ae164242deddc50269a1cc8f0c
BLAKE2b-256 checksum
How to use checksums
342e854f54dae73f4429d6029188d4fea36f18fe01591af583b77c15974df8e5
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release files / py_m3u8_to_mp4-1.1-py3-none-any.whl

Download URL py_m3u8_to_mp4-1.1-py3-none-any.whl
Size 5.8 kB
Tags Python 3
SHA-256 checksum
How to use checksums
53552bde704bd29511cf18247baa799d49f03caa106931164a49c188c1e942cd
BLAKE2b-256 checksum
How to use checksums
f878ecb3f586a5538d8d6dbb0f069b31b148436dab664d70f01ca611565f4283
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/5.1.1 CPython/3.9.20

Release history Release notifications | RSS feed

This release

1.1 This release

2 release files

1.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page