Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

stream.dash: recording the direct via a mpd #5409

Open
4 tasks done
pokemaster974 opened this issue Jul 1, 2023 · 2 comments
Open
4 tasks done

stream.dash: recording the direct via a mpd #5409

pokemaster974 opened this issue Jul 1, 2023 · 2 comments

Comments

@pokemaster974
Copy link

Checklist

Streamlink version

Latest stable release

Description

Regarding the issue #5379, I've tried to record the direct of TF1 website.

So after creating a python script with my own credentials, I've obtain the manifest which is the following :
https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd

After this, I've trying to record only one minute of the direct, but the resulting video was a recording of an "old" direct several hours before.

The resulting video have surely bad timestamps as opening this with mpv player doesn't displayed a good progress of the playing.
The mediainfo is the following :

Général
Identifiant unique                       : 18900861188882350858576812532443529965 (0xE382C67787F732C5AD6CD26E83242ED)
Nom complet                              : D:\youtube-dl\TF1\TF1-2023-07-01_21-45-58.mp4
Format                                   : Matroska
Version du format                        : Version 4
Taille du fichier                        : 5,83 Mio
Images par seconde                       : 25,000 Im/s
Application utilisée                     : Lavf60.3.100
Bibliothèque utilisée                    : Lavf60.3.100
IsTruncated                              : Yes
ErrorDetectionType                       : Per level 1
FileExtension_Invalid                    : mkv mk3d mka mks

Vidéo
ID                                       : 1
Format                                   : AVC
Format/Info                              : Advanced Video Codec
Profil du format                         : Main@L3.1
Paramètres du format                     : CABAC / 1 Ref Frames
Paramètres du format, CABAC              : Oui
Paramètres du format, RefFrames          : 1 image
Identifiant du codec                     : V_MPEG4/ISO/AVC
Type de débit                            : Constant
Débit                                    : 2 500 kb/s
Largeur                                  : 1 280 pixels
Hauteur                                  : 720 pixels
Format à l'écran                         : 16/9
Type d'images/s                          : Constant
Images par seconde                       : 25,000 Im/s
Norme                                    : PAL
Espace de couleurs                       : YUV
Sous-échantillonnage de la chrominance   : 4:2:0
Profondeur des couleurs                  : 8 bits
Type de balayage                         : Progressif
Bits/(Pixel*Image)                       : 0.109
Bibliothèque utilisée                    : Elemental H.264
Default                                  : Oui
Forced                                   : Non
Gamme de couleurs                        : Limited
Coordonnées de chromaticité              : BT.709
Caractéristiques du transfert            : BT.709
Coefficients de la matrice               : BT.709
VENDOR_ID                                : [0][0][0][0]

Audio
ID                                       : 2
Format                                   : AAC LC
Format/Info                              : Advanced Audio Codec Low Complexity
Identifiant du codec                     : A_AAC-2
Canaux                                   : 2 canaux
Channel layout                           : L R
Echantillonnage                          : 48,0 kHz
Images par seconde                       : 46,875 Im/s (1024 SPF)
Mode de compression                      : Avec perte
Délai par rapport Vidéo                  : 10 ms
Langue                                   : Langues multiples
Default                                  : Oui
Forced                                   : Non
VENDOR_ID                                : [0][0][0][0]

Debug log

streamlink --output "TF1-{time:%Y-%m-%d_%H-%M-%S}.mp4" --hls-duration 00:01:00 --loglevel debug https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd best
[cli][debug] OS:         Windows 10
[cli][debug] Python:     3.11.3
[cli][debug] Streamlink: 5.5.1
[cli][debug] Dependencies:
[cli][debug]  certifi: 2023.5.7
[cli][debug]  isodate: 0.6.1
[cli][debug]  lxml: 4.9.2
[cli][debug]  pycountry: 22.3.5
[cli][debug]  pycryptodome: 3.18.0
[cli][debug]  PySocks: 1.7.1
[cli][debug]  requests: 2.31.0
[cli][debug]  urllib3: 2.0.2
[cli][debug]  websocket-client: 1.5.2
[cli][debug] Arguments:
[cli][debug]  url=https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[cli][debug]  stream=['best']
[cli][debug]  --loglevel=debug
[cli][debug]  --player="C:\Program Files\Sans installation\mpv\mpv.exe"
[cli][debug]  --output=TF1-{time:%Y-%m-%d_%H-%M-%S}.mp4
[cli][debug]  --hls-duration=60
[cli][debug]  --ffmpeg-ffmpeg=C:\Program Files\Streamlink\ffmpeg\ffmpeg.exe
[cli][info] Found matching plugin dash for URL https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[plugins.dash][debug] URL=https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd; params={}
[utils.l10n][debug] Language code: fr_FR
[stream.dash][debug] Available languages for DASH audio streams: sme, mul, fra (using: mul)
[cli][info] Available streams: 234p (worst), 360p, 576p_alt, 576p, 720p (best)
[cli][info] Opening stream: 720p (dash)
[cli][info] Writing output to
D:\youtube-dl\TF1\TF1-2023-07-01_21-45-58.mp4
[cli][debug] Checking file output
[stream.dash][debug] Opening DASH reader for: ('1475058', '1485523442', '1') - video/mp4
[stream.dash][debug] Opening DASH reader for: ('1475058', '1299661462', '6') - audio/mp4
[stream.dash][debug] video/mp4 segment initialization: downloading (2023-07-01T15:26:16.735000Z / 2023-07-01T19:45:58.315630Z)
[stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1475058', '1485523442', '1')
[stream.dash][debug] audio/mp4 segment initialization: downloading (2023-07-01T15:26:16.735000Z / 2023-07-01T19:45:58.317632Z)
[stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1475058', '1299661462', '6')
[stream.dash][debug] Reloading manifest ('1475058', '1485523442', '1')
[stream.dash][debug] Reloading manifest ('1475058', '1299661462', '6')
[stream.dash][debug] video/mp4 segment 1475229: downloading (2023-07-01T19:45:41.880000Z / 2023-07-01T19:45:58.334624Z)
[stream.dash][debug] video/mp4 segment initialization: completed
[stream.dash][debug] audio/mp4 segment 1475229: downloading (2023-07-01T19:45:41.885333Z / 2023-07-01T19:45:58.392605Z)
[stream.dash][debug] audio/mp4 segment initialization: completed
[stream.dash][debug] audio/mp4 segment 1475230: downloading (2023-07-01T19:45:49.885333Z / 2023-07-01T19:45:58.453206Z)
[stream.dash][debug] audio/mp4 segment 1475229: completed
[stream.dash][debug] audio/mp4 segment 1475231: downloading (2023-07-01T19:45:53.000000Z / 2023-07-01T19:45:58.631151Z)
[stream.dash][debug] audio/mp4 segment 1475230: completed
[stream.dash][debug] video/mp4 segment 1475230: downloading (2023-07-01T19:45:49.880000Z / 2023-07-01T19:45:58.635152Z)
[stream.dash][debug] video/mp4 segment 1475229: completed
[stream.dash][debug] audio/mp4 segment 1475231: completed
[stream.dash][debug] video/mp4 segment 1475231: downloading (2023-07-01T19:45:53.000000Z / 2023-07-01T19:45:58.814093Z)
[stream.dash][debug] video/mp4 segment 1475230: completed
[stream.dash][debug] video/mp4 segment 1475231: completed
[stream.ffmpegmux][debug] ffmpeg version n6.0-3-g0e11aafb08-20230310 Copyright (c) 2000-2023 the FFmpeg developers
[stream.ffmpegmux][debug]  built with gcc 12.2.0 (crosstool-NG 1.25.0.90_cf9beb1)
[stream.ffmpegmux][debug]  configuration: --prefix=/ffbuild/prefix --pkg-config-flags=--static --pkg-config=pkg-config --cross-prefix=x86_64-w64-mingw32- --arch=x86_64 --target-os=mingw32 --enable-gpl --enable-version3 --disable-debug --disable-w32threads --enable-pthreads --enable-iconv --enable-libxml2 --enable-zlib --enable-libfreetype --enable-libfribidi --enable-gmp --enable-lzma --enable-fontconfig --enable-libvorbis --enable-opencl --disable-libpulse --enable-libvmaf --disable-libxcb --disable-xlib --enable-amf --enable-libaom --enable-libaribb24 --enable-avisynth --enable-chromaprint --enable-libdav1d --enable-libdavs2 --disable-libfdk-aac --enable-ffnvcodec --enable-cuda-llvm --enable-frei0r --enable-libgme --enable-libkvazaar --enable-libass --enable-libbluray --enable-libjxl --enable-libmp3lame --enable-libopus --enable-librist --enable-libssh --enable-libtheora --enable-libvpx --enable-libwebp --enable-lv2 --disable-libmfx --enable-libvpl --enable-openal --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopenmpt --enable-librav1e --enable-librubberband --enable-schannel --enable-sdl2 --enable-libsoxr --enable-libsrt --enable-libsvtav1 --enable-libtwolame --enable-libuavs3d --disable-libdrm --disable-vaapi --enable-libvidstab --enable-vulkan --enable-libshaderc --enable-libplacebo --enable-libx264 --enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libzimg --enable-libzvbi --extra-cflags=-DLIBTWOLAME_STATIC --extra-cxxflags= --extra-ldflags=-pthread --extra-ldexeflags= --extra-libs=-lgomp --extra-version=20230310
[stream.ffmpegmux][debug]  libavutil      58.  2.100 / 58.  2.100
[stream.ffmpegmux][debug]  libavcodec     60.  3.100 / 60.  3.100
[stream.ffmpegmux][debug]  libavformat    60.  3.100 / 60.  3.100
[stream.ffmpegmux][debug]  libavdevice    60.  1.100 / 60.  1.100
[stream.ffmpegmux][debug]  libavfilter     9.  3.100 /  9.  3.100
[stream.ffmpegmux][debug]  libswscale      7.  1.100 /  7.  1.100
[stream.ffmpegmux][debug]  libswresample   4. 10.100 /  4. 10.100
[stream.ffmpegmux][debug]  libpostproc    57.  1.100 / 57.  1.100
[utils.named_pipe][info] Creating pipe streamlinkpipe-11328-1-4501
[utils.named_pipe][info] Creating pipe streamlinkpipe-11328-2-3569
[stream.ffmpegmux][debug] ffmpeg command: C:\Program Files\Streamlink\ffmpeg\ffmpeg.exe -nostats -y -i \\.\pipe\streamlinkpipe-11328-1-4501 -i \\.\pipe\streamlinkpipe-11328-2-3569 -c:v copy -c:a copy -copyts -f matroska pipe:1
[stream.ffmpegmux][debug] Starting copy to pipe: \\.\pipe\streamlinkpipe-11328-1-4501
[stream.ffmpegmux][debug] Starting copy to pipe: \\.\pipe\streamlinkpipe-11328-2-3569
[cli][debug] Pre-buffering 8192 bytes
[cli][debug] Writing stream to output
[download] Written 5.82 MiB to TF1-2023-07-01_21-45-58.mp4 (59s @ 0 bytes/s)                                                                                                                                                                                                                                                                                                              [stream.ffmpegmux][error] Error while reading from substream: Read timeout
[download] Written 5.82 MiB to TF1-2023-07-01_21-45-58.mp4 (1m00s @ 0 bytes/s)                                                                                                                                                                                                                                                                                                            [stream.ffmpegmux][error] Error while reading from substream: Read timeout

[stream.ffmpegmux][debug] Closing ffmpeg thread
[stream.segmented][debug] Closing worker thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing worker thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing writer thread
[stream.segmented][debug] Closing writer thread
[stream.ffmpegmux][debug] Closed all the substreams
[cli][info] Stream ended
[cli][info] Closing currently open stream...
@pokemaster974 pokemaster974 added the plugin issue A Plugin does not work correctly label Jul 1, 2023
@bastimeyer bastimeyer added stream: DASH restriction: geo blocked and removed plugin issue A Plugin does not work correctly labels Jul 1, 2023
@bastimeyer
Copy link
Member

The MPD URL is useless, because it's geo-blocked. Luckily, I was able to access it with a French IP address.

This looks like a duplicate of the issue mentioned in #5201. Let me keep this thread open for now though because #5201 is more of a meta-thread for different DASH issues.


several hours before

The manifest includes a lot of periods. Streamlink does only support playback of one period, which is the first one when no specific period was selected. This is because Streamlink doesn't support stream discontinuities.

There's also UTC sync information at the bottom which Streamlink's DASHStream implementation doesn't support, which means the client's system time needs to be properly synced instead.

Regarding of what other players/DASH-parsers do, the manifest includes a suggestedPresentationDelay and a minBufferTime which Streamlink respects, same as each segment's availabilityStartTime that stems from the global value and segment timeline calculation. As mentioned in #5201, it's possible that the timeline calculation is incorrect.

  • time = self.root.timelines[ident]
    is_initial = time == -1
    publish_time = self.root.publishTime or EPOCH_START
    threshold = publish_time - self.root.suggestedPresentationDelay
    # transform the timeline into a segment list
    timeline = []
    available_at = publish_time
    # the last segment in the timeline is the most recent one
    # so, work backwards and calculate when each of the segments was
    # available, based on the durations relative to the publish-time
    for number, segment in reversed(list(zip(count(self.startNumber), self.segmentTimeline.segments))):
    # stop once the suggestedPresentationDelay is reached on the first manifest parsing
    # or when a segment with a lower or equal time value was already returned from an earlier manifest
    if is_initial and available_at <= threshold or segment.t <= time:
    break
    timeline.append((number, segment, available_at))
    available_at -= timedelta(seconds=segment.d / self.timescale)
    # return the segments in chronological order
    for number, segment, available_at in reversed(timeline):
    self.root.timelines[ident] = segment.t
    yield number, segment, available_at
  • @property
    def segments(self) -> Iterator[TimelineSegment]:
    t = 0
    for tsegment in self.timeline_segments:
    if t == 0 and tsegment.t is not None:
    t = tsegment.t
    # check the start time from MPD
    for _ in range(tsegment.r + 1):
    yield TimelineSegment(t, tsegment.d)
    t += tsegment.d

Excerpt of the manifest (first period only) accessed at 2023-07-01T20:15:35Z

<?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:scte35="urn:scte:scte35:2013:xml" xsi:schemaLocation="urn:mpeg:dash:schema:mpd:2011 http://standards.iso.org/ittf/PubliclyAvailableStandards/MPEG-DASH_schema_files/DASH-MPD.xsd" id="201" type="dynamic" publishTime="2023-07-01T20:15:29+00:00" minimumUpdatePeriod="PT7S" availabilityStartTime="2023-02-16T12:51:31.764000+00:00" minBufferTime="PT18S" suggestedPresentationDelay="PT18.000S" timeShiftBufferDepth="PT14398.000S" profiles="urn:mpeg:dash:profile:isoff-live:2011">
  <Period start="PT11676116.731S" id="1475414" duration="PT368.240S">
    <EventStream timescale="90000" schemeIdUri="urn:scte:scte35:2013:xml">
      <Event duration="33040800">
        <scte35:SpliceInfoSection protocolVersion="0" ptsAdjustment="3363863984" tier="4095">
          <scte35:SpliceInsert spliceEventId="536928163" spliceEventCancelIndicator="false" outOfNetworkIndicator="true" spliceImmediateFlag="true" uniqueProgramId="1920" availNum="0" availsExpected="0">
            <scte35:Program/>
            <scte35:BreakDuration autoReturn="true" duration="33040800"/>
          </scte35:SpliceInsert>
        </scte35:SpliceInfoSection>
      </Event>
    </EventStream>
    <AdaptationSet id="1485523442" mimeType="video/mp4" segmentAlignment="true" startWithSAP="1" subsegmentAlignment="true" subsegmentStartsWithSAP="1" bitstreamSwitching="true">
      <Representation id="1" width="1280" height="720" frameRate="25/1" bandwidth="2499968" codecs="avc1.4D401F">
        <SegmentTemplate timescale="25000" media="index_video_1_0_$Number$.mp4?m=1683904220" initialization="index_video_1_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="291902918286">
          <SegmentTimeline>
            <S t="291905924286" d="200000" r="29"/>
            <S t="291911924286" d="171000"/>
            <S t="291912095286" d="29000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="2" width="1024" height="576" frameRate="25/1" bandwidth="1699968" codecs="avc1.4D401F">
        <SegmentTemplate timescale="25000" media="index_video_2_0_$Number$.mp4?m=1683904220" initialization="index_video_2_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="291902918286">
          <SegmentTimeline>
            <S t="291905924286" d="200000" r="29"/>
            <S t="291911924286" d="171000"/>
            <S t="291912095286" d="29000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="3" width="1024" height="576" frameRate="25/1" bandwidth="1200000" codecs="avc1.4D401F">
        <SegmentTemplate timescale="25000" media="index_video_3_0_$Number$.mp4?m=1683904220" initialization="index_video_3_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="291902918286">
          <SegmentTimeline>
            <S t="291905924286" d="200000" r="29"/>
            <S t="291911924286" d="171000"/>
            <S t="291912095286" d="29000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="4" width="640" height="360" frameRate="25/1" bandwidth="800000" codecs="avc1.42C01E">
        <SegmentTemplate timescale="25000" media="index_video_4_0_$Number$.mp4?m=1683904220" initialization="index_video_4_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="291902918286">
          <SegmentTimeline>
            <S t="291905924286" d="200000" r="29"/>
            <S t="291911924286" d="171000"/>
            <S t="291912095286" d="29000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
      <Representation id="5" width="416" height="234" frameRate="25/1" bandwidth="400000" codecs="avc1.42C00D">
        <SegmentTemplate timescale="25000" media="index_video_5_0_$Number$.mp4?m=1683904220" initialization="index_video_5_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="291902918286">
          <SegmentTimeline>
            <S t="291905924286" d="200000" r="29"/>
            <S t="291911924286" d="171000"/>
            <S t="291912095286" d="29000"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="1299661462" mimeType="audio/mp4" segmentAlignment="0" lang="mul">
      <Label>VO</Label>
      <Representation id="6" bandwidth="96495" audioSamplingRate="48000" codecs="mp4a.40.2">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
        <SegmentTemplate timescale="48000" media="index_audio_6_0_$Number$.mp4?m=1683904220" initialization="index_audio_6_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="560453603814">
          <SegmentTimeline>
            <S t="560459375078" d="384000" r="29"/>
            <S t="560470895078" d="328704"/>
            <S t="560471223782" d="55296"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="278844692" mimeType="audio/mp4" segmentAlignment="0" lang="sme">
      <Label>audio description</Label>
      <Representation id="7" bandwidth="96639" audioSamplingRate="48000" codecs="mp4a.40.2">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
        <SegmentTemplate timescale="48000" media="index_audio_7_0_$Number$.mp4?m=1683904220" initialization="index_audio_7_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="560453603814">
          <SegmentTimeline>
            <S t="560459375078" d="384000" r="29"/>
            <S t="560470895078" d="328704"/>
            <S t="560471223782" d="55296"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="1258454721" mimeType="audio/mp4" segmentAlignment="0" lang="fra">
      <Label>français</Label>
      <Representation id="8" bandwidth="128905" audioSamplingRate="48000" codecs="mp4a.40.2">
        <AudioChannelConfiguration schemeIdUri="urn:mpeg:dash:23003:3:audio_channel_configuration:2011" value="2"/>
        <SegmentTemplate timescale="48000" media="index_audio_11_0_$Number$.mp4?m=1683904220" initialization="index_audio_11_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="560453603814">
          <SegmentTimeline>
            <S t="560459375078" d="384000" r="29"/>
            <S t="560470895078" d="328704"/>
            <S t="560471223782" d="55296"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="279471494" mimeType="application/mp4" codecs="stpp" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true" lang="mul" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
      <Label>no subtitles</Label>
      <Representation id="9" bandwidth="2000">
        <SegmentTemplate timescale="90000" media="index_subtitles_8_0_$Number$.mp4?m=1683904220" initialization="index_subtitles_8_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="1050850505832">
          <SegmentTimeline>
            <S t="1050861327432" d="720000" r="29"/>
            <S t="1050882927432" d="615600"/>
            <S t="1050883543032" d="104400"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="1463501478" mimeType="application/mp4" codecs="stpp" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true" lang="sme" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
      <Label>Sourds et malentendant</Label>
      <Representation id="10" bandwidth="2000">
        <SegmentTemplate timescale="90000" media="index_subtitles_9_0_$Number$.mp4?m=1683904220" initialization="index_subtitles_9_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="1050850505832">
          <SegmentTimeline>
            <S t="1050861327432" d="720000" r="29"/>
            <S t="1050882927432" d="615600"/>
            <S t="1050883543032" d="104400"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <AdaptationSet id="153006254" mimeType="application/mp4" codecs="stpp" segmentAlignment="true" startWithSAP="1" bitstreamSwitching="true" lang="fra" subsegmentAlignment="true" subsegmentStartsWithSAP="1">
      <Label>français</Label>
      <Representation id="11" bandwidth="2000">
        <SegmentTemplate timescale="90000" media="index_subtitles_10_0_$Number$.mp4?m=1683904220" initialization="index_subtitles_10_0_init.mp4?m=1683904220" startNumber="1475430" presentationTimeOffset="1050850505832">
          <SegmentTimeline>
            <S t="1050861327432" d="720000" r="29"/>
            <S t="1050882927432" d="615600"/>
            <S t="1050883543032" d="104400"/>
          </SegmentTimeline>
        </SegmentTemplate>
      </Representation>
    </AdaptationSet>
    <SupplementalProperty schemeIdUri="urn:scte:dash:utc-time" value="2023-07-01T18:13:23.440Z"/>
  </Period>
</MPD>
$ streamlink -l trace --http-proxy=socks5h://localhost:1920 'dash://https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd' best
[22:15:35.678452][cli][debug] OS:         Linux-6.3.9-1-git-x86_64-with-glibc2.37
[22:15:35.678548][cli][debug] Python:     3.11.3
[22:15:35.678589][cli][debug] Streamlink: 5.5.1+56.gbe26c216
[22:15:35.678981][cli][debug] Dependencies:
[22:15:35.679564][cli][debug]  certifi: 2023.5.7
[22:15:35.679855][cli][debug]  isodate: 0.6.1
[22:15:35.680090][cli][debug]  lxml: 4.9.2
[22:15:35.680474][cli][debug]  pycountry: 22.3.5
[22:15:35.680729][cli][debug]  pycryptodome: 3.18.0
[22:15:35.681024][cli][debug]  PySocks: 1.7.1
[22:15:35.681277][cli][debug]  requests: 2.31.0
[22:15:35.681536][cli][debug]  urllib3: 2.0.3
[22:15:35.681784][cli][debug]  websocket-client: 1.6.0
[22:15:35.681961][cli][debug] Arguments:
[22:15:35.682002][cli][debug]  url=dash://https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[22:15:35.682037][cli][debug]  stream=['best']
[22:15:35.682072][cli][debug]  --loglevel=trace
[22:15:35.682105][cli][debug]  --player=mpv
[22:15:35.682147][cli][debug]  --http-proxy=socks5h://localhost:1920
[22:15:35.682327][cli][info] Found matching plugin dash for URL dash://https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd
[22:15:35.682387][plugins.dash][debug] URL=https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd; params={}
[22:15:36.022455][utils.l10n][debug] Language code: en_US
[22:15:36.022557][stream.dash][debug] Available languages for DASH audio streams: fra, mul, sme (using: mul)
[22:15:36.022993][cli][info] Available streams: 234p (worst), 360p, 576p_alt, 576p, 720p (best)
[22:15:36.023061][cli][info] Opening stream: 720p (dash)
[22:15:36.023099][cli][info] Starting player: mpv
[22:15:36.023296][stream.dash][debug] Opening DASH reader for: ('1475414', '1485523442', '1') - video/mp4
[22:15:36.023984][stream.dash][debug] Opening DASH reader for: ('1475414', '1299661462', '6') - audio/mp4
[22:15:36.024217][stream.dash][debug] video/mp4 segment initialization: downloading (2023-07-01T16:13:28.495000Z / 2023-07-01T20:15:36.024190Z)
[22:15:36.024424][stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1475414', '1485523442', '1')
[22:15:36.026147][stream.dash][debug] audio/mp4 segment initialization: downloading (2023-07-01T16:13:28.495000Z / 2023-07-01T20:15:36.026125Z)
[22:15:36.026509][stream.dash_manifest][debug] Generating segment timeline for dynamic playlist: ('1475414', '1299661462', '6')
[22:15:36.026542][stream.ffmpegmux][trace] Querying FFmpeg version: ['/usr/bin/ffmpeg', '-version']
[22:15:36.029658][stream.dash][debug] Reloading manifest ('1475414', '1485523442', '1')
[22:15:36.030432][stream.dash][debug] Reloading manifest ('1475414', '1299661462', '6')
[22:15:36.053887][stream.ffmpegmux][debug] ffmpeg version n6.0 Copyright (c) 2000-2023 the FFmpeg developers
[22:15:36.053943][stream.ffmpegmux][debug]  built with gcc 13.1.1 (GCC) 20230429
[22:15:36.053975][stream.ffmpegmux][debug]  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-amf --enable-avisynth --enable-cuda-llvm --enable-lto --enable-fontconfig --enable-gmp --enable-gnutls --enable-gpl --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libdav1d --enable-libdrm --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libiec61883 --enable-libjack --enable-libjxl --enable-libmfx --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librav1e --enable-librsvg --enable-libsoxr --enable-libspeex --enable-libsrt --enable-libssh --enable-libsvtav1 --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvmaf --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxcb --enable-libxml2 --enable-libxvid --enable-libzimg --enable-nvdec --enable-nvenc --enable-opencl --enable-opengl --enable-shared --enable-version3 --enable-vulkan
[22:15:36.054007][stream.ffmpegmux][debug]  libavutil      58.  2.100 / 58.  2.100
[22:15:36.054042][stream.ffmpegmux][debug]  libavcodec     60.  3.100 / 60.  3.100
[22:15:36.054073][stream.ffmpegmux][debug]  libavformat    60.  3.100 / 60.  3.100
[22:15:36.054101][stream.ffmpegmux][debug]  libavdevice    60.  1.100 / 60.  1.100
[22:15:36.054129][stream.ffmpegmux][debug]  libavfilter     9.  3.100 /  9.  3.100
[22:15:36.054155][stream.ffmpegmux][debug]  libswscale      7.  1.100 /  7.  1.100
[22:15:36.054181][stream.ffmpegmux][debug]  libswresample   4. 10.100 /  4. 10.100
[22:15:36.054207][stream.ffmpegmux][debug]  libpostproc    57.  1.100 / 57.  1.100
[22:15:36.054250][utils.named_pipe][info] Creating pipe streamlinkpipe-1154108-1-7719
[22:15:36.054382][utils.named_pipe][info] Creating pipe streamlinkpipe-1154108-2-3351
[22:15:36.054464][stream.ffmpegmux][debug] ffmpeg command: /usr/bin/ffmpeg -nostats -y -i /tmp/streamlinkpipe-1154108-1-7719 -i /tmp/streamlinkpipe-1154108-2-3351 -c:v copy -c:a copy -copyts -f matroska pipe:1
[22:15:36.054605][stream.ffmpegmux][debug] Starting copy to pipe: /tmp/streamlinkpipe-1154108-1-7719
[22:15:36.054829][stream.ffmpegmux][debug] Starting copy to pipe: /tmp/streamlinkpipe-1154108-2-3351
[22:15:36.055129][cli][debug] Pre-buffering 8192 bytes
[22:15:36.099894][stream.dash][debug] video/mp4 segment 1475458: downloading (2023-07-01T20:15:16.000000Z / 2023-07-01T20:15:36.099878Z)
[22:15:36.101088][stream.dash][debug] video/mp4 segment initialization: completed
[22:15:36.330247][stream.dash][debug] audio/mp4 segment 1475458: downloading (2023-07-01T20:15:16.000000Z / 2023-07-01T20:15:36.330226Z)
[22:15:36.330364][stream.dash][debug] audio/mp4 segment initialization: completed
[22:15:36.474407][stream.dash][debug] audio/mp4 segment 1475459: downloading (2023-07-01T20:15:24.000000Z / 2023-07-01T20:15:36.474383Z)
[22:15:36.479862][stream.dash][debug] audio/mp4 segment 1475458: completed
[22:15:36.718209][stream.dash][debug] video/mp4 segment 1475459: downloading (2023-07-01T20:15:24.000000Z / 2023-07-01T20:15:36.718182Z)
[22:15:36.723360][stream.dash][debug] video/mp4 segment 1475458: completed
[22:15:36.726687][stream.dash][debug] audio/mp4 segment 1475460: downloading (2023-07-01T20:15:30.848000Z / 2023-07-01T20:15:36.726667Z)
[22:15:36.726930][stream.dash][debug] audio/mp4 segment 1475459: completed
[22:15:36.763680][cli.output][debug] Opening subprocess: mpv --force-media-title=dash://https://live-tf1-das.cdn-0.diff.tf1.fr/eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJjaXAiOiI4Mi42Ni4xNjcuNzgiLCJjbWNkIjoiIiwiZXhwIjoxNjg4MjU0ODUxLCJnaWQiOiI2NGFiMGQyMjdmYjM0Mjk1OTljNTI1NjU4YTZhYjNkNiIsImlhdCI6MTY4ODI0MDQ1MSwiaXNzIjoiZGVsaXZlcnkiLCJtYXhiIjowLCJzdGVtIjoiL291dC92MS9kZmUzNmY5MDk2NDk0NzEyOTkwMmI4NDJiODNlNjViNCIsInN1YiI6IjY0YWIwZDIyN2ZiMzQyOTU5OWM1MjU2NThhNmFiM2Q2In0.OpHL9MMU3C8CYmBa06gyWXDUHWR_3PtYYloOGXEmlNw/out/v1/dfe36f90964947129902b842b83e65b4/index.mpd -
[22:15:37.025184][stream.dash][debug] audio/mp4 segment 1475461: downloading (2023-07-01T20:15:32.000000Z / 2023-07-01T20:15:37.025166Z)
[22:15:37.025374][stream.dash][debug] audio/mp4 segment 1475460: completed
[22:15:37.087625][stream.dash][debug] audio/mp4 segment 1475461: completed
[22:15:37.264299][cli][debug] Writing stream to output
[22:15:37.545623][stream.dash][debug] video/mp4 segment 1475460: downloading (2023-07-01T20:15:30.840000Z / 2023-07-01T20:15:37.545598Z)
[22:15:37.547999][stream.dash][debug] video/mp4 segment 1475459: completed
[22:15:38.017989][stream.dash][debug] video/mp4 segment 1475461: downloading (2023-07-01T20:15:32.000000Z / 2023-07-01T20:15:38.017972Z)
[22:15:38.020917][stream.dash][debug] video/mp4 segment 1475460: completed
[22:15:38.294701][stream.dash][debug] video/mp4 segment 1475461: completed
[22:15:41.265374][cli][info] Player closed

@pokemaster974
Copy link
Author

Thanks for the explaination. Let me know if I can helop you more.
Regards.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants