Background:
The HLS RFC doesn't seem to mention anything about this. I'm creating a script that generates a 720p.m3u8
file for a series of 720p resolution .ts
files. Then it uses FFMPEG to generate 480p .ts
files using the 720p .ts
files and generates a 480p.m3u8
file.
Then it generates a master playlist.m3u8
file which points to the 720p.m3u8
and 480p.m3u8
files.
Master:
#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=3145728,RESOLUTION=1280x720"
720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1572864,RESOLUTION=854x480"
480p.m3u8
Question:
Is it ok to have all the
.ts
files of all resolutions stored in the same folder along with their respectivem3u8
files and the masterm3u8
file? Or should the.ts
and.m3u8
files of each resolution be stored in separate folders and the masterm3u8
be in the parent folder? Like this:#EXTM3U
#EXT-X-STREAM-INF:BANDWIDTH=3145728,RESOLUTION=1280x720"
720p_folder/720p.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1572864,RESOLUTION=854x480"
480p_folder/480p.m3u8The multivariant playlist here shows
m3u8
locations as full URL'shttp://example.com/low/index.m3u8
. Is that how it should be, or can it be a relative folder path like I've shown above (480p_folder/480p.m3u8
)?
This is for accessing via VideoJS
from various client browsers across the world, and the .ts
and .m3u8
files will be stored on an AWS S3 server.
CodePudding user response:
Folders for the different renditions are commonly used but there is absolutely no requirement for it.
All URLs in a Multivariant playlist (used to be called master playlist) and in the different variant playlists can be relative or absolute, without really any restrictions. Things to consider here are:
- With absolute URLs, it's easy to host just the playlist files elsewhere while all URLs will still work
- With relative URLs, it's easy to move or copy the content to other locations as long as m3u8 playlist and media files are kept together.
As a side note, you should consider using mp4
chunks instead of ts
unless you have a technical reason not to. There are hardly any devices left that only support ts
but not mp4
, and for using some HLS features, the use of mp4
is required (at least for Apple devices), e.g.: