Support live streams in MPEG DASH
See original GitHub issuePlease follow the guide below
- You will be asked some questions and requested to provide some information, please read them carefully and answer honestly
- Put an
x
into all the boxes [ ] relevant to your issue (like that [x]) - Use Preview tab to see how your issue will actually look like
Make sure you are using the latest version: run youtube-dl --version
and ensure your version is 2016.09.27. If it’s not read this FAQ entry and update. Issues with outdated version will be rejected.
- I’ve verified and I assure that I’m running youtube-dl 2016.09.27
Before submitting an issue make sure you have:
- At least skimmed through README and most notably FAQ and BUGS sections
- Searched the bugtracker for similar issues including closed ones
What is the purpose of your issue?
- Bug report (encountered problems with youtube-dl)
- Site support request (request for adding support for a new site)
- Feature request (request for a new functionality)
- Question
- Other
The following sections concretize particular purposed issues, you can erase any section (the contents between triple —) not applicable to your issue
If the purpose of this issue is a bug report, site support request or you are not completely sure provide the full verbose output as follows:
Add -v
flag to your command line you run youtube-dl with, copy the whole output and insert it here. It should look similar to one below (replace it with your log inserted between triple ```):
% youtube-dl http://tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl62/manifest.mpd --verbose
[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['http://tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl62/manifest.mpd', '--verbose']
[debug] Encodings: locale UTF-8, fs utf-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2016.09.27
[debug] Python version 3.5.1+ - Linux-4.6.0-1-amd64-x86_64-with-debian-stretch-sid
[debug] exe versions: ffmpeg 3.1.3-1, ffprobe 3.1.3-1, rtmpdump 2.4
[debug] Proxy map: {}
[generic] manifest: Requesting header
[redirect] Following redirect to http://se04.se.tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl62/manifest.mpd
[generic] manifest: Requesting header
WARNING: Falling back on generic information extractor.
[generic] manifest: Downloading webpage
[generic] manifest: Extracting information
ERROR: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/home/misuzu/Documents/Virtualenvs/rub90-v2-streaming/lib/python3.5/site-packages/youtube_dl/YoutubeDL.py", line 694, in extract_info
ie_result = ie.extract(url)
File "/home/misuzu/Documents/Virtualenvs/rub90-v2-streaming/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 355, in extract
return self._real_extract(url)
File "/home/misuzu/Documents/Virtualenvs/rub90-v2-streaming/lib/python3.5/site-packages/youtube_dl/extractor/generic.py", line 1663, in _real_extract
self._sort_formats(info_dict['formats'])
File "/home/misuzu/Documents/Virtualenvs/rub90-v2-streaming/lib/python3.5/site-packages/youtube_dl/extractor/common.py", line 922, in _sort_formats
raise ExtractorError('No video formats found')
youtube_dl.utils.ExtractorError: No video formats found; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see https://yt-dl.org/update on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
If the purpose of this issue is a site support request please provide all kinds of example URLs support for which should be included (replace following example URLs by yours):
- Single video: http://embed.tvcom.cz/2abb1b03-662b-4237-8c3f-7748818271cb/720/
- Single video: http://embed.tvcom.cz/e3558bcc-12bb-4ff8-8b7f-cf6dd0d990cc/720/
- Single video: http://tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl62/manifest.mpd
- Single video: http://tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl39/manifest.mpd
Description of your issue, suggested solution and other information
Explanation of your issue in arbitrary form goes here. Please make sure the description is worded well enough to be understood. Provide as much context and examples as possible. If work on your issue requires account credentials please provide them or explain how one can obtain them.
Seems like youtube-dl does not support m4s container for MPEG DASH streams.
Sample manifest.mpd from http://tvcom-live1.service.cdn.cra.cz/tvcom/fotbal-cfl62/manifest.mpd:
?xml version="1.0" encoding="UTF-8"?>
<MPD xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns="urn:mpeg:dash:schema:mpd:2011"
xmlns:xlink="http://www.w3.org/1999/xlink"
xsi:schemaLocation="urn:mpeg:DASH:schema:MPD:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd"
profiles="urn:mpeg:dash:profile:isoff-live:2011"
type="dynamic"
minimumUpdatePeriod="PT3.083S"
publishTime="2016-09-28T09:24:35Z"
availabilityStartTime="2016-09-28T09:07:27Z"
timeShiftBufferDepth="PT49.92S"
suggestedPresentationDelay="PT15.0S"
minBufferTime="PT6.0S">
<ProgramInformation>
<Title>fotbal-cfl62</Title>
</ProgramInformation>
<Period id="0" start="PT0.0S">
<AdaptationSet id="0" mimeType="video/mp4" width="720" height="404" par="16:9" frameRate="25" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<SegmentTemplate timescale="90000" media="chunk_u64qw79a6_ctvideo_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="chunk_u64qw79a6_ctvideo_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
<SegmentTimeline>
<S t="87343200" d="864000"/>
<S d="1036800"/>
<S d="864000"/>
<S d="864000"/>
<S d="864000"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="p0a0r0" codecs="avc1.42c01e" sar="1:1" bandwidth="1002000" />
</AdaptationSet>
<AdaptationSet id="1" mimeType="audio/mp4" lang="eng" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
<Role schemeIdUri="urn:mpeg:dash:role:2011" value="main"/>
<SegmentTemplate timescale="44100" media="chunk_u64qw79a6_ctaudio_cfm4s_rid$RepresentationID$_cs$Time$_mpd.m4s" initialization="chunk_u64qw79a6_ctaudio_cfm4s_rid$RepresentationID$_cinit_mpd.m4s">
<SegmentTimeline>
<S t="42799183" d="422912"/>
<S d="507904"/>
<S d="423936"/>
<S d="422912"/>
<S d="422912"/>
</SegmentTimeline>
</SegmentTemplate>
<Representation id="p0a1r0" codecs="mp4a.40.2" audioSamplingRate="44100" bandwidth="64000">
<AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
</Representation>
</AdaptationSet>
</Period>
</MPD>
Issue Analytics
- State:
- Created 7 years ago
- Reactions:3
- Comments:12 (1 by maintainers)
Top Results From Across the Web
Setting up adaptive streaming media sources - MDN Web Docs
MPEG -DASH is an adaptive bitrate streaming technique that enables streaming of media content over the Internet delivered from conventional HTTP ...
Read more >What is MPEG-DASH Video Streaming Protocol? How Does ...
MPEG -DASH supports both VOD (on-demand) and Live video streaming. It is supported by the Android ecosystem, which is very important for ...
Read more >HLS vs. MPEG-DASH: A Live Streaming Protocol Comparison ...
Which should you use, HLS vs. MPEG-DASH? This blog will compare HLS vs DASH for live streaming in a matchup of top streaming...
Read more >Delivering Live YouTube Content via DASH
This document provides guidelines for using the DASH Delivery format to stream live data on YouTube from an encoder. It is intended to...
Read more >MPEG-DASH: Dynamic Adaptive Streaming Over HTTP | Wowza
MPEG -DASH, short for Dynamic Adaptive Streaming over HTTP, is an open protocol for live and VOD streaming. This post details how it...
Read more >
Top Related Medium Post
No results found
Top Related StackOverflow Question
No results found
Troubleshoot Live Code
Lightrun enables developers to add logs, metrics and snapshots to live code - no restarts or redeploys required.
Start Free
Top Related Reddit Thread
No results found
Top Related Hackernoon Post
No results found
Top Related Tweet
No results found
Top Related Dev.to Post
No results found
Top Related Hashnode Post
No results found
@freMea wrote:
First of all, your referenced MPEG-DASH manifest (MPD):
https://quick.vidalytics.com/video/5SwBVaqN/0TdguiZ2jRVjKEXR/9060/4595/stream.mpd
is a static (VOD), NOT a dynamic one (i.e. Live stream), which is the subject of this issue 😠 ; so, it’s totally out of context here… 👎
If you
-F
your MPD, you’ll see it does contain separate streams for audio and video content (most MPDs usually do!), so it’s no surpriseyt-dl
fetches two separate standalone streams… And in these cases,yt-dl
of course can merge (mux) them into an appropriate container, provided it already knows where to look for an FFmpeg binary!Your MPD is kinda special in that it offers three different video codecs (VP9, h264=avc1, hevc=hvc1) between its video streams, additionally all streams are being throttled server-side 😞 …
youtube-dl -F "https://quick.vidalytics.com/video/5SwBVaqN/0TdguiZ2jRVjKEXR/9060/4595/stream.mpd"
=>Provided you’re using a fairly recent build of FFmpeg, it’ll have no issues merging vp9/hevc into the MP4 container (although I consider myself vp9/hevc inside MP4 as a sort of a “Chimera” 😉 ) … If you prefer a traditional MP4 file with h264+aac, then the following cmd worked for me:
youtube-dl --referer "https://vidalytics.com/video/0TdguiZ2jRVjKEXR" -f "8f8bff13-effb-408c-9a67-5da680d5446f+e2992025-4615-450d-81d9-da9de1bedf17" "https://quick.vidalytics.com/video/5SwBVaqN/0TdguiZ2jRVjKEXR/9060/4595/stream.mpd" -o "Vidalytics_Demo_720p.mp4"
=>If you’re more fond of the Matroska container, then to create an .mkv file with hevc+aac, issue:
youtube-dl --referer "https://vidalytics.com/video/0TdguiZ2jRVjKEXR" -f "9ba5de7f-0208-430f-8bba-7a007524ed68+e2992025-4615-450d-81d9-da9de1bedf17" "https://quick.vidalytics.com/video/5SwBVaqN/0TdguiZ2jRVjKEXR/9060/4595/stream.mpd" --merge-output-format mkv -o "Vidalytics_Demo_720p.hevc.aac.mkv"
=>In conclusion, there’s nothing wrong with
yt-dl
here, which, I suspect, can’t be said about your ownyt-dl
setup…Regards
About stream.mpd, here is one example: https://vidalytics.com/video/0TdguiZ2jRVjKEXR
This player is used on some websites and requests a stream.mpd.
Currently, if I use the request url, ytdl can download but it results in separated video and audio streams. I have to do an extra step to merge them in one container (mkv). Could ytdl auto merge streams at the end of downloading ?
If I rename the URL replacing .mpd by .m3u8, it works if ffmpeg is installed. It would be nice we wouldn’t have to do this extra renaming step and ytdl did automatically.