yt-dlp icon indicating copy to clipboard operation
yt-dlp copied to clipboard

Twitch live streams have out of sync audio and lowered pitch

Open mnoop opened this issue 3 years ago • 38 comments

Checklist

  • [X] I'm reporting a broken site
  • [X] I've verified that I'm running yt-dlp version 2022.06.29 (update instructions) or later (specify commit)
  • [X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
  • [X] I've checked that all URLs and arguments with special characters are properly quoted or escaped
  • [X] I've searched the bugtracker for similar issues including closed ones. DO NOT post duplicates
  • [X] I've read the guidelines for opening an issue
  • [X] I've read about sharing account credentials and I'm willing to share it if required

Region

No response

Provide a description that is worded well enough to be understood

I'm not too familiar with Twitch, but it seems that typically there is an ad when you first begin watching, and additionally the streamer can trigger ad breaks throughout the stream that can last for several minutes. After downloading a portion of a Twitch live stream, the resulting video has out of sync / missing audio whenever the streamer triggers an ad break (but not the ad at the beginning of the download). That seems to last for a few minutes beyond the length of the ad break. I think the ad break coincides with warning messages in the log like Non-monotonous DTS in output stream 0:0; previous: 1816559905, current: 231210; changing to 1816559906. This may result in incorrect timestamps in the output file.

Additionally, the whole video has noticeably lower pitch than what plays in the browser. I don't know what would cause this, although some searching online suggests that this could have something to do with Twitch's low latency mode.

I am using ffplay to view the video file, since, at least for me, VLC player will not play it correctly (the audio cuts out every second or so).

The video corresponding to the below output has an ad at the beginning and at about 17 minutes in. The out of sync audio lasts until about 23 minutes in, a minute or so before I stopped recording. I had to cut most of the output since otherwise it won't let me post it.

Provide verbose output that clearly demonstrates the problem

  • [X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
  • [X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output

[debug] Command-line config: ['-vU', 'https://twitch.tv/hasanabi']
[debug] Encodings: locale UTF-8, fs utf-8, pref UTF-8, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version 2022.06.29 [9d339c4]
[debug] Python 3.8.10 (CPython 64bit) - Linux-5.4.0-117-generic-x86_64-with-glibc2.29 (glibc 2.31)
[debug] Checking exe version: ffmpeg -bsfs
[debug] Checking exe version: ffprobe -bsfs
[debug] exe versions: ffmpeg 4.2.7, ffprobe 4.2.7
[debug] Optional libraries: Cryptodome-3.14.1, brotli-1.0.9, certifi-2021.10.08, mutagen-1.45.1, secretstorage-2.3.1, sqlite3-2.6.0, websockets-10.2
[debug] Proxy map: {}
[debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest
[debug] Downloading _update_spec from https://github.com/yt-dlp/yt-dlp/releases/download/2022.06.29/_update_spec
Latest version: 2022.06.29, Current version: 2022.06.29
yt-dlp is up to date (2022.06.29)
[debug] [twitch:stream] Extracting URL: https://twitch.tv/hasanabi
[twitch:stream] hasanabi: Downloading stream GraphQL
[twitch:stream] hasanabi: Downloading stream access token GraphQL
[twitch:stream] 40947204795: Downloading m3u8 information
[debug] Formats sorted by: hasvid, ie_pref, lang, quality, res, fps, hdr:12(7), vcodec:vp9.2(10), acodec, filesize, fs_approx, tbr, vbr, abr, asr, proto, vext, aext, hasaud, source, id
[debug] Default format spec: best/bestvideo+bestaudio
[info] 40947204795: Downloading 1 format(s): 1080p60__source_
[debug] Invoking ffmpeg downloader on "https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8"
[download] Destination: HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4
[debug] ffmpeg command line: ffmpeg -y -loglevel verbose -headers 'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/90.0.4430.93 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-us,en;q=0.5
Sec-Fetch-Mode: navigate
' -i https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8 -c copy -f mpegts 'file:HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4.part'
ffmpeg version 4.2.7-0ubuntu0.1 Copyright (c) 2000-2022 the FFmpeg developers
  built with gcc 9 (Ubuntu 9.4.0-1ubuntu1~20.04.1)
  configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared
  WARNING: library configuration mismatch
  avcodec     configuration: --prefix=/usr --extra-version=0ubuntu0.1 --toolchain=hardened --libdir=/usr/lib/x86_64-linux-gnu --incdir=/usr/include/x86_64-linux-gnu --arch=amd64 --enable-gpl --disable-stripping --enable-avresample --disable-filter=resample --enable-avisynth --enable-gnutls --enable-ladspa --enable-libaom --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libcdio --enable-libcodec2 --enable-libflite --enable-libfontconfig --enable-libfreetype --enable-libfribidi --enable-libgme --enable-libgsm --enable-libjack --enable-libmp3lame --enable-libmysofa --enable-libopenjpeg --enable-libopenmpt --enable-libopus --enable-libpulse --enable-librsvg --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx265 --enable-libxml2 --enable-libxvid --enable-libzmq --enable-libzvbi --enable-lv2 --enable-omx --enable-openal --enable-opencl --enable-opengl --enable-sdl2 --enable-libdc1394 --enable-libdrm --enable-libiec61883 --enable-nvenc --enable-chromaprint --enable-frei0r --enable-libx264 --enable-shared --enable-version3 --disable-doc --disable-programs --enable-libaribb24 --enable-liblensfun --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libtesseract --enable-libvo_amrwbenc
  libavutil      56. 31.100 / 56. 31.100
  libavcodec     58. 54.100 / 58. 54.100
  libavformat    58. 29.100 / 58. 29.100
  libavdevice    58.  8.100 / 58.  8.100
  libavfilter     7. 57.100 /  7. 57.100
  libavresample   4.  0.  0 /  4.  0.  0
  libswscale      5.  5.100 /  5.  5.100
  libswresample   3.  5.100 /  3.  5.100
  libpostproc    55.  5.100 / 55.  5.100
[tcp @ 0x5614b71a8100] Starting connection attempt to 52.223.241.15 port 443
[tcp @ 0x5614b71a8100] Successfully connected to 52.223.241.15 port 443
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-VERSION:3')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-ELAPSED-SECS:19088.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-TOTAL-SECS:19094.006')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-START:TIME-OFFSET=0.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="stitched-ad-1657065717-15049999993",CLASS="twitch-stitched-ad",START-DATE="2022-07-06T00:01:57.093Z",DURATION=15.050,X-TV-TWITCH-AD-URL="https://help.twitch.tv/",X-TV-TWITCH-AD-CLICK-BEACON-ID="click59d93d0e-639f-4184-a199-3c46ba041630",X-TV-TWITCH-AD-CREATIVE-ID="2474283100401",X-TV-TWITCH-AD-LINE-ITEM-ID="2379251610201",X-TV-TWITCH-AD-CLICK-TRACKING-URL="https://example.com",X-TV-TWITCH-AD-POD-LENGTH="1",X-TV-TWITCH-AD-ROLL-TYPE="PREROLL",X-TV-TWITCH-AD-AD-SESSION-ID="de84fefa5c3f442b8cb4194e0d65142d",X-TV-TWITCH-AD-ADVERTISER-ID="5778044420701",X-TV-TWITCH-AD-ORDER-ID="7351234567890",X-TV-TWITCH-AD-LOUDNESS="-90.000000",X-TV-TWITCH-AD-POD-POSITION="0",X-TV-TWITCH-AD-RADS-TOKEN="eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJicm9hZGNhc3RlciI6IjIwNzgxMzM1MiIsInZpZXdlciI6IiIsInNlc3Npb24iOiJkZTg0ZmVmYTVjM2Y0NDJiOGNiNDE5NGUwZDY1MTQyZCIsInZpZGVvX3Nlc3Npb25faWQiOiI0ODk2MDM3OTQxMzQ3OTc4NDEiLCJwbGF0Zm9ybV90eXBlIjoiV0VCIiwiZHVyYXRpb24iOjMwLCJpc192bG0iOmZhbHNlLCJpc19zdGl0Y2hlZCI6dHJ1ZSwiaWF0IjoxNjU3MDY1NzIzLCJpc3MiOiJHcmFuZERBZHMifQ.vk94hV_fQmYgcfuSL7cvL_2K_N-jrVw7YrJuC8_F1dVj7e_Q_oalyqmi5ImKuuZ0Q3t05hpEBYE3_vQaBBxI1Q",X-TV-TWITCH-AD-AD-FORMAT="standard_video_ad"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="source-1657065717",CLASS="twitch-stream-source",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="Amazon|2474283100401"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="trigger-1657065717",CLASS="twitch-trigger",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-TRIGGER-URL="https://video-weaver.dfw02.hls.ttvnw.net/trigger/CqkEEFi7-nuhPilFOswx83Ox6fEac1gS2amSm_xCzGoxkIfEoiG1md2hynPJftFjGw8_gJjL091ACzO70rc4R_BTTzW90bTu5XJ4piUuRcgixzw9UpmlMtAYu2F6lJoGZUxXqCT3kjYJe-T--dnhMTZhqNhFfOzR_Nc4k20G6GUvdSAQ_72jUOLDQaxCEqSnUCfwx_cOGYpq5MMGF3hyJIyQohhCxfaHkhCwlO5crRA6jAHUQpUfZjiXGhuANJ-ZWT8_1hYVknAzlqs1un475zcJ9IRGN3Wc3kRN9ccbYdQtM3QxxRJAytVhRt9tgsd-yudHSCTgc5j8cSqQp_7NpPb6g5GOEooyIwtPbRaWDLcZcylaFIPNSZPLKnnuYvahRgReH8RjtoYHOQXYEeAjWux5PBVbCA0Ca6zFIFx6cl5e0uG0cvx37h_jJIt56aYVd4dk3W7Sj4Eq3ASbwceVEghTIo-LF5uaMUqDXV2zIEO4sMOBQh-szrATUra51EhqRbe6VlgVSp2PLN3yT71_cvJp84YcyAj43PF1eIZLT33AzoJgoXNYq66BcJAeI7dTi5tCUviE3FmIckN_tY88mGtRRcYlCb0dNHsjP53EHuoxFi-IFCkXzqJ47rIhSEfmq7QnpeiGQ_zNu_4MQ_9G2CYGiVWcW-UoZA3bUswz0t9vdtqIuW80roLpJ5LES4fRyBquIFS17VUdFGRxqejf2L-gUwVgJ6oCouZ5rRoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCQBA"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065717-0",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:57.093Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="0"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:57.093Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065719-1",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:59.094Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="1"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:59.094Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:01.096Z')
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoIFs1SGZYrq1TdYzXNyLVHvLUb8k504O3oLjutfiz-ycZLjr_6osdC504-qY45veb0U6SJmlI3GQUzwWnbTI5Fcxd8TowYplAlnbaL6Pb-f7sDygTsiH-V823_fJC1stnHniHiE-uQxSzlJwMMcVk5wzx3OEdujR9LEXp7Ie5JTn9ECQ4jny0FjCmacmvNLT1zyOmJSygo-HmMDqUmV8mW2BLMBbkSrPouFl2-vGbhgLAfkfHPXTrixGKe5UAzqT3Z2MzzEj2rgQIgC-ZnxN29H6JTOhYHv6Ta-KaGbWDnyymgkaEod3fcta1xcV7Ndg-i42wQyV9Hz6e_iOPKZ5PAjY1EMESc5qWGu-Z3oqg7u_Cv_2Qd2Um8u0j_na1L8TQP7hF9n3mQzSg2CwKQg-qetd3WMlYU-h8ocy4FiC2C222rjVd3CvxyPjYJeXfRTUOrOY5U5EM7hEBfnWQitWfvyHrt8x7LFOOuPhh6qChdK8DX4yEXPI5XBK_4nWxyylTyIKKU3wXU1jJiAzef1aOFeSNKF03PkneswzXDs3S2jW-FofJ_gn7xAPBnDhyRS--OVPdxsoms4tHixgejHNyzzUGV04rt7M3iiQGNJyeLB6XIIARwo0h2BjxcgvMt8Hra2UO-Z84mQz3UURyKo5VHZN0Clo6fDygjCvBnz-Cj3NI9h_qCKoHRqtxi4A4AiwzXZkR2yDc83tFe118alMBJb8Ov_Qs4ZTZjY2S9ToO-S9gYyPGMZU7R2ZntjzRFfx7yO247viWUzY2Rpsd17aquMmfWkyG3m6uWoKKlTTHDXGQeiog-fIDCaLmup-t2YhsiPv-sxvmIwwgo3GxKsaiFl0zPHGgxI4TCO84cygUybRh8gASoJdXMtd2VzdC0yMJAE.ts', offset 0, playlist 0
[hls @ 0x5614b71a47c0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoIFs1SGZYrq1TdYzXNyLVHvLUb8k504O3oLjutfiz-ycZLjr_6osdC504-qY45veb0U6SJmlI3GQUzwWnbTI5Fcxd8TowYplAlnbaL6Pb-f7sDygTsiH-V823_fJC1stnHniHiE-uQxSzlJwMMcVk5wzx3OEdujR9LEXp7Ie5JTn9ECQ4jny0FjCmacmvNLT1zyOmJSygo-HmMDqUmV8mW2BLMBbkSrPouFl2-vGbhgLAfkfHPXTrixGKe5UAzqT3Z2MzzEj2rgQIgC-ZnxN29H6JTOhYHv6Ta-KaGbWDnyymgkaEod3fcta1xcV7Ndg-i42wQyV9Hz6e_iOPKZ5PAjY1EMESc5qWGu-Z3oqg7u_Cv_2Qd2Um8u0j_na1L8TQP7hF9n3mQzSg2CwKQg-qetd3WMlYU-h8ocy4FiC2C222rjVd3CvxyPjYJeXfRTUOrOY5U5EM7hEBfnWQitWfvyHrt8x7LFOOuPhh6qChdK8DX4yEXPI5XBK_4nWxyylTyIKKU3wXU1jJiAzef1aOFeSNKF03PkneswzXDs3S2jW-FofJ_gn7xAPBnDhyRS--OVPdxsoms4tHixgejHNyzzUGV04rt7M3iiQGNJyeLB6XIIARwo0h2BjxcgvMt8Hra2UO-Z84mQz3UURyKo5VHZN0Clo6fDygjCvBnz-Cj3NI9h_qCKoHRqtxi4A4AiwzXZkR2yDc83tFe118alMBJb8Ov_Qs4ZTZjY2S9ToO-S9gYyPGMZU7R2ZntjzRFfx7yO247viWUzY2Rpsd17aquMmfWkyG3m6uWoKKlTTHDXGQeiog-fIDCaLmup-t2YhsiPv-sxvmIwwgo3GxKsaiFl0zPHGgxI4TCO84cygUybRh8gASoJdXMtd2VzdC0yMJAE.ts' for reading
[tcp @ 0x5614b746cc00] Starting connection attempt to 52.223.244.254 port 443
[tcp @ 0x5614b746cc00] Successfully connected to 52.223.244.254 port 443
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoQFkal5INnZ4wAfX-wfEQVayDQ_19quoRpQyLdzwbIBdo8bRFA8qnq8BWtGr5TYNcBF7lR8EHHDM8Vrx3fdvxSMQCQUUU19DfphUa_4Be1YEEjrh7lENpUe5AazZuLMvorGJXcg_rYfDHRB98Xu6nvKW3vQ34y_gH2NZ0MOdD-PlIdjxJFLvIh9uNn-GAEoSvvpUkORfqLT1dfFTb1BThCbIy_u_tjV3nylQmgSLLehLRmt_Xdk7Fw7yMiCsq9-OJyClPUzJ7B85-eyWF7JB0EDsfQCaE_6fn6Jlj_ttxgUohZLvGf5GxIFp-ueORlZG-_J1c4JHzTuVL-PnwJh3M3p6y-tMe__8ZHW3HKeBXqNOV1PvRqpP5fgnIRMpQn0qXFeMpBqrXNDZYR7RItv1uPQYKLeXCtE4JzXJh2yb6izhB2JGAbDvck-Pgs75cT3XDuu93mjXqxLHp_YCUdMAAL86cF8zgcB7jE_nzgqTvhlKDI_VQj6noCCTE3rfvY149QK7JHIcqjTLF0drS9ntWUlbdmd5whWDwuwkheP3GlbJCn-cTrq_K1NNpX3rrtPriGgIk4Dj3sW0SyNB9_GNMFqjSPEqRi4g7mWiWx3ZYIMRm1yn3zLd-b2-UdYoM8uaeOOtNYBjITDYuLJAK_vEjIsxAz_r4P61M6D3bkD0IgaPWbCORxsMh2B555cjsBLsnzdR4o9Mt2U9p8A5KuLNQ59v4wCaLawZCWXmZuIb500H5T_YZd2YERFDF_u2WifGv9BoMb1s5iX7dENpe2YYqFjk19t_S36Y9igesGI86J4T6cvZkRJ8Mo8q9Z_PTV5yFEbd2cfuQyLrEx8SRwIka_zHes0dsAaDHvgh2WQ_Ld-_3xA2yABKgl1cy13ZXN0LTIwkAQ.ts', offset 0, playlist 0
[hls @ 0x5614b71a47c0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoQFkal5INnZ4wAfX-wfEQVayDQ_19quoRpQyLdzwbIBdo8bRFA8qnq8BWtGr5TYNcBF7lR8EHHDM8Vrx3fdvxSMQCQUUU19DfphUa_4Be1YEEjrh7lENpUe5AazZuLMvorGJXcg_rYfDHRB98Xu6nvKW3vQ34y_gH2NZ0MOdD-PlIdjxJFLvIh9uNn-GAEoSvvpUkORfqLT1dfFTb1BThCbIy_u_tjV3nylQmgSLLehLRmt_Xdk7Fw7yMiCsq9-OJyClPUzJ7B85-eyWF7JB0EDsfQCaE_6fn6Jlj_ttxgUohZLvGf5GxIFp-ueORlZG-_J1c4JHzTuVL-PnwJh3M3p6y-tMe__8ZHW3HKeBXqNOV1PvRqpP5fgnIRMpQn0qXFeMpBqrXNDZYR7RItv1uPQYKLeXCtE4JzXJh2yb6izhB2JGAbDvck-Pgs75cT3XDuu93mjXqxLHp_YCUdMAAL86cF8zgcB7jE_nzgqTvhlKDI_VQj6noCCTE3rfvY149QK7JHIcqjTLF0drS9ntWUlbdmd5whWDwuwkheP3GlbJCn-cTrq_K1NNpX3rrtPriGgIk4Dj3sW0SyNB9_GNMFqjSPEqRi4g7mWiWx3ZYIMRm1yn3zLd-b2-UdYoM8uaeOOtNYBjITDYuLJAK_vEjIsxAz_r4P61M6D3bkD0IgaPWbCORxsMh2B555cjsBLsnzdR4o9Mt2U9p8A5KuLNQ59v4wCaLawZCWXmZuIb500H5T_YZd2YERFDF_u2WifGv9BoMb1s5iX7dENpe2YYqFjk19t_S36Y9igesGI86J4T6cvZkRJ8Mo8q9Z_PTV5yFEbd2cfuQyLrEx8SRwIka_zHes0dsAaDHvgh2WQ_Ld-_3xA2yABKgl1cy13ZXN0LTIwkAQ.ts' for reading
[tcp @ 0x5614b7281780] Starting connection attempt to 52.223.244.254 port 443
[tcp @ 0x5614b7281780] Successfully connected to 52.223.244.254 port 443
[mpegts @ 0x5614b742b2c0] parser not found for codec timed_id3, packets or times may be invalid.
[h264 @ 0x5614b74d33c0] Reinit context to 1920x1088, pix_fmt: yuv420p
Input #0, hls, from 'https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8':
  Duration: N/A, start: 60.000000, bitrate: N/A
  Program 0 
    Metadata:
      variant_bitrate : 0
    Stream #0:0: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Video: h264 (Main), 1 reference frame ([27][0][0][0] / 0x001B), yuv420p(tv, unknown/bt709/unknown, left), 1920x1080 (1920x1088), 29.97 tbr, 90k tbn, 2k tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:2: Data: timed_id3 (ID3  / 0x20334449)
    Metadata:
      variant_bitrate : 0
[mpegts @ 0x5614b77abf80] muxrate VBR, pcr every 9000 pkts, sdt every 200, pat/pmt every 40 pkts
Output #0, mpegts, to 'file:HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4.part':
  Metadata:
    encoder         : Lavf58.29.100
    Stream #0:0: Video: h264 (Main), 1 reference frame ([27][0][0][0] / 0x001B), yuv420p(tv, unknown/bt709/unknown, left), 1920x1080 (0x0), q=2-31, 29.97 tbr, 90k tbn, 90k tbc
    Metadata:
      variant_bitrate : 0
    Stream #0:1: Audio: aac (LC) ([15][0][0][0] / 0x000F), 44100 Hz, stereo, fltp
    Metadata:
      variant_bitrate : 0
Stream mapping:
  Stream #0:1 -> #0:0 (copy)
  Stream #0:0 -> #0:1 (copy)
Press [q] to stop, [?] for help
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CtgEgbv8faJ0c-ScfGiuW0JjiDdPwQXWlV5cLdgTIPT_Ou4cSnLqW_tqJu-2i_Q2pMtvOzPp76Akv7-q21M6hdjf8VtBqLSixWX9egc7xNveaJ0FEyOT7j75qeCHoI9JUNelD103omjGUFaA7DOjsFLq52XR2dyLO9w-vLmHR9eXy6_JGOLQSyzOWKZNO6Y6Mt-Ksq5Zb43BZIfc0V0C4I_fNY2NyY0nXIxR3POjTsMZp1ppjnySDtaBJH_d4_PzWuukzNUAkuFsXkG6GVKGprmKwNq8HW_2JXTB41Hzxwue4fNZwzD7BmKSSJmxEUjums1mjc_ZLcOOtd2w4zpyO0YHjZJK11_c5WhOVafQCD4AOlfhIAhbubne1n0CMVqHgyySuBMiOPTNagP37xe0WxtjgD4y8NWk6etISCVBK8mmA8q5A6uw1vFM-0Emvh2f-5HeqGDQQJJedv6KVtUzWzKaiuFfh3-7BtZWsU0HnavgOMGJuhWivySupnP0psBjCvM0XgelUj9YAWIllSx7TmsBNWrXqJemtBy3MpjurFqPmKbcJhftTU4OinbWtHdr67pXOrHlrjXgDiWi-inLwLWbQVr9HXqE70ff5y6KKVqRbMc4fayuErR9F2RCmvs6Y__1RbDRvSBtHNz98Bh661ghuNq0Oy4NyDBS9rK53iNoTfZLR8sREi85F1nzLtO7OHpLEIk57WaV-yvjieKnhYU4ImbCaG_2YkjKk6I0zEpmfjQDV7ii8VA4LsDNHY1qSSUB1HzVFoUCySOSosWZw4ZrEsMzGJv1pZZiGgzPJKOn9csnQgkH3iEgASoJdXMtd2VzdC0yMJAE.ts', offset 0, playlist 0
[https @ 0x5614b73ffdc0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CtgEgbv8faJ0c-ScfGiuW0JjiDdPwQXWlV5cLdgTIPT_Ou4cSnLqW_tqJu-2i_Q2pMtvOzPp76Akv7-q21M6hdjf8VtBqLSixWX9egc7xNveaJ0FEyOT7j75qeCHoI9JUNelD103omjGUFaA7DOjsFLq52XR2dyLO9w-vLmHR9eXy6_JGOLQSyzOWKZNO6Y6Mt-Ksq5Zb43BZIfc0V0C4I_fNY2NyY0nXIxR3POjTsMZp1ppjnySDtaBJH_d4_PzWuukzNUAkuFsXkG6GVKGprmKwNq8HW_2JXTB41Hzxwue4fNZwzD7BmKSSJmxEUjums1mjc_ZLcOOtd2w4zpyO0YHjZJK11_c5WhOVafQCD4AOlfhIAhbubne1n0CMVqHgyySuBMiOPTNagP37xe0WxtjgD4y8NWk6etISCVBK8mmA8q5A6uw1vFM-0Emvh2f-5HeqGDQQJJedv6KVtUzWzKaiuFfh3-7BtZWsU0HnavgOMGJuhWivySupnP0psBjCvM0XgelUj9YAWIllSx7TmsBNWrXqJemtBy3MpjurFqPmKbcJhftTU4OinbWtHdr67pXOrHlrjXgDiWi-inLwLWbQVr9HXqE70ff5y6KKVqRbMc4fayuErR9F2RCmvs6Y__1RbDRvSBtHNz98Bh661ghuNq0Oy4NyDBS9rK53iNoTfZLR8sREi85F1nzLtO7OHpLEIk57WaV-yvjieKnhYU4ImbCaG_2YkjKk6I0zEpmfjQDV7ii8VA4LsDNHY1qSSUB1HzVFoUCySOSosWZw4ZrEsMzGJv1pZZiGgzPJKOn9csnQgkH3iEgASoJdXMtd2VzdC0yMJAE.ts' for reading
[tcp @ 0x5614b77c5600] Starting connection attempt to 52.223.241.15 port 443
[tcp @ 0x5614b77c5600] Successfully connected to 52.223.241.15 port 443
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-VERSION:3')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-ELAPSED-SECS:19088.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-TOTAL-SECS:19096.008')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-START:TIME-OFFSET=0.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="stitched-ad-1657065717-15049999993",CLASS="twitch-stitched-ad",START-DATE="2022-07-06T00:01:57.093Z",DURATION=15.050,X-TV-TWITCH-AD-URL="https://help.twitch.tv/",X-TV-TWITCH-AD-CREATIVE-ID="2474283100401",X-TV-TWITCH-AD-CLICK-TRACKING-URL="https://example.com",X-TV-TWITCH-AD-ROLL-TYPE="PREROLL",X-TV-TWITCH-AD-CLICK-BEACON-ID="click59d93d0e-639f-4184-a199-3c46ba041630",X-TV-TWITCH-AD-ADVERTISER-ID="5778044420701",X-TV-TWITCH-AD-AD-FORMAT="standard_video_ad",X-TV-TWITCH-AD-LOUDNESS="-90.000000",X-TV-TWITCH-AD-POD-LENGTH="1",X-TV-TWITCH-AD-ORDER-ID="7351234567890",X-TV-TWITCH-AD-LINE-ITEM-ID="2379251610201",X-TV-TWITCH-AD-POD-POSITION="0",X-TV-TWITCH-AD-RADS-TOKEN="eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJicm9hZGNhc3RlciI6IjIwNzgxMzM1MiIsInZpZXdlciI6IiIsInNlc3Npb24iOiJkZTg0ZmVmYTVjM2Y0NDJiOGNiNDE5NGUwZDY1MTQyZCIsInZpZGVvX3Nlc3Npb25faWQiOiI0ODk2MDM3OTQxMzQ3OTc4NDEiLCJwbGF0Zm9ybV90eXBlIjoiV0VCIiwiZHVyYXRpb24iOjMwLCJpc192bG0iOmZhbHNlLCJpc19zdGl0Y2hlZCI6dHJ1ZSwiaWF0IjoxNjU3MDY1NzIzLCJpc3MiOiJHcmFuZERBZHMifQ.vk94hV_fQmYgcfuSL7cvL_2K_N-jrVw7YrJuC8_F1dVj7e_Q_oalyqmi5ImKuuZ0Q3t05hpEBYE3_vQaBBxI1Q",X-TV-TWITCH-AD-AD-SESSION-ID="de84fefa5c3f442b8cb4194e0d65142d"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="source-1657065717",CLASS="twitch-stream-source",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="Amazon|2474283100401"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="trigger-1657065717",CLASS="twitch-trigger",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-TRIGGER-URL="https://video-weaver.dfw02.hls.ttvnw.net/trigger/CqkEEFi7-nuhPilFOswx83Ox6fEac1gS2amSm_xCzGoxkIfEoiG1md2hynPJftFjGw8_gJjL091ACzO70rc4R_BTTzW90bTu5XJ4piUuRcgixzw9UpmlMtAYu2F6lJoGZUxXqCT3kjYJe-T--dnhMTZhqNhFfOzR_Nc4k20G6GUvdSAQ_72jUOLDQaxCEqSnUCfwx_cOGYpq5MMGF3hyJIyQohhCxfaHkhCwlO5crRA6jAHUQpUfZjiXGhuANJ-ZWT8_1hYVknAzlqs1un475zcJ9IRGN3Wc3kRN9ccbYdQtM3QxxRJAytVhRt9tgsd-yudHSCTgc5j8cSqQp_7NpPb6g5GOEooyIwtPbRaWDLcZcylaFIPNSZPLKnnuYvahRgReH8RjtoYHOQXYEeAjWux5PBVbCA0Ca6zFIFx6cl5e0uG0cvx37h_jJIt56aYVd4dk3W7Sj4Eq3ASbwceVEghTIo-LF5uaMUqDXV2zIEO4sMOBQh-szrATUra51EhqRbe6VlgVSp2PLN3yT71_cvJp84YcyAj43PF1eIZLT33AzoJgoXNYq66BcJAeI7dTi5tCUviE3FmIckN_tY88mGtRRcYlCb0dNHsjP53EHuoxFi-IFCkXzqJ47rIhSEfmq7QnpeiGQ_zNu_4MQ_9G2CYGiVWcW-UoZA3bUswz0t9vdtqIuW80roLpJ5LES4fRyBquIFS17VUdFGRxqejf2L-gUwVgJ6oCouZ5rRoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCQBA"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065717-0",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:57.093Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="0"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:57.093Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065719-1",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:59.094Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="1"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:59.094Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:01.096Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065723-2",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:02:03.098Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="2"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:03.098Z')
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CocFZGQ_PTTjt8o72bksIB-LQc2pGA-ksjR4OQuoD3qTbUQywqbB4bLFBmIbCQLTVRv5EtEqNqmGyrSfhLuSukQqZRlk80OYWLUPszFYAVvITennz6VXY3WcaWpleT0BRn1QAXx2yKghpSyo3v8xQ0y0vSBhbQE-X5JHo1tUtasB9iZCxbzTSdDDFi4optSDeCuI6gI4Tt3m68QlH92GPeXQeLPgaORBhOzc5jK4rIhD3OT138NloIfgOVI0ls9XBu1gNCo8BAQA7ZnzOMiQDcrfI-8H4n0-vJIyGuMys8i1z5pcN_ocA5k1B1mmAT5Vf1_dD2GAlKPCY0DT83BVHilJ2vHhzZooWrJB2nhwBUfqEbLJ2MWwu749n8UDXEvyCrds6FSEFJZnTNS6QnzwzDwvAZn2CZZC1gGy2uiVNXqntd8RTXUpOgjxFn8xaHxBlCg-WQAfCj3DwAPH1lHszrMezkxBQsmM9Gnkotqi7eSBAtThTmtaXdrJms7vXV6z6amUwvCygY7J8kUdj707xvT4sWea6_odDqRm0G8MJ-IbHcfGWRFjEI1iPaNx56HOHEJpd3vrY-7kUhJOWhPlFONxQbXVJmiJ4UzZI4UqoFBz3zKXgNawMSXMPVLnh-4R_qhgJeDep2CYUzFXYzMJEkyetVARGnhV1q-zhGUrtu-BZsz_Y7aPmBITk3KOrjDTeXuGsfK4qeH3uai10TrEIzwBPe_NCG4uEcDabBe19q03EfpkDwKDOvN_3u_iPiq1QDFDPy26ZuiBYG8l9P7DnF6fuXG4q-Y1IhExHCFgCCz0gJm3ENDvd5APdjUbGsEIhQgEvn4Ietuukx_Ez2OFLlOy-sebZmmKTzAaDI_kQnfvj0hCtCfBXSABKgl1cy13ZXN0LTIwkAQ.ts', offset 0, playlist 0
[https @ 0x5614b73ffdc0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CocFZGQ_PTTjt8o72bksIB-LQc2pGA-ksjR4OQuoD3qTbUQywqbB4bLFBmIbCQLTVRv5EtEqNqmGyrSfhLuSukQqZRlk80OYWLUPszFYAVvITennz6VXY3WcaWpleT0BRn1QAXx2yKghpSyo3v8xQ0y0vSBhbQE-X5JHo1tUtasB9iZCxbzTSdDDFi4optSDeCuI6gI4Tt3m68QlH92GPeXQeLPgaORBhOzc5jK4rIhD3OT138NloIfgOVI0ls9XBu1gNCo8BAQA7ZnzOMiQDcrfI-8H4n0-vJIyGuMys8i1z5pcN_ocA5k1B1mmAT5Vf1_dD2GAlKPCY0DT83BVHilJ2vHhzZooWrJB2nhwBUfqEbLJ2MWwu749n8UDXEvyCrds6FSEFJZnTNS6QnzwzDwvAZn2CZZC1gGy2uiVNXqntd8RTXUpOgjxFn8xaHxBlCg-WQAfCj3DwAPH1lHszrMezkxBQsmM9Gnkotqi7eSBAtThTmtaXdrJms7vXV6z6amUwvCygY7J8kUdj707xvT4sWea6_odDqRm0G8MJ-IbHcfGWRFjEI1iPaNx56HOHEJpd3vrY-7kUhJOWhPlFONxQbXVJmiJ4UzZI4UqoFBz3zKXgNawMSXMPVLnh-4R_qhgJeDep2CYUzFXYzMJEkyetVARGnhV1q-zhGUrtu-BZsz_Y7aPmBITk3KOrjDTeXuGsfK4qeH3uai10TrEIzwBPe_NCG4uEcDabBe19q03EfpkDwKDOvN_3u_iPiq1QDFDPy26ZuiBYG8l9P7DnF6fuXG4q-Y1IhExHCFgCCz0gJm3ENDvd5APdjUbGsEIhQgEvn4Ietuukx_Ez2OFLlOy-sebZmmKTzAaDI_kQnfvj0hCtCfBXSABKgl1cy13ZXN0LTIwkAQ.ts' for reading
[https @ 0x5614b77c3b40] Opening 'https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8' for reading
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-VERSION:3')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-ELAPSED-SECS:19088.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-TOTAL-SECS:19098.010')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-START:TIME-OFFSET=0.000')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="stitched-ad-1657065717-15049999993",CLASS="twitch-stitched-ad",START-DATE="2022-07-06T00:01:57.093Z",DURATION=15.050,X-TV-TWITCH-AD-RADS-TOKEN="eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJicm9hZGNhc3RlciI6IjIwNzgxMzM1MiIsInZpZXdlciI6IiIsInNlc3Npb24iOiJkZTg0ZmVmYTVjM2Y0NDJiOGNiNDE5NGUwZDY1MTQyZCIsInZpZGVvX3Nlc3Npb25faWQiOiI0ODk2MDM3OTQxMzQ3OTc4NDEiLCJwbGF0Zm9ybV90eXBlIjoiV0VCIiwiZHVyYXRpb24iOjMwLCJpc192bG0iOmZhbHNlLCJpc19zdGl0Y2hlZCI6dHJ1ZSwiaWF0IjoxNjU3MDY1NzIzLCJpc3MiOiJHcmFuZERBZHMifQ.vk94hV_fQmYgcfuSL7cvL_2K_N-jrVw7YrJuC8_F1dVj7e_Q_oalyqmi5ImKuuZ0Q3t05hpEBYE3_vQaBBxI1Q",X-TV-TWITCH-AD-LINE-ITEM-ID="2379251610201",X-TV-TWITCH-AD-ORDER-ID="7351234567890",X-TV-TWITCH-AD-CLICK-TRACKING-URL="https://example.com",X-TV-TWITCH-AD-LOUDNESS="-90.000000",X-TV-TWITCH-AD-POD-POSITION="0",X-TV-TWITCH-AD-CLICK-BEACON-ID="click59d93d0e-639f-4184-a199-3c46ba041630",X-TV-TWITCH-AD-POD-LENGTH="1",X-TV-TWITCH-AD-URL="https://help.twitch.tv/",X-TV-TWITCH-AD-ADVERTISER-ID="5778044420701",X-TV-TWITCH-AD-CREATIVE-ID="2474283100401",X-TV-TWITCH-AD-AD-FORMAT="standard_video_ad",X-TV-TWITCH-AD-ROLL-TYPE="PREROLL",X-TV-TWITCH-AD-AD-SESSION-ID="de84fefa5c3f442b8cb4194e0d65142d"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="source-1657065717",CLASS="twitch-stream-source",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="Amazon|2474283100401"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="trigger-1657065717",CLASS="twitch-trigger",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-TRIGGER-URL="https://video-weaver.dfw02.hls.ttvnw.net/trigger/CqkEEFi7-nuhPilFOswx83Ox6fEac1gS2amSm_xCzGoxkIfEoiG1md2hynPJftFjGw8_gJjL091ACzO70rc4R_BTTzW90bTu5XJ4piUuRcgixzw9UpmlMtAYu2F6lJoGZUxXqCT3kjYJe-T--dnhMTZhqNhFfOzR_Nc4k20G6GUvdSAQ_72jUOLDQaxCEqSnUCfwx_cOGYpq5MMGF3hyJIyQohhCxfaHkhCwlO5crRA6jAHUQpUfZjiXGhuANJ-ZWT8_1hYVknAzlqs1un475zcJ9IRGN3Wc3kRN9ccbYdQtM3QxxRJAytVhRt9tgsd-yudHSCTgc5j8cSqQp_7NpPb6g5GOEooyIwtPbRaWDLcZcylaFIPNSZPLKnnuYvahRgReH8RjtoYHOQXYEeAjWux5PBVbCA0Ca6zFIFx6cl5e0uG0cvx37h_jJIt56aYVd4dk3W7Sj4Eq3ASbwceVEghTIo-LF5uaMUqDXV2zIEO4sMOBQh-szrATUra51EhqRbe6VlgVSp2PLN3yT71_cvJp84YcyAj43PF1eIZLT33AzoJgoXNYq66BcJAeI7dTi5tCUviE3FmIckN_tY88mGtRRcYlCb0dNHsjP53EHuoxFi-IFCkXzqJ47rIhSEfmq7QnpeiGQ_zNu_4MQ_9G2CYGiVWcW-UoZA3bUswz0t9vdtqIuW80roLpJ5LES4fRyBquIFS17VUdFGRxqejf2L-gUwVgJ6oCouZ5rRoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCQBA"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065717-0",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:57.093Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="0"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:57.093Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065719-1",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:01:59.094Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="1"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:01:59.094Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:01.096Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657065723-2",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:02:03.098Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="2"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:03.098Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:02:05.100Z')


(cut)


[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CugEGSuT42Yfd0EcsGq2rW0Qq4ikLh_Y_BMX3bsswiJCpqkZNa65fwPdIayWXVHf3Xy4YYbAJn4R9O6V-YQ9JD5pTuBHROYyKBeyN5lfSABsVTzsEe2Qi7t2E0zRRc6RSTdp_GaSUm_mOoyNbvr-9yuJ333HCKeH14a3OxSNetYa9ufbwz-2QHrkNhktMlUwv9lS4OWlB1R1wp4aY-BOXgAngJzAryWPPSGsFTOoWuvoloV9wNZihYw9mSM0t36XeRwIskbBK0RmDHDw3EAVqhB73qRzZKodTrivjt-nVIVeTo46lCVy--lSCWuAfcO55bu9g0HwckcrCnI00EJ74wzSLB46cgtTaA9I4KNC6Mtod2t7xxsnlf_quSDaqTRkAEdWcUwuyGgxOD7yN79szCVB3Q3RiDyiFKCEYK2pQHRXpAW9H0KBVktksW72Kl82r4Uy-fe7-XRl1RZRvGIc158IFu7GUz9JvMSyaAm5k4ZkBUT8kGcFR-fZjYEUeKpuwRR0xmAJgUigSjJDTfg2jv6itH3gB0dPUhXm6hvWZS2Qc2BlYZBpRARkrfyosfbatCKwbGxBa0g0Att9Spx0zjqbYjPtbn0fpm_RCwuPeFaq6YQKGjG_WNjf9TOGBNYTZsrY3vgI_Q48i2o3_76KUeDKcpX4_9Ea3SB7WxfhNmW7blqIBZCbVWIJ7PdyF9_d9ash3773gJmmnPbwzF8lv1cjPxbDDGThJ_b2CAtG8DSZKAJPQS3TXvLXAKd8Sng1ldbp3fV9MZFbg0oy097sq9e41t7aPIdB1MRMFSEf6Kt5x961r1DjN4zHBhoM-RbSCrNrYA7Y4301IAEqCXVzLXdlc3QtMjCQBA.ts', offset 0, playlist 0
[https @ 0x5614b73ffdc0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CugEGSuT42Yfd0EcsGq2rW0Qq4ikLh_Y_BMX3bsswiJCpqkZNa65fwPdIayWXVHf3Xy4YYbAJn4R9O6V-YQ9JD5pTuBHROYyKBeyN5lfSABsVTzsEe2Qi7t2E0zRRc6RSTdp_GaSUm_mOoyNbvr-9yuJ333HCKeH14a3OxSNetYa9ufbwz-2QHrkNhktMlUwv9lS4OWlB1R1wp4aY-BOXgAngJzAryWPPSGsFTOoWuvoloV9wNZihYw9mSM0t36XeRwIskbBK0RmDHDw3EAVqhB73qRzZKodTrivjt-nVIVeTo46lCVy--lSCWuAfcO55bu9g0HwckcrCnI00EJ74wzSLB46cgtTaA9I4KNC6Mtod2t7xxsnlf_quSDaqTRkAEdWcUwuyGgxOD7yN79szCVB3Q3RiDyiFKCEYK2pQHRXpAW9H0KBVktksW72Kl82r4Uy-fe7-XRl1RZRvGIc158IFu7GUz9JvMSyaAm5k4ZkBUT8kGcFR-fZjYEUeKpuwRR0xmAJgUigSjJDTfg2jv6itH3gB0dPUhXm6hvWZS2Qc2BlYZBpRARkrfyosfbatCKwbGxBa0g0Att9Spx0zjqbYjPtbn0fpm_RCwuPeFaq6YQKGjG_WNjf9TOGBNYTZsrY3vgI_Q48i2o3_76KUeDKcpX4_9Ea3SB7WxfhNmW7blqIBZCbVWIJ7PdyF9_d9ash3773gJmmnPbwzF8lv1cjPxbDDGThJ_b2CAtG8DSZKAJPQS3TXvLXAKd8Sng1ldbp3fV9MZFbg0oy097sq9e41t7aPIdB1MRMFSEf6Kt5x961r1DjN4zHBhoM-RbSCrNrYA7Y4301IAEqCXVzLXdlc3QtMjCQBA.ts' for reading
[https @ 0x5614b77c3b40] Opening 'https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8' for reading
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-VERSION:3')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-LIVE-SEQUENCE:10076')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-ELAPSED-SECS:20153.050')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-TWITCH-TOTAL-SECS:20187.054')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="f0ab2a2c3db8403c90e35bb306f3ba67",CLASS="twitch-assignment",START-DATE="2022-07-06T00:15:16.142Z",END-ON-NEXT=YES,X-TV-TWITCH-SERVING-ID="f0ab2a2c3db8403c90e35bb306f3ba67",X-TV-TWITCH-NODE="video-edge-c2ab04.dfw02",X-TV-TWITCH-CLUSTER="dfw02"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="source-1657065732",CLASS="twitch-stream-source",START-DATE="2022-07-06T00:02:12.142Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="live"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="trigger-1657065717",CLASS="twitch-trigger",START-DATE="2022-07-06T00:01:57.093Z",END-ON-NEXT=YES,X-TV-TWITCH-TRIGGER-URL="https://video-weaver.dfw02.hls.ttvnw.net/trigger/CqkEEFi7-nuhPilFOswx83Ox6fEac1gS2amSm_xCzGoxkIfEoiG1md2hynPJftFjGw8_gJjL091ACzO70rc4R_BTTzW90bTu5XJ4piUuRcgixzw9UpmlMtAYu2F6lJoGZUxXqCT3kjYJe-T--dnhMTZhqNhFfOzR_Nc4k20G6GUvdSAQ_72jUOLDQaxCEqSnUCfwx_cOGYpq5MMGF3hyJIyQohhCxfaHkhCwlO5crRA6jAHUQpUfZjiXGhuANJ-ZWT8_1hYVknAzlqs1un475zcJ9IRGN3Wc3kRN9ccbYdQtM3QxxRJAytVhRt9tgsd-yudHSCTgc5j8cSqQp_7NpPb6g5GOEooyIwtPbRaWDLcZcylaFIPNSZPLKnnuYvahRgReH8RjtoYHOQXYEeAjWux5PBVbCA0Ca6zFIFx6cl5e0uG0cvx37h_jJIt56aYVd4dk3W7Sj4Eq3ASbwceVEghTIo-LF5uaMUqDXV2zIEO4sMOBQh-szrATUra51EhqRbe6VlgVSp2PLN3yT71_cvJp84YcyAj43PF1eIZLT33AzoJgoXNYq66BcJAeI7dTi5tCUviE3FmIckN_tY88mGtRRcYlCb0dNHsjP53EHuoxFi-IFCkXzqJ47rIhSEfmq7QnpeiGQ_zNu_4MQ_9G2CYGiVWcW-UoZA3bUswz0t9vdtqIuW80roLpJ5LES4fRyBquIFS17VUdFGRxqejf2L-gUwVgJ6oCouZ5rRoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCQBA"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:42.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:44.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:46.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:48.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:50.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:52.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:54.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:56.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:19:58.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:00.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:02.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:04.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:06.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:08.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:10.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="stitched-ad-1657066812-15049999993",CLASS="twitch-stitched-ad",START-DATE="2022-07-06T00:20:12.142Z",DURATION=15.050,X-TV-TWITCH-AD-AD-SESSION-ID="02710d6c088b4fcb8a468b3c64a4e927",X-TV-TWITCH-AD-COMMERCIAL-ID="4930954d4afc4a4b946198114d6f230a",X-TV-TWITCH-AD-CREATIVE-ID="2474283100401",X-TV-TWITCH-AD-LINE-ITEM-ID="2379251610201",X-TV-TWITCH-AD-LOUDNESS="-90.000000",X-TV-TWITCH-AD-ROLL-TYPE="MIDROLL",X-TV-TWITCH-AD-URL="https://help.twitch.tv/",X-TV-TWITCH-AD-ADVERTISER-ID="5778044420701",X-TV-TWITCH-AD-CLICK-TRACKING-URL="https://example.com",X-TV-TWITCH-AD-AD-FORMAT="standard_video_ad",X-TV-TWITCH-AD-POD-POSITION="0",X-TV-TWITCH-AD-RADS-TOKEN="eyJhbGciOiJIUzUxMiIsInR5cCI6IkpXVCJ9.eyJicm9hZGNhc3RlciI6IjIwNzgxMzM1MiIsInZpZXdlciI6IiIsInNlc3Npb24iOiIwMjcxMGQ2YzA4OGI0ZmNiOGE0NjhiM2M2NGE0ZTkyNyIsInZpZGVvX3Nlc3Npb25faWQiOiI0ODk2MDM3OTQxMzQ3OTc4NDEiLCJwbGF0Zm9ybV90eXBlIjoiV0VCIiwiZHVyYXRpb24iOjYwLCJpc192bG0iOmZhbHNlLCJpc19zdGl0Y2hlZCI6dHJ1ZSwiaWF0IjoxNjU3MDY2ODE1LCJpc3MiOiJHcmFuZERBZHMifQ.0Hyvuff11vudnp272NjUtaQ5XsnqysarfOy8FwsSApPS24zUfPbymVP35Uj2jABo2ytu1A-e6rysSHOqqSXAIQ",X-TV-TWITCH-AD-CLICK-BEACON-ID="click2d88829d-4cb0-42f5-80ad-2040f0c5e89f",X-TV-TWITCH-AD-POD-LENGTH="4",X-TV-TWITCH-AD-ORDER-ID="7351234567890"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="source-1657066812",CLASS="twitch-stream-source",START-DATE="2022-07-06T00:20:12.142Z",END-ON-NEXT=YES,X-TV-TWITCH-STREAM-SOURCE="Amazon|2474283100401"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657066812-0",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:20:12.142Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="0"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DISCONTINUITY')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:12.142Z')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-DATERANGE:ID="quartile-1657066814-1",CLASS="twitch-ad-quartile",START-DATE="2022-07-06T00:20:14.144Z",DURATION=2.002,X-TV-TWITCH-AD-QUARTILE="1"')
[hls @ 0x5614b71a47c0] Skip ('#EXT-X-PROGRAM-DATE-TIME:2022-07-06T00:20:14.144Z')
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoIFD9MuUvilN2Ncfkp9VEsXe6gk1EU39nVgKVQqX6KDhmE4LPYDYxvJrMR6I2WIVFV7cjwZ6xM7wAP_B0ORQIZ_zOZpdKLgk6VXUlt_giEENsjcMgDJnqp7L52CI7EDMoFLQ-fw96z1bDrjZbyQd3kY4tPAKfxBmGDup0L-nB7l8rOhD-dwyZB09LGdrmzsmRtqZuRR0-ISwYJDXgE4EKaWHSZXo5iLpkddyjPFuUUxfrP4MjX8TSeV031upCOHFxHC8uJr--Pnin4wNS9NBmJ6ynXOLPIyYMeSWh4cWh5aRMj08njB5F7tM7hn7p2lIaG7AKIIGQfpGkcbTDOkAbQEFdr0o2fA2d4FEGnnxZPx7eXNkkWpHfjlhxjAFy0noh7CvxKeVfLXbH8iNuL0GoQbwJ4byD1A-3dFeMqIzEDAbuOI30f3OEd0YZiyP54920OlImJ-HojsF5iWY9S0kdRSHMKq5KKOX7qnxGsrUZG4bdyKHo7nUaYkXctNJ9AW_tZh8a3_oOlCns3W2jLZ5GwAjw6Ktj5Zk1prtVXItmkhdB10Md3Tz5FI-On_AUuBK7dHpDRDCiksnkUcfAcitDDbfKqDDiOpPHqyXUPAFckmCWEfRj6KCgEzS_Rgqrz_IJxGl7VStmE8Gs6KskAs0AgpZiGEgsFAFTd7T-xNZAre-FJWKBFnLnaW-HwfXXz9Dca2a9QAiNRYWDoE91nPBfkPu6vQ1-h_Ql0E-6iZwmp6ARXy10zXkyF5BAJJ1eg2J4SIici4WcBYSq3q1eATkDd8bVHe0pCwd7XONzrTlMwsYLFoO3637l6LcPM6kgqtH0avV_YdyKXHNvQp9slzd79IKWPJGgyhSHFomwvT1e1Qqa4gASoJdXMtd2VzdC0yMJAE.ts', offset 0, playlist 0
[https @ 0x5614b73ffdc0] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoIFD9MuUvilN2Ncfkp9VEsXe6gk1EU39nVgKVQqX6KDhmE4LPYDYxvJrMR6I2WIVFV7cjwZ6xM7wAP_B0ORQIZ_zOZpdKLgk6VXUlt_giEENsjcMgDJnqp7L52CI7EDMoFLQ-fw96z1bDrjZbyQd3kY4tPAKfxBmGDup0L-nB7l8rOhD-dwyZB09LGdrmzsmRtqZuRR0-ISwYJDXgE4EKaWHSZXo5iLpkddyjPFuUUxfrP4MjX8TSeV031upCOHFxHC8uJr--Pnin4wNS9NBmJ6ynXOLPIyYMeSWh4cWh5aRMj08njB5F7tM7hn7p2lIaG7AKIIGQfpGkcbTDOkAbQEFdr0o2fA2d4FEGnnxZPx7eXNkkWpHfjlhxjAFy0noh7CvxKeVfLXbH8iNuL0GoQbwJ4byD1A-3dFeMqIzEDAbuOI30f3OEd0YZiyP54920OlImJ-HojsF5iWY9S0kdRSHMKq5KKOX7qnxGsrUZG4bdyKHo7nUaYkXctNJ9AW_tZh8a3_oOlCns3W2jLZ5GwAjw6Ktj5Zk1prtVXItmkhdB10Md3Tz5FI-On_AUuBK7dHpDRDCiksnkUcfAcitDDbfKqDDiOpPHqyXUPAFckmCWEfRj6KCgEzS_Rgqrz_IJxGl7VStmE8Gs6KskAs0AgpZiGEgsFAFTd7T-xNZAre-FJWKBFnLnaW-HwfXXz9Dca2a9QAiNRYWDoE91nPBfkPu6vQ1-h_Ql0E-6iZwmp6ARXy10zXkyF5BAJJ1eg2J4SIici4WcBYSq3q1eATkDd8bVHe0pCwd7XONzrTlMwsYLFoO3637l6LcPM6kgqtH0avV_YdyKXHNvQp9slzd79IKWPJGgyhSHFomwvT1e1Qqa4gASoJdXMtd2VzdC0yMJAE.ts' for reading
[hls @ 0x5614b71a47c0] HLS request for url 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoQF3hAhgS0fgo2qx4oX143haOEryVGCb7mln0IP9HalvaTWA7dC8SBP_0Ijwi0Dqqyjynb4qJcsynVvo5aOEfsYBr8pgRpzFhGciMGBYrlKbCbwHBZnFCSYf7fFX93378BKxlqO9mEbCIvVQ2adUXsGyEIQ5iW6T7aguswzK_GEuoEVnnj-uObmDRXFDe0iMMvCdCm2ovBV8k2aPkPcRMlUCZMXB2yJaU8mdQH91d47-Z_QTecSre7KxwmDUpXG52a1xy6PCzm6fl0FIpHaTu9MoIDh_Ae_rGcWo1-NgyIrE61SKD9RvUCfaT50OKFZ9Yl1NwELUqQHnaL6Wd4z-Al5bKGpPWGNTVfF71x6UrIVnYqcA--GJfvJI5SfXoJCnYepFLDRHcahO__6zYJJ5r_OV7LT87QqPBdJaHmr0ih9kJcWzASpF-AwA25aKxFPX8u8qRhXzCppMFdJ6puFaTc06mYlj33ucVIAeO0txb4jQDE8BCKmY7d8F09emyjlapaz5zQjYLEcoybGCJ4rlH58TfFr4CNEdTx4tbdwIl5mcQb5mVYvdAWJHcp82n2jGKiPutnwPczNki7tuuOj-fptvye7-KWgOgqWe03oe9JOtL2ZZHH1Wi2m9x9WI615oz2Hy6OeIAryySSXNyVbIUCyzzjwcBcvAN7hz5t1uRMm1Fd-RrYLYp2TLtLN1P23RxdxmhzY4fMB1E99lMt3jCX98BiRALk-0w97AG4To19f-oBdGdDYVZS0te2M-dO42iURhA4tdHq-fdE-5zQo8ZnEvV0R8YO_7VcXtP-7rrgW0RWu_R0eisK4d9NpjitRID6zPLQSEJlnPwSUT9C0UyUU5Sv1yYUaDDGtsI1mW_6N-p4jtSABKgl1cy13ZXN0LTIwkAQ.ts', offset 0, playlist 0
[https @ 0x5614b727da80] Opening 'https://video-edge-c2ab04.dfw02.abs.hls.ttvnw.net/v1/segment/CoQF3hAhgS0fgo2qx4oX143haOEryVGCb7mln0IP9HalvaTWA7dC8SBP_0Ijwi0Dqqyjynb4qJcsynVvo5aOEfsYBr8pgRpzFhGciMGBYrlKbCbwHBZnFCSYf7fFX93378BKxlqO9mEbCIvVQ2adUXsGyEIQ5iW6T7aguswzK_GEuoEVnnj-uObmDRXFDe0iMMvCdCm2ovBV8k2aPkPcRMlUCZMXB2yJaU8mdQH91d47-Z_QTecSre7KxwmDUpXG52a1xy6PCzm6fl0FIpHaTu9MoIDh_Ae_rGcWo1-NgyIrE61SKD9RvUCfaT50OKFZ9Yl1NwELUqQHnaL6Wd4z-Al5bKGpPWGNTVfF71x6UrIVnYqcA--GJfvJI5SfXoJCnYepFLDRHcahO__6zYJJ5r_OV7LT87QqPBdJaHmr0ih9kJcWzASpF-AwA25aKxFPX8u8qRhXzCppMFdJ6puFaTc06mYlj33ucVIAeO0txb4jQDE8BCKmY7d8F09emyjlapaz5zQjYLEcoybGCJ4rlH58TfFr4CNEdTx4tbdwIl5mcQb5mVYvdAWJHcp82n2jGKiPutnwPczNki7tuuOj-fptvye7-KWgOgqWe03oe9JOtL2ZZHH1Wi2m9x9WI615oz2Hy6OeIAryySSXNyVbIUCyzzjwcBcvAN7hz5t1uRMm1Fd-RrYLYp2TLtLN1P23RxdxmhzY4fMB1E99lMt3jCX98BiRALk-0w97AG4To19f-oBdGdDYVZS0te2M-dO42iURhA4tdHq-fdE-5zQo8ZnEvV0R8YO_7VcXtP-7rrgW0RWu_R0eisK4d9NpjitRID6zPLQSEJlnPwSUT9C0UyUU5Sv1yYUaDDGtsI1mW_6N-p4jtSABKgl1cy13ZXN0LTIwkAQ.ts' for reading
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558470, current: -6030; changing to 1816558471. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558471, current: -3060; changing to 1816558472. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558472, current: 0; changing to 1816558473. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561220, current: 0; changing to 1816561221. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561221, current: 2089; changing to 1816561222. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561222, current: 4179; changing to 1816561223. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561223, current: 6269; changing to 1816561224. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561224, current: 8359; changing to 1816561225. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558473, current: 2970; changing to 1816558474. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558474, current: 6030; changing to 1816558475. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558475, current: 9000; changing to 1816558476. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561225, current: 10449; changing to 1816561226. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561226, current: 12538; changing to 1816561227. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561227, current: 14628; changing to 1816561228. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561228, current: 16718; changing to 1816561229. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:1; previous: 1816561229, current: 18808; changing to 1816561230. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558476, current: 11970; changing to 1816558477. This may result in incorrect timestamps in the output file.
[mpegts @ 0x5614b77abf80] Non-monotonous DTS in output stream 0:0; previous: 1816558477, current: 15030; changing to 1816558478. This may result in incorrect timestamps in the output file.


(cut)



frame=82778 fps= 59 q=-1.0 Lsize= 1145095kB time=05:41:46.01 bitrate= 457.5kbits/s speed=14.5x    
video:1028129kB audio:23734kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 8.863471%
Input file #0 (https://video-weaver.dfw02.hls.ttvnw.net/v1/playlist/CqkET-dYuXeS6k-BZPh_ztk16MVU795_ZOWo6S3PCGl3wB4GJMgNFSdSpu7y5EniLOAk6Fj5RmFIFlIhnUvYyuA_ACoK7MsC18HgYPlvaAb5cRGc_w38LvLRn0zVGdBMf49lQ2p0IQD38ziVbJNehIGxirjpon2gNMIgst1e7w7m_lvowDLuHFnhq1QrijZnm5pynancX71M4rPbN_Oj1nd3zVEIkjxHMNdEZRLihL4WbNx0rnrVOyZmL9R4q6au-Lx0LrlYuJQcO6EV0gYCEuoYCt60JBrO8JHuVDsTkRHzPnjN0yAnMP7cGhHVxiW8zyqM6vavqdV9ayrypWp0ZkgL7HlUAlHLCniJWR_0I731_y580FuRNkfNoDtX_maQCD1o83auebmQHwDqCJC-fnSGBk6R1RdsJWbDekK5-gq7nV78tas-8Ie6ipv2Ty75ws7jdYXSOYxB78hEM2hOLTwRysiFPdGsbttADvttxioUb_O3mFSVqDm7rn6yX355iaw1kJKsJPLCNKKrCfT1hyeN0lm5rDxyuvn587cCpJSCyrNmDBuE_r51tzK0FpGiAAR5jlXZbeFb1wSxlxxNP1NLmkeZXUGHVWpXJfcpe9nnNIX0XJ5jWVB4PWZ_3-kg68vpl3T_PIiRD0kSd5TgwguCr4knKgET3AZboftadrmxhdwvKkVMsXpU45LHKhgcpbxBCGwvw4r4tIUbqMXONqM6rvXxF0tEGmdewxoM52t1l4Iqbln9x2MbIAEqCXVzLXdlc3QtMjCPBA.m3u8):
  Input stream #0:0 (audio): 66136 packets read (24303990 bytes); 
  Input stream #0:1 (video): 82778 packets read (1052804263 bytes); 
  Input stream #0:2 (data): 752 packets read (286510 bytes); 
  Total: 149666 packets (1077394763 bytes) demuxed
Output file #0 (file:HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4.part):
  Output stream #0:0 (video): 82778 packets muxed (1052804263 bytes); 
  Output stream #0:1 (audio): 66136 packets muxed (24303990 bytes); 
  Total: 148914 packets (1077108253 bytes) muxed
[AVIOContext @ 0x5614b78f4d40] Statistics: 0 seeks, 4474 writeouts
[AVIOContext @ 0x5614b7282e40] Statistics: 550852088 bytes read, 0 seeks
[AVIOContext @ 0x5614b74a5e00] Statistics: 568053092 bytes read, 0 seeks
[AVIOContext @ 0x5614b7792740] Statistics: 12539715 bytes read, 0 seeks
[AVIOContext @ 0x5614b71d4e40] Statistics: 5934 bytes read, 0 seeks
Exiting normally, received signal 2.
[ffmpeg] Interrupted by user
[ffmpeg] Downloaded 1172577432 bytes
[download] 100% of 1.09GiB in 23:35
[debug] ffprobe command line: ffprobe -hide_banner -show_format -show_streams -print_format json 'file:HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4'
[FixupM3u8] Fixing MPEG-TS in MP4 container of "HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4"
[debug] ffmpeg command line: ffmpeg -y -loglevel repeat+info -i 'file:HasanAbi (live) 2022-07-05 19_02 [40947204795].mp4' -map 0 -dn -ignore_unknown -c copy -f mp4 -bsf:a aac_adtstoasc -movflags +faststart 'file:HasanAbi (live) 2022-07-05 19_02 [40947204795].temp.mp4'

mnoop avatar Jul 06 '22 03:07 mnoop

I'd like to chime in and say that I have this exact problem. I'm a complete beginner at yt-dlp and ffmpeg and have great difficulty using them, let alone being able to describe the problems I encounter with them in a manner that's useful to others. So I'm really glad mnoop was able to explain the problem so thoroughly.

VLC player will not play it correctly (the audio cuts out every second or so)

I discovered that re-encoding the audio to MP3 will allow VLC to play it without cutting out every second. However, doing this also causes the audio to become desynched from the video. The desynch is not constant. I can click a particular moment in VLC's seek bar and the audio will be synched up to the video at that exact moment, but the audio immediately begins to become desynched as the video continues to play. The audio is slower than the video, which I think is related to this comment by mnoop:

Additionally, the whole video has noticeably lower pitch than what plays in the browser

I don't remember what the pitch of the audio sounded like on Twitch, but a lower pitch would be consistent with my observation that the audio is playing too slow compared to the video.

I'm unable to check in ffplay because it won't play the audio. ffplay gives me a bunch of warning messages. I don't know how useful these are but here are the warnings:

[mov,mp4,m4a,3gp,3g2,mj2 @ 0000000000473740] CTTS invalid0B f=0/0

SDL_OpenAudio (2 channels, 44100 Hz): WASAPI can't initialize audio client: CoInitialize has not been called. SDL_OpenAudio (1 channels, 44100 Hz): WASAPI can't initialize audio client: CoInitialize has not been called. No more combinations to try, audio open failed

I can post my full ffplay output if anyone is interested. I'm holding back from doing so here simply because I don't want to derail this thread with something that might not be helpful.

pin-grid-array avatar Jul 12 '22 03:07 pin-grid-array

I've been trying to find more information about this problem. Apparently, having the audio cut out every other second and sounding lower in pitch is not new or specific to yt-dlp. Rather, it has existed since the days of the original youtube-dl according to this Reddit thread:

https://www.reddit.com/r/youtubedl/comments/jxtl6v/youtubedl_for_twitch_livestream/

There's still no real solution, however. It seems like it might be a problem with VLC player.

pin-grid-array avatar Jul 23 '22 20:07 pin-grid-array

A workaround is to completely disable fixup (using --fixup never). It seems the incompatible audio streams from the ads and the real stream are wrongly concatenated by the FFmpegFixupM3u8PP step. At least with mpv, I can play such a file without the out of sync audio, it just shows warnings and copes.

waldiTM avatar Jul 24 '22 17:07 waldiTM

@waldiTM Sorry for the super delay in responding. Thank you for posting the workaround. I've never used mpv before but using --fixup never does prevent the audio from cutting out and becoming desynched in VLC player.

Other problems still exist—e.g. when the video goes from playing the livestream to playing the commercial, VLC player crashes—but that's to be solved on a different day. Right now I'm just super happy that the recorded livestreams can even play.

pin-grid-array avatar Aug 10 '22 00:08 pin-grid-array

FYI, I think I could recover the audio by doing something like
ffmpeg -i twitch_video.mp4 -map 0:1 -af asetrate=48000,aresample=44100,atempo=44100/48000 fixed_audio.mp3
(I'm not giving instruction for muxing it into a new video, because it's trivial. I also chose mp3 just for testing, adapt it accordingly)

I'm not sure I've recovered the right pitch exactly, I don't have the right ears to judge, but sound OK. Note that it will also keep the same length.

For the devs, it seems to indicate that the issue is just the sample rate of the audio, but again, I'm not 100 % sure. It was a shot in the dark, and it sounds enough OK to me. That's all.

Cqoicebordel avatar Aug 21 '22 11:08 Cqoicebordel

I think the more correct fix would be to skip the ad frames completely, they are empty anyway. This however requires that those frames can be detected automatically. This should give a more continuous stream of correct audio.

waldiTM avatar Aug 21 '22 20:08 waldiTM

This sounds similar to https://issues.guix.gnu.org/37244, where MPEG-TS streams are played with lowered pitch in the IceCat browser (a Firefox derivative), maybe they have the same underlying cause.

emixa-d avatar Sep 29 '22 19:09 emixa-d

@Cqoicebordel Unfortunately your solution did not work for me. When I used ffmpeg -i twitch_video.mp4 -map 0:1 -af asetrate=48000,aresample=44100,atempo=44100/48000 fixed_audio.mp3 the result was an audio file that's approximately 8% longer than the original defective audio.

I tried muxing this new audio file with the original video anyway to see what would happen. The result is that they didn't synch up. The audio is a little too slow for the video, which makes sense because the audio is longer than the video.

pin-grid-array avatar Oct 03 '22 01:10 pin-grid-array

@pin-grid-array I have no idea why it wouldn't work. Maybe the source audio of the video provided by the streamer isn't in 48000 Hz ?
But the 8 % discrepancy matches the 44.1/48 change.
Maybe double check for typos ? Also, beware, it won't match the replay directly from Twitch. Beyond that, I have no other ideas.

Cqoicebordel avatar Oct 03 '22 23:10 Cqoicebordel

@Cqoicebordel You are absolutely right about the streamer's audio sampling rate—it is originally 44100 Hz, not 48000 Hz. Thank you for pointing out that the 8% discrepancy matches that change. Do you have any suggestions about how to fix the audio in my situation?

pin-grid-array avatar Oct 04 '22 05:10 pin-grid-array

@pin-grid-array Mmmh, not sure. It depends on the video you have : if the live you ripped has a "fixed by yt-dlp" rate of 44100 Hz, and the streamer had the same, there shouldn't be any pitch discrepancy in the final video.
If the "fixed" live video has a different rate, it's simple, you use the same command line, but change just the values :
-af asetrate=streamerRate,aresample=liveRate,atempo=liveRate/streamerRate

If they have the same rate… Again, I have no idea. Try different values until it works ? :/

Cqoicebordel avatar Oct 04 '22 11:10 Cqoicebordel

Does --downloader ffmpeg work around the issue?

pukkandan avatar Oct 19 '22 16:10 pukkandan

I did make a test with a streamer that broadcast only licensed music (which mean I can compare the recorded twitch audio to a youtube audio and an actual audio file from local folder), and indeed, switching the rate from 44100 to 48000 in audacity from the extracted audio track from the recorded twitch fix the duration/pitch.

As other pointed out, I suppose that the issue is that the Ads part is set with a different audio track rate than the actual stream, which create this issue of "un-matched" audio configuration. It's also why some streamer/vod doesn't have this issue since they don't have ads appearing in the video.

One simple solution would be to just skip the ads parts like proposed by @waldiTM , or, to split the files when change in the audio/part tracks happen (which would be a more elegant solution globally (not only for Twitch shenanigans))

audacity

EDIT: the other solution would be maybe to implement a flag to skip twitch ads like here: https://www.reddit.com/r/youtubedl/comments/x0gba3/how_to_skip_ads_when_downloading_live_streams_on/

zaykho avatar Oct 29 '22 01:10 zaykho

@pukkandan To help answer your question, I just installed the latest yt-dlp and gyan master build ffmpeg for windows and tested the below commands with 1-2 minutes of downloading and then ctrl+c. I tested playback in VLC, MPC-HC, and MPV.

Case 1: yt-dlp twitch.tv/lirik Video starts with an advertisement block. Audio output: 44100Hz. Skippy audio in VLC, and VLC crashes if seeking around the boundary between the ad and the video. MPV and MPC-HC play with no skipping or crashing, but the audio is noticeably lower pitch than normal. Looks like VLC poorly handles malformed files.

Case 2: yt-dlp twitch.tv/lirik --downloader ffmpeg Same as case 1 above.

Case 3: yt-dlp twitch.tv/lirik --fixup never Same as case 1 above.

Case 4: yt-dlp twitch.tv/lirik --downloader ffmpeg --fixup never Same as case 1 above.

That all seems negative, BUT there's some good news. One of the tests didn't start with an ad, so I had to redo it, but I noticed that its audio was 48000Hz and played fine. That means the way the file is created matters. Then an ad started a few seconds into that test video, but unfortunately the test didn't run long enough to discover if the stream audio was still okay after the ad. I was still able to crash VLC when seeking across the ad boundary, but we know that's VLC's fault because the MPV and MPC-HC players don't crash in that way.

@pin-grid-array I can confirm that your ffmpeg command to resample the audio works to make my test audio track play in VLC without skips, and the pitch sounds correct to my ears. I even seeked around the ad boundary in the mp3 and got no crash in VLC. More progress! :)

In conclusion: the problem with live recorded Twitch streams seems to be caused by Twitch serving advertisement video which is encoded differently than the stream video. Encoding the stream with the different settings of the ad creates a malformed file that is handled differently by different video players. I COULDN'T confirm if starting the encoding properly and then interrupting it with an ad would then break the stream after the ad.

I hope that helps! 🥂 Keep up the good work everyone :)

LuminairPrime avatar Oct 30 '22 18:10 LuminairPrime

I've just downloaded a "rebroadcast" from twitch, not from the beginning so timestamps are wrong. In this example the first 15 seconds are advertisement, video starts at "0:42:48" so the correct ffmpeg command to fix it is this:

ffmpeg -ss 0:42:48 -i twitch_rebroadcast_video.mkv -c:v libx264 -c:a aac -af asetrate=48000,aresample=44100,atempo=48000/48000 twitch_rebroadcast_video_fixed.mkv

ManuLinares avatar Nov 05 '22 03:11 ManuLinares

Ran into this problem with Miku Expo. I'm recording the second showing with --fixup never but the first showing with a special Digital Stars showing is out of sync. If I seek to any point in the video, they start synced, then the audio begins lagging. Not sure how to fix without degrading the source materials at this point.

EDIT: As others have reported mvp plays the video back properly synced :confused:

biggestsonicfan avatar Nov 06 '22 06:11 biggestsonicfan

I've just downloaded a "rebroadcast" from twitch, not from the beginning so timestamps are wrong. In this example the first 15 seconds are advertisement, video starts at "0:42:48" so the correct ffmpeg command to fix it is this:

ffmpeg -ss 0:42:48 -i twitch_rebroadcast_video.mkv -c:v libx264 -c:a aac -af asetrate=48000,aresample=44100,atempo=48000/48000 twitch_rebroadcast_video_fixed.mkv

The problem is that if you record many stream at once that last for long (like 6/8+ hours for 16/20GB), you end up being forced to fix over 80 or 100 GB of video everyday, which is a very long process that take a lot of HDD place.

It would be better if yt-dlp directly fix that on the go, still, thanks for the ffmpeg command.

EDIT: As others have reported mvp plays the video back properly synced

Yes, but you will certainly have distorted audio on other player depending of the rate.

zaykho avatar Nov 06 '22 06:11 zaykho

Yes, but you will certainly have distorted audio on other player depending of the rate.

So is there any way to retroactively "unfix" the fixup yt-dlp did? As if the stream was captured with --fixup never?

EDIT: ~~Which is the "other player"? vlc or mvp?~~ Oh god you're right. I did the ffmpeg command quoted above and the audio is much better, but it's still a tainted copy.

Attempting to untrunc reveals some interesting info:

Info: reading mdat from truncated file ...
Info: Muted ffmpeg to reduce redundant warnings/errors. Use '-do' to see them.
Info: Found 378833 packets ( mp4a: 166460 avc1: 212373 avc1-keyframes: 1776 )
Info: Duration of mp4a: 1h 4min 25s 193ms  (3865193 ms)
Info: Duration of avc1: 59min 11s 133ms  (3551133 ms)

Audio is longer than video...

biggestsonicfan avatar Nov 06 '22 06:11 biggestsonicfan

Beware that the command given by @ManuLinares was for Twitch recording.

For other website (I don't know what Miku Expo is), you may get different audio rate, in example, starting with 48000 then switching to 44100 (witch would be the opposite of what Twitch is doing).

This is why this issue is open. It would be better if yt-dlp could split the file everytime a modification is made on the audio/video track (of course, that option would need to be selected by the user).

zaykho avatar Nov 06 '22 09:11 zaykho

Miku Expo was (is) Twitch. Format output:

yt-dlp -F https://www.twitch.tv/cfm_official
[twitch:stream] cfm_official: Downloading stream GraphQL
[twitch:stream] cfm_official: Downloading stream access token GraphQL
[twitch:stream] 39824308967: Downloading m3u8 information
[info] Available formats for 39824308967:
ID               EXT RESOLUTION FPS │   TBR PROTO │ VCODEC        VBR ACODEC     ABR
────────────────────────────────────────────────────────────────────────────────────
audio_only       mp4 audio only     │  160k m3u8  │ audio only        mp4a.40.2 160k
160p             mp4 284x160     30 │  230k m3u8  │ avc1.4D401F  230k mp4a.40.2   0k
360p             mp4 640x360     30 │  630k m3u8  │ avc1.4D401F  630k mp4a.40.2   0k
480p             mp4 852x480     30 │ 1428k m3u8  │ avc1.4D401F 1428k mp4a.40.2   0k
720p60           mp4 1280x720    60 │ 3423k m3u8  │ avc1.4D401F 3423k mp4a.40.2   0k
1080p60__source_ mp4 1920x1080   60 │ 6886k m3u8  │ avc1.64002A 6886k mp4a.40.2   0k

EDIT: Honestly I should have checked known issues before recording the first time :cry:

biggestsonicfan avatar Nov 06 '22 09:11 biggestsonicfan

But then, the audio shouldn't be longer than the video. Since 48000 is faster than 44100 rate.

EDIT: Honestly I should have checked known issues before recording the first time

If you need immediate solution for the next recording, use streamlink with the command --twitch-disable-ads

https://github.com/streamlink/streamlink

As for fixing already made recording, I didn't tested stuff yet, so I don't know.

zaykho avatar Nov 06 '22 09:11 zaykho

But then, the audio shouldn't be longer than the video. Since 48000 is faster than 44100 rate.

The original capture, not the resampled one.

EDIT: I began using streamlink, but it has a 2 hour limit, useless for Miku Expo. The 2nd airing of Miku Expo has already begun really.

biggestsonicfan avatar Nov 06 '22 09:11 biggestsonicfan

But then, the audio shouldn't be longer than the video. Since 48000 is faster than 44100 rate.

The original capture, not the resampled one.

Well, then it's normal, since the audio was kept at a lower speed.

What is the duration of the video and audio (original and resampled) ?

EDIT: I began using streamlink, but it has a 2 hour limit, useless for Miku Expo. The 2nd airing of Miku Expo has already begun really.

ohhhh are you sure about this ? I don't find anything on google.

zaykho avatar Nov 06 '22 09:11 zaykho

I've slightly modified the ffmpeg command to squeeze out maximum quality from the original capture: ffmpeg -i "MIKU EXPO Rewind+ - CircusP - beat_shobon.mp4" -c copy -c:a aac -af asetrate=48000,aresample=44100,atempo=48000/48000 -b:a 160k -strict experimental "MIKU EXPO Rewind+ - CircusP - beat_shobon-testfix2.mp4" -c copy ensures the video is 1:1 (also makes the encoding a lot faster). I also knew -b:a 160k from the stream list, and ffmpeg was defaulting it to 128k.

Miku Expo schedule, 2nd airing began at 5:30 PM JST (1:30AM PST) and it's currently 5:47 PM JST.

EDIT: Yikes, yt-dlp --fixup never --format 1080p60__source_ https://www.twitch.tv/cfm_official did not work, same issue.

EDIT2: Was --fixup never supposed to come after the URL? If it doesn't matter, why is this the suggested fix when it didn't fix the issue?

EDIT3: The plot thickens, the pitch is correct in mpv, so the --fixup never did work but the file is just about worthless.

EDIT4: Extracting the audio from a sample that didn't have --fixup never, the mp4 has Lavf59.27.100 as encoder settings and extracting the audio it has Lavf59.16.100 the encoder settings? Why?

EDIT5: The rabbit keeps getting deeper... the original bad stream when loaded up in Windows Media Player, the video is glitchy and garbled, the audio is also delayed. The "Movies & TV" app mimics mpv by playing everything in sync with deeper pitch.

EDIT6: I bet dollars to doughnuts if I had subscribed and passed a cookie to yt-dlp I wouldn't have had this issue...

biggestsonicfan avatar Nov 06 '22 09:11 biggestsonicfan

Alright, posting in a new post because my last one was basically ranting.... an extremely interesting observation here:

My ffmpeg command ffmpeg -i "MIKU EXPO Rewind+ - CircusP - beat_shobon.mp4" -c copy -c:a aac -af asetrate=48000,aresample=44100,atempo=48000/48000 -b:a 160k -strict experimental "MIKU EXPO Rewind+ - CircusP - beat_shobon-testfix2.mp4" only works on a cut segment from the stream. It will not work on the originally grabbed file.

I've also modified my command to include a better resampler: ffmpeg -i "MIKU EXPO Rewind+ - CircusP - beat_shobon-testfix.mp4" -c copy -c:a aac -af asetrate=48000,aresample=resampler=soxr:precision=33,atempo=48000/48000 -b:a 160k -strict experimental "MIKU EXPO Rewind+ - CircusP-testfix2.mp4"

I am just so upset over all this. This was only airing once and unless someone used streamlink to grab every segment, all that I will ever have is this tainted version, not suitable for release.

Like what even was this, regression? Will two streams captured at the same time with yt-dlp and youtube-dl have the same issue?

EDIT: I did take a small sample of the Miku Expo stream with streamlink, however, and it is showing a sample rate of 48000 Hz... is there some sort of off-by-one error that yt-dlp is just selecting the wrong sample rate? Or does it all boil down to the ad preroll trick yt-dlp into thinking the rate is 44100 Hz?

FINAL EDIT: To absolutely squeeze every last drop of quality out of this bleeding heart, here's what I did. Extracted the segment I wanted to keep from the stream using LosslessCut, then exported the m4a stream from that split, ran over to Windows and used FAAD2 to decode the AAC to a WAV file. I then used Header Investigator to only change the bitrate from 44100Hz to 48000Hz without changing any data. Then using the same ffmpeg that encoded the original stream ran ffmpeg -i "wavfile.wav" -c:a aac -b:a 160k "wavfile.m4a". The resulting m4a file was only 0.2 MiB smaller than the original extracted m4a file. I then jumped back to LosslessCut and merged the cut footage video file and disabled it's audio track and inserted the newly converted m4a as an additional track.

The video I have converted is an animation of faces "singing" while the lyrics appear on the screen. Reviewing the final cut of this footage shows a near-flawless sync to the original broadcast.

biggestsonicfan avatar Nov 07 '22 00:11 biggestsonicfan

Thanks @biggestsonicfan for your investigation!

It helped me to notice that i didn't need to do any asetrate,aresample,or atempo in my case.

I used to be able to do this: mpv --title=mpvFullscreen -fs $(/usr/local/bin/youtube-dl -f best -g "ytsearch1:al jazeera english live")

But since switching to yt-dlp, i now need to do something like:

/usr/local/bin/yt-dlp $(/usr/local/bin/yt-dlp -g "ytsearch1:al jazeera english live" ) --downloader ffmpeg --downloader-args 'ffmpeg:-c:a copy -ar 48000' - -o - | mpv - -force-seekable=yes -fs

The outer yt-dlp processes the segments in the m3u8 playlist URL, applies the audio rate header change without resampling, and produces a stream for mpv to play... Hope it helps someone!

ivans5 avatar Feb 27 '23 11:02 ivans5

I've found you out you can take the audio stream out of the mp4 file that yt-dlp saves first: ffmpeg -i input.mp4 -c:a copy output.aac and then fix the resulting ADTS bitstream with just: sed -i -e 's/\xFF\xF1\x50\x80/\xFF\xF1\x4C\x80/g' output.aac. This edits the headers of the frames in the bitstream, replacing a 0x50 (meaning samplerate of 44100) to a 4C (meaning 48000). This is an in-place solution that doesn't require re-encoding the file and works. VLC doesn't have any trouble playing the file.

ngc6302h avatar Mar 26 '23 03:03 ngc6302h

sed -i -e 's/\xFF\xF1\x50\x80/\xFF\xF1\x4C\x80/g' output.aac Thanks for this! Worked like a charm. Personally, I had to put LC_ALL=C in front of it, or else I got the error RE error: illegal byte sequence, but then it worked perfectly!

andjustinforall avatar Mar 26 '23 11:03 andjustinforall

Someone should try to implement @ngc6302h's workaround as a fixup postprocessor

pukkandan avatar Mar 26 '23 12:03 pukkandan

actually this seems fixed for me after doing yt-dlp pip3 update

ivans5 avatar Mar 28 '23 22:03 ivans5