Hello There,
I’m trying to loop a single file as adaptive hls live stream.
I have pre-transcoded all the variants I need (for now), I’m not intending to use Transcoder to do that work at all.
Please keep in mind bitrates are not finalized yet since I just wanted to get something running.
This is my scheduler smil:
<smil>
<head>
</head>
<body>
<stream name="1280x640"></stream>
<stream name="1920x960"></stream>
<stream name="3840x1920"></stream>
<stream name="7680x3840"></stream>
<playlist name="pl1" playOnStream="1920x960" repeat="true" scheduled="2016-04-15 16:00:00">
<video src="mp4:1920x960.mp4" start="0" length="-1"/>
</playlist>
<playlist name="pl2" playOnStream="1280x640" repeat="true" scheduled="2016-04-15 16:00:00">
<video src="mp4:1280x640.mp4" start="0" length="-1"/>
</playlist>
<playlist name="pl3" playOnStream="3840x1920" repeat="true" scheduled="2016-04-15 16:00:00">
<video src="mp4:3840x1920.mp4" start="0" length="-1"/>
</playlist>
<playlist name="pl4" playOnStream="7680x3840" repeat="true" scheduled="2016-04-15 16:00:00">
<video src="mp4:7680x3840.mp4" start="0" length="-1"/>
</playlist>
</body>
The 1920/1280 variants are h.264, 3840/7680 are hevc.
My streaming smil looks like this:
<?xml version="1.0" encoding="UTF-8"?>
<smil title="">
<head></head>
<body>
<switch>
<video height="640" src="1280x640" systemBitrate="8000000" width="1280">
<param name="videoBitrate" value="7817341" valuetype="data"></param>
<param name="videoCodecId" value="avc1.4d4029" valuetype="data"></param>
<param name="audioCodecId" value="mp4a.40.2" valuetype="data"></param>
</video>
<video height="960" src="1920x960" systemBitrate="15000000" width="1920">
<param name="videoBitrate" value="14575045" valuetype="data"></param>
<param name="videoCodecId" value="avc1.640029" valuetype="data"></param>
<param name="audioCodecId" value="mp4a.40.2" valuetype="data"></param>
</video>
<video height="1920" src="3840x1920" systemBitrate="30000000" width="3840">
<param name="videoBitrate" value="28282107" valuetype="data"></param>
<param name="videoCodecId" value="hvc1.1.60000000.H150.90" valuetype="data"/>
<param name="audioCodecId" value="mp4a.40.2" valuetype="data"></param>
</video>
<video height="3840" src="7680x3840" systemBitrate="90000000" width="7680">
<param name="videoBitrate" value="84208392" valuetype="data"></param>
<param name="videoCodecId" value="hvc1.1.60000000.H180.90" valuetype="data"/>
<param name="audioCodecId" value="mp4a.40.2" valuetype="data"></param>
</video>
</switch>
</body>
</smil>
Since I’m using HEVC I figured I’d need CMAF containers and I tried to set it up by setting LiveStreamPacketizers
to cmafstreamingpacketizer
in my Application.xml
.
Unfortunately this doesn’t seem to work.
Opening live/smil:switch.smil/playlist.m3u8
in Safari loads for a while but ultimately nothing happens and it breaks.
Interestingly, the single streams, e.g. live/1280x640/playlist.m3u8
all work just fine, even the 8K one.
This is an excerpt from the debug log:
2022-05-10 18:45:05 GMT comment server WARN 200 - HTTPStreamerAdapterCupertinoStreamer.onPlaylist: Rendition is not supported [live/smil:switch.smil/chunklist_w1827565764_b8000000.m3u8]: AUDIOVIDEO _defaultVHost_ live_definst_ 145.557 - - - - - - - - - - - - - - - - - - - - - - - - -
2022-05-10 18:45:05 GMT comment server WARN 200 - PlaylistDelegate.getManifest[app[live] stream[1280x640] format[CMAF], type[AUDIOVIDEO]]: Manifest doesn't exist: live/smil:switch.smil/chunklist_w1827565764_b8000000.m3u8 _defaultVHost_ live _definst_ 145.557 - - - - - - - - - - - - - - - - - - - - - - - - -
I’m a bit out of ideas right now.