-
Notifications
You must be signed in to change notification settings - Fork 30
Hi I'm kind of newbie to coding etc. but with a video background I've to analyze markers in manifests (hls/dash).
When downloaded these manifests/playlists in atom (as a text file) I always copy paste the markers (Base64 from DASH or Hex from HLS) using https://openidconnectweb.azurewebsites.net/Cue to decode them.
It would be nice to have this great tool as a shortcut or menu item to decode them on the spot in the manifest.
https://github.blog/2016-08-19-building-your-first-atom-plugin/
Not sure if someone did this before or who can help creating this based on the threefive code (it would be wonderful :) )
thanks
All reactions
Replies: 3 comments 1 reply
I have never thought about it, Do a lot of folks use atom with playlists?
The biggest issue is that I don't have a JavaScript version of threefive,
but I do have a few ideas. Let me think about it.
All reactions
thanks for looking into this!
I'm using atom to check SCTE35 signalisation in manifests but I'm always struggling decoding the message:
An in-text highlight and decode using a menu item would be great!
Here an example of DASH file in atom (HLS is similar but using Hex for the markers):
<MPD xmlns="urn:mpeg:dash:schema:mpd:2011" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" profiles="urn:mpeg:dash:profile:isoff-live:2011" type="dynamic" availabilityStartTime="1970-01-01T00:00:00Z" publishTime="2021-11-23T15:00:06Z" timeShiftBufferDepth="PT4H59M58.120S" minimumUpdatePeriod="PT2S" maxSegmentDuration="PT2.006S" minBufferTime="PT6S"> <Period id="16376294518630570" start="PT454897H4M11.863S"><AssetIdentifier schemeIdUri="urn:eidr" value="md:cid:EIDR:10.5240%2f0000-E789-0600-0000-0000-C"/> <AdaptationSet id="1" group="1" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" maxWidth="1024" maxHeight="576" par="16:9" maxFrameRate="50" startWithSAP="1"> <SegmentTemplate timescale="10000000" media="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=$Time$)" initialization="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=Init)" presentationTimeOffset="16376294518630570"> <SegmentTimeline><S t="16376616018630570" d="20000000" r="908"/><S d="3200000"/></SegmentTimeline> </SegmentTemplate><Representation id="dxADMaAlJhIbnw.." bandwidth="2500000" codecs="avc1.4d4020" width="1024" height="576" frameRate="50" sar="1:1" scanType="progressive"/></AdaptationSet> </Period> <Period id="16376634201830570" start="PT454906H30M20.183S"><AssetIdentifier schemeIdUri="urn:eidr" value="md:cid:EIDR:10.5240%2f0000-E789-0600-0000-0000-C"/> <EventStream schemeIdUri="urn:mime:text" timescale="90000"> <Event id="8692">/DBeAAAAAAAAAP/wBQb/M/rqQABIAkZDVUVJAAAh9H//AAAAAAAPMnVybjpiZS5nb3BsYXk6OWVhYmZiMDItOWQ1ZS00ZWNiLTkwMGEtOTlhYWNmNDdmOWVmEAAA01LQBQ==</Event> </EventStream> <AdaptationSet id="1" group="1" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" maxWidth="1024" maxHeight="576" par="16:9" maxFrameRate="50" startWithSAP="1"> <SegmentTemplate timescale="10000000" media="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=$Time$)" initialization="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=Init)" presentationTimeOffset="16376634201830570"> <SegmentTimeline><S t="16376634201830570" d="20000000" r="65"/><S d="18400000"/></SegmentTimeline> </SegmentTemplate><Representation id="dxADMaAlJhIbnw.." bandwidth="2500000" codecs="avc1.4d4020" width="1024" height="576" frameRate="50" sar="1:1" scanType="progressive"/></AdaptationSet> </Period> <Period id="16376635540230570" start="PT454906H32M34.023S"><AssetIdentifier schemeIdUri="urn:smpte:ul:060E2B34.01040101.01200900.00000000" value="urn:adid:MDKD2133650"/> <EventStream schemeIdUri="urn:mime:text" timescale="90000"> <Event id="2133650">/DAsAAAAAAAAAP/wBQb/NLK3YAAWAhRDVUVJACCOkn//AAETiYAAADAAAEl+Tok=</Event> </EventStream> <AdaptationSet id="1" group="1" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" maxWidth="1024" maxHeight="576" par="16:9" maxFrameRate="50" startWithSAP="1"> <SegmentTemplate timescale="10000000" media="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=$Time$)" initialization="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=Init)" presentationTimeOffset="16376635540230570"> <SegmentTimeline><S t="16376635540230570" d="20000000" r="99"/><S d="5600000"/></SegmentTimeline> </SegmentTemplate><Representation id="dxADMaAlJhIbnw.." bandwidth="2500000" codecs="avc1.4d4020" width="1024" height="576" frameRate="50" sar="1:1" scanType="progressive"/></AdaptationSet> </Period> <Period id="16376637545830570" start="PT454906H35M54.583S"><AssetIdentifier schemeIdUri="urn:eidr" value="md:cid:EIDR:10.5240%2f0000-E789-0600-0000-0000-C"/> <EventStream schemeIdUri="urn:mime:text" timescale="90000"> <Event id="19836">/DBeAAAAAAAAAP/wBQb/NcYkwABIAkZDVUVJAABNfH//AAAAAAAPMnVybjpiZS5nb3BsYXk6YTg2NzM0ZjctZDc5Yi00OGM5LTk1ZDEtOThlMGNiNzUwN2MzEAAAePAKVg==</Event> </EventStream> <AdaptationSet id="1" group="1" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" maxWidth="1024" maxHeight="576" par="16:9" maxFrameRate="50" startWithSAP="1"> <SegmentTemplate timescale="10000000" media="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=$Time$)" initialization="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=Init)" presentationTimeOffset="16376637545830570"> <SegmentTimeline><S t="16376637545830570" d="20000000" r="2208"/><S d="7600000"/></SegmentTimeline> </SegmentTemplate><Representation id="dxADMaAlJhIbnw.." bandwidth="2500000" codecs="avc1.4d4020" width="1024" height="576" frameRate="50" sar="1:1" scanType="progressive"/></AdaptationSet> </Period> <Period id="16376681733430570" start="PT454907H49M33.343S"><AssetIdentifier schemeIdUri="urn:smpte:ul:060E2B34.01040101.01200900.00000000" value="urn:adid:MDKD2133664"/> <EventStream schemeIdUri="urn:mime:text" timescale="90000"> <Event id="19836">/DBeAAAAAAAAAP/wBQb/NcYkwABIAkZDVUVJAABNfH//AAAAAAAPMnVybjpiZS5nb3BsYXk6YTg2NzM0ZjctZDc5Yi00OGM5LTk1ZDEtOThlMGNiNzUwN2MzEAAAePAKVg==</Event> <Event id="2133664">/DAsAAAAAAAAAP/wBQb/TXpjEAAWAhRDVUVJACCOoH//AADww/AAACIAAI23ydg=</Event> </EventStream> <AdaptationSet id="1" group="1" bitstreamSwitching="true" segmentAlignment="true" contentType="video" mimeType="video/mp4" maxWidth="1024" maxHeight="576" par="16:9" maxFrameRate="50" startWithSAP="1"> <SegmentTemplate timescale="10000000" media="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=$Time$)" initialization="S!d2ERU1RCLUhFVkMtREFTSC1DTFISAkMAXjjDVP7...8BFgSf/QualityLevels($Bandwidth,ドルLevel_params=$RepresentationID$)/Fragments(video=Init)" presentationTimeOffset="16376681733430570"> <SegmentTimeline><S t="16376681733430570" d="20000000" r="86"/><S d="12400000"/></SegmentTimeline> </SegmentTemplate><Representation id="dxADMaAlJhIbnw.." bandwidth="2500000" codecs="avc1.4d4020" width="1024" height="576" frameRate="50" sar="1:1" scanType="progressive"/></AdaptationSet> </Period> </MPD>
All reactions
Look at the examples for hls
I will be adding Dash support soon.