VideoHelp Forum




+ Reply to Thread
Results 1 to 25 of 25
  1. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    I would like to record SVT-Play live streams starting at a certain time and ending after a set time period like a VCR does

    I have used yt-dlp to download already played shows and that works fine, but in order to record from an on-line stream it does not work.

    So I looked at svtplay-dl instead but it seems not to have any instructions on how to do it (or I did not find any for live streams)...

    Question:
    Is it possible to use any of these downloaders to create a software VCR and record the live stream from one time to another?

    I want to do this using an Ubuntu Server PC command line script (no GUI) acting as a VCR but outputting mp4 files...

    Advice please....
    Quote Quote  
  2. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    I tried this but it did not work:

    Code:
    $ svtplay-dl -l -c 2 -o test3.mp4 https://www.svtplay.se/kanaler/svt1?start=auto
    INFO: Outfile: test3.mp4.mp4
    INFO: Selected to download dash, bitrate: 6073 format: h264
    ERROR: This is a live DASH stream, and they are not supported.
    It seems like it is unable to grab the m3u8 URL from the live stream link in the URL...

    And with this it gets further:

    Code:
    $ svtplay-dl -l -c 2 -q 2079 -o test3.mp4 https://www.svtplay.se/kanaler/svt1
    INFO: Outfile: test3.mp4.ts
    INFO: Selected to download hls, bitrate: 2079 format: h264
    [39/39][===================================================================================================================================] DU: 0:02:01
    INFO: Merge audio and video into test3.mp4.mp4
    INFO: Merging done, removing old files.
    But now there is a video WITHOUT sound being produced....
    Last edited by BosseB; 24th Dec 2023 at 08:02.
    Quote Quote  
  3. Banned
    Join Date
    Apr 2022
    Location
    Hong Kong
    Search Comp PM
    Use N_m3u8DL-RE.
    Code:
    N_m3u8DL-RE.exe "https://svt-secure-d.akamaized.net/secure/svt1/master-fmp4.m3u8?defaultSubLang=sv" --custom-hls-key 95bbffecef552b1f889b6fec5468fe59 --live-real-time-merge --live-record-limit <TIME>
    And then replace <TIME> with your willing recording time e.g. 01:00:00
    Quote Quote  
  4. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Meanwhile I have moved to an RPi5B running Pi-OS 64 bit and installed svtplay-dl on that device.
    Then used this procedure to download:

    1) Check the available quality settings:
    Code:
    $ svtplay-dl --list-quality --verbose https://www.svtplay.se/kanaler/svt1
    DEBUG [1703430354.0725944] /usr/bin/svtplay-dl/svtplay_dl/utils/getmedia.py/get_media: version: 3.0-2
    DEBUG [1703430354.0734994] /usr/bin/svtplay-dl/svtplay_dl/service/__init__.py/__init__: service: svtplay
    DEBUG [1703430354.0735729] /usr/bin/svtplay-dl/svtplay_dl/utils/http.py/request: HTTP getting 'https://www.svtplay.se/kanaler/svt1'
    DEBUG [1703430354.0751626] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_new_conn: Starting new HTTPS connection (1): www.svtplay.se:443
    DEBUG [1703430354.1794937] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_make_request: https://www.svtplay.se:443 "GET /kanaler/svt1 HTTP/1.1" 200 62474
    DEBUG [1703430354.199741] /usr/bin/svtplay-dl/svtplay_dl/utils/http.py/request: HTTP getting 'https://api.svt.se/video/ch-svt1'
    DEBUG [1703430354.2007291] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_new_conn: Starting new HTTPS connection (1): api.svt.se:443
    DEBUG [1703430354.3574812] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_make_request: https://api.svt.se:443 "GET /video/ch-svt1 HTTP/1.1" 200 618
    DEBUG [1703430354.3580196] /usr/bin/svtplay-dl/svtplay_dl/utils/http.py/request: HTTP getting 'https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1'
    DEBUG [1703430354.3588517] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_new_conn: Starting new HTTPS connection (1): svt1-d.akamaized.net:443
    DEBUG [1703430354.4468145] /home/bosse/.local/lib/python3.11/site-packages/urllib3/connectionpool.py/_make_request: https://svt1-d.akamaized.net:443 "GET /se/svt1/manifest.mpd?defaultSubLang=1 HTTP/1.1" 200 1154
    DEBUG [1703430354.4800034] /usr/lib/python3/dist-packages/chardet/mbcharsetprober.py/feed: EUC-TW Taiwan prober hit error at byte 3116
    DEBUG [1703430354.4931893] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: utf-8  confidence = 0.505
    DEBUG [1703430354.493238] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: SHIFT_JIS Japanese confidence = 0.01
    DEBUG [1703430354.4932673] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-JP Japanese confidence = 0.01
    DEBUG [1703430354.4932907] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: GB2312 Chinese confidence = 0.01
    DEBUG [1703430354.4933138] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-KR Korean confidence = 0.01
    DEBUG [1703430354.493335] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: CP949 Korean confidence = 0.01
    DEBUG [1703430354.4933565] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: Big5 Chinese confidence = 0.01
    DEBUG [1703430354.4933774] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-TW not active
    DEBUG [1703430354.4934015] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: Johab Korean confidence = 0.01
    DEBUG [1703430354.493427] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1251 Russian confidence = 0.01
    DEBUG [1703430354.4934459] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: KOI8-R Russian confidence = 0.01
    DEBUG [1703430354.493464] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-5 Russian confidence = 0.01
    DEBUG [1703430354.4934824] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: MacCyrillic Russian confidence = 0.01
    DEBUG [1703430354.4935002] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: IBM866 Russian confidence = 0.01
    DEBUG [1703430354.493518] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: IBM855 Russian confidence = 0.01
    DEBUG [1703430354.4935358] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-7 Greek confidence = 0.01
    DEBUG [1703430354.4935548] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1253 Greek confidence = 0.01
    DEBUG [1703430354.4935734] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-5 Bulgarian confidence = 0.01
    DEBUG [1703430354.4935913] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1251 Bulgarian confidence = 0.01
    DEBUG [1703430354.4936137] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: TIS-620 Thai confidence = 0.06746647725678065
    DEBUG [1703430354.4936342] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-9 Turkish confidence = 0.6817801903631296
    DEBUG [1703430354.4936595] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.0
    DEBUG [1703430354.4936821] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.09527400295120751
    DEBUG [1703430354.4937034] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.0
    DEBUG [1703430354.526855] /usr/lib/python3/dist-packages/chardet/mbcharsetprober.py/feed: EUC-TW Taiwan prober hit error at byte 3116
    DEBUG [1703430354.5397887] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: utf-8  confidence = 0.505
    DEBUG [1703430354.5398273] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: SHIFT_JIS Japanese confidence = 0.01
    DEBUG [1703430354.5398552] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-JP Japanese confidence = 0.01
    DEBUG [1703430354.5398767] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: GB2312 Chinese confidence = 0.01
    DEBUG [1703430354.5398972] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-KR Korean confidence = 0.01
    DEBUG [1703430354.5399175] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: CP949 Korean confidence = 0.01
    DEBUG [1703430354.539937] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: Big5 Chinese confidence = 0.01
    DEBUG [1703430354.539955] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: EUC-TW not active
    DEBUG [1703430354.539977] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: Johab Korean confidence = 0.01
    DEBUG [1703430354.5399985] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1251 Russian confidence = 0.01
    DEBUG [1703430354.540017] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: KOI8-R Russian confidence = 0.01
    DEBUG [1703430354.5400348] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-5 Russian confidence = 0.01
    DEBUG [1703430354.5400524] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: MacCyrillic Russian confidence = 0.01
    DEBUG [1703430354.5400703] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: IBM866 Russian confidence = 0.01
    DEBUG [1703430354.5400882] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: IBM855 Russian confidence = 0.01
    DEBUG [1703430354.5401058] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-7 Greek confidence = 0.01
    DEBUG [1703430354.5401237] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1253 Greek confidence = 0.01
    DEBUG [1703430354.5401413] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-5 Bulgarian confidence = 0.01
    DEBUG [1703430354.540159] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1251 Bulgarian confidence = 0.01
    DEBUG [1703430354.5401778] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: TIS-620 Thai confidence = 0.06746647725678065
    DEBUG [1703430354.5401978] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: ISO-8859-9 Turkish confidence = 0.6817801903631296
    DEBUG [1703430354.5402203] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.0
    DEBUG [1703430354.540241] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.09527400295120751
    DEBUG [1703430354.540262] /usr/lib/python3/dist-packages/chardet/charsetgroupprober.py/get_confidence: windows-1255 Hebrew confidence = 0.0
    Traceback (most recent call last):
      File "<frozen runpy>", line 198, in _run_module_as_main
      File "<frozen runpy>", line 88, in _run_code
      File "/usr/bin/svtplay-dl/__main__.py", line 15, in <module>
      File "/usr/bin/svtplay-dl/svtplay_dl/__init__.py", line 69, in main
      File "/usr/bin/svtplay-dl/svtplay_dl/utils/getmedia.py", line 61, in get_media
      File "/usr/bin/svtplay-dl/svtplay_dl/utils/getmedia.py", line 111, in get_one_media
      File "/usr/bin/svtplay-dl/svtplay_dl/service/svtplay.py", line 61, in get
      File "/usr/bin/svtplay-dl/svtplay_dl/service/svtplay.py", line 119, in _get_video
      File "/usr/bin/svtplay-dl/svtplay_dl/fetcher/dash.py", line 181, in dashparse
      File "/usr/bin/svtplay-dl/svtplay_dl/fetcher/dash.py", line 196, in _dashparse
      File "/usr/bin/svtplay-dl/svtplay_dl/fetcher/dash.py", line 265, in parse_dates
    ValueError: Can't parse date format: 2023-12-16T10:02:59.386390211Z
    2) Select a useful quality:
    Could not do this because of the above error!

    On this machine the versions used are:
    Code:
    $ apt policy ffmpeg
    ffmpeg:
      Installed: 8:5.1.4-0+rpt1+deb12u1
    
     $ apt policy svtplay-dl
    svtplay-dl:
      Installed: 3.0-2
    So the ffmpeg version is way above the ubuntu server's:

    Code:
    $ apt policy ffmpeg
    ffmpeg:
      Installed: 7:4.3.2-0york0~18.04
    
    $ apt policy svtplay-dl
    svtplay-dl:
      Installed: 4.69
    But that seems only to have made things worse since svtplay-dl crashes on even the simplest command on the RPi5B
    Last edited by BosseB; 24th Dec 2023 at 10:07.
    Quote Quote  
  5. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    File "/usr/bin/svtplay-dl/svtplay_dl/fetcher/dash.py", line 265, in parse_dates
    ValueError: Can't parse date format: 2023-12-16T10:02:59.386390211Z
    Note: This happens only on the Raspberry Pi5B running Pi-OS 64 bit!
    On Ubuntu server it works to display the various quality values available.

    To me (not being a python literate) this looks like some kind of oversight in the code file
    /usr/bin/svtplay-dl/svtplay_dl/fetcher/dash.py
    where there is a case problem interpreting the returned value from a system call or else the Pi-OS 64 bit operates differently...

    But the strange thing is that it refers to a file that does not even exist...
    Quote Quote  
  6. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Going back to the Ubuntu Server where svtplay-dl partially works:

    What is the problem with this command:

    Code:
    $ svtplay-dl -l -c 2 -q 2079 -o testsvt13 https://www.svtplay.se/kanaler/svt1
    It is supposed to record from the live stream for 2 minutes ( -l -c 2 ) using quality 2079
    Code:
    INFO: 2079       HLS      h264     960x540      sv                   main
    What happens is that it records the video fine but there is no audio in the resulting mp4 file!!

    So what am I missing in order to get audio into the file?

    EDIT:
    I tried on a different computer with this command to not be specific about the quality setting:
    Code:
    svtplay-dl -l -c 1 -o svtplay-test4 -v -P hls  --output-format mp4 https://www.svtplay.se/kanaler/svt1
    But the result is the same:
    VIDEO: Fine good quality mp4
    AUDIO: Non-existing/muted

    In this latter computer the version of ffmpeg is higher:
    Code:
    $ apt policy ffmpeg
    ffmpeg:
      Installed: 8:5.1.4-0+rpt1+deb12u1
      Candidate: 8:5.1.4-0+rpt1+deb12u1
    than on the server I want to use:
    Code:
    $ apt policy ffmpeg
    ffmpeg:
      Installed: 7:4.3.2-0york0~18.04
      Candidate: 7:4.3.2-0york0~18.04
    So this shows that ffmpeg version is not the reason for the failure as suggested here...
    Last edited by BosseB; 28th Dec 2023 at 04:36.
    Quote Quote  
  7. Why did you ignore the below?

    Originally Posted by CrymanChen View Post
    Use N_m3u8DL-RE.
    Code:
    N_m3u8DL-RE.exe "https://svt-secure-d.akamaized.net/secure/svt1/master-fmp4.m3u8?defaultSubLang=sv" --custom-hls-key 95bbffecef552b1f889b6fec5468fe59 --live-real-time-merge --live-record-limit <TIME>
    And then replace <TIME> with your willing recording time e.g. 01:00:00
    Quote Quote  
  8. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by Quint View Post
    Why did you ignore the below?

    Originally Posted by CrymanChen View Post
    Use N_m3u8DL-RE.
    Code:
    N_m3u8DL-RE.exe "https://svt-secure-d.akamaized.net/secure/svt1/master-fmp4.m3u8?defaultSubLang=sv" --custom-hls-key 95bbffecef552b1f889b6fec5468fe59 --live-real-time-merge --live-record-limit <TIME>
    And then replace <TIME> with your willing recording time e.g. 01:00:00
    Because:
    1) I could not figure out how to install it by reading the GitHub page
    2) It seems to be documented mainly in some Asian language I cannot read
    3) Since the quote refers to a program with the .exe ending (N_m3u8DL-RE.exe) it seems to be a Windows thing.
    I am on Ubuntu Server/Pi-OS so whatever is there must be Linux Debian style...
    Quote Quote  
  9. N_m3u8DL-RE is a command line tool

    There is a Linux version.

    https://github.com/nilaoda/N_m3u8DL-RE/releases
    Quote Quote  
  10. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by CrymanChen View Post
    Use N_m3u8DL-RE.
    Code:
    N_m3u8DL-RE.exe "https://svt-secure-d.akamaized.net/secure/svt1/master-fmp4.m3u8?defaultSubLang=sv" --custom-hls-key 95bbffecef552b1f889b6fec5468fe59 --live-real-time-merge --live-record-limit <TIME>
    And then replace <TIME> with your willing recording time e.g. 01:00:00
    If I look at your suggested command I find that to use it one has to extract the m3u8 URL the stream uses and this is typically the most difficult part of the whole thing. If your application does not deal with that internally then it is of no use, I believe.
    If one has access to the m3u8 URL then ffmpeg by itself can be used to download the stream.

    I have downloaded the linux-arm64 version and expanded it on my RPi5B with Pi_OS 64 bit.
    Then I tested it like this:

    Code:
    $ ./N_m3u8DL-RE https://www.svtplay.se/kanaler/svt1 --save-name svt1.mp4 --live-real-time-merge --live-record-limit 00:02:00
    18:15:07.837 INFO : N_m3u8DL-RE (Beta version) 20230628
    18:15:07.855 INFO : Loading URL: https://www.svtplay.se/kanaler/svt1
    18:15:08.426 ERROR: Input not supported:
    The URL I used is the URL for the stream that is running continuously.
    To use it one has to run it at the correct start time (can be arranged using the linux at command).
    Then one also has to set the duration (possibly the --live-record-limit argument)

    But this does not work as shown above, it looks like it really needs the m3u8 URL of the actual stream and this is not available.
    So it has to be extracted by the downloader application, in this case N_m3u8DL-RE, because it is way too difficult to do for a user, especially if one wants to set up a download starting in some future time.

    So my conclusion is that the suggested downloader application is not usable for live streams.
    Quote Quote  
  11. Originally Posted by BosseB View Post
    ...
    I find that to use it one has to extract the m3u8 URL the stream uses and this is typically the most difficult part of the whole thing. If your application does not deal with that internally then it is of no use, I believe.
    ...
    Oh... There are throughout more difficult parts, f. e. to find out the DRM(Widevine-)key... You will have to read a lot (stickies!), good luck!
    Quote Quote  
  12. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    And that is why I prefer to use downloaders that when given the page URL can find the player on the page and dig down into the page code to find the actual stream there. Often an m3u8 URL.
    Once found it is what you send to ffmpeg to do the download job itself.

    yt-dlp is one that often can do this, even though it fails on svt streams.
    Quote Quote  
  13. You're making things a little more difficult than they need to be.

    Each live channel on SVT Play has its own DASH manifest, and they're seemingly static. There's no token or signature. So once you have it, you have it. No need to extract it every single time:
    Code:
    SVT1: https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1
    SVT2: https://svt2-d.akamaized.net/se/svt2/manifest.mpd?defaultSubLang=1
    SVT Barn: https://svtb-d.akamaized.net/se/svtb/manifest.mpd?defaultSubLang=1
    N_m3u8DL-RE not only comes with live "recording" capabilities, but you can also set it to start at a specific time. So it literally does everything you're asking for.

    This will give you a recording of ~1 minute that starts at 2023-12-28 22:15:
    Code:
    N_m3u8DL-RE "https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1" --save-name svt1 --auto-select -M format=mkv:muxer=mkvmerge --live-real-time-merge --live-record-limit 00:01:00 --task-start-at "20231228221500"
    Image
    [Attachment 75828 - Click to enlarge]
    Quote Quote  
  14. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    OK, I tested your command after modifying the start time.
    The execution ran in steps and printed output at intervals of maybe 10 seconds.
    At the end there were these messages:

    Code:
    $ N_m3u8DL-RE "https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1" --save-name svt1 --auto-select -M format=mkv:muxer=mkvmerge --live-real-time-merge --live-record-limit 00:01:00 --task-start-at "20231228231300"
    23:12:47.461 INFO : N_m3u8DL-RE (Beta version) 20230628
    23:12:47.476 INFO : The program will wait until: 12/28/2023 11:13:00 PM
    23:13:00.478 INFO : Loading URL: https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1
    23:13:00.604 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP
    23:13:00.604 INFO : Parsing streams...
    23:13:00.609 WARN : Writing meta json
    23:13:00.610 INFO : Extracted, there are 9 streams, with 6 basic streams, 2 audio streams, 1 subtitle streams
    23:13:00.610 INFO : Vid 1280x720 | 5943 Kbps | v4 | avc1.640020 | 10 Segments | ~00m31s
    23:13:00.610 INFO : Vid 1280x720 | 4794 Kbps | v3 | avc1.640020 | 10 Segments | ~00m31s
    23:13:00.610 INFO : Vid 960x540 | 2480 Kbps | v2 | avc1.64001F | 10 Segments | ~00m31s
    23:13:00.610 INFO : Vid 640x360 | 1092 Kbps | v1 | avc1.64001F | 10 Segments | ~00m31s
    23:13:00.613 INFO : Vid 416x234 | 406 Kbps | v0 | avc1.42C015 | 10 Segments | ~00m31s
    23:13:00.613 INFO : Vid 160x90 | 10 Kbps | t0 | 10 Segments | ~00m31s
    23:13:00.614 INFO : Aud a0 | 130 Kbps | mp4a.40.2 | sv | 2CH | 10 Segments | ~00m31s
    23:13:00.614 INFO : Aud a1 | 130 Kbps | mp4a.40.2 | sv-x-tal | 2CH | 10 Segments | ~00m31s
    23:13:00.614 INFO : Sub s0 | sv | stpp | 10 Segments | ~00m31s
    23:13:00.614 INFO : Parsing streams...
    23:13:00.614 WARN : Live stream found
    23:13:00.615 INFO : Selected streams:
    23:13:00.615 INFO : Vid 1280x720 | 5943 Kbps | v4 | avc1.640020 | 10 Segments | ~00m31s
    23:13:00.615 INFO : Aud a0 | 130 Kbps | mp4a.40.2 | sv | 2CH | 10 Segments | ~00m31s
    23:13:00.615 INFO : Aud a1 | 130 Kbps | mp4a.40.2 | sv-x-tal | 2CH | 10 Segments | ~00m31s
    23:13:00.615 INFO : Sub s0 | sv | stpp | 10 Segments | ~00m31s
    23:13:00.615 WARN : Writing meta json
    23:13:00.616 INFO : Save Name: svt1
    23:13:00.616 WARN : MuxAfterDone is detected, binary merging is automatically enabled
    23:13:00.616 WARN : set refresh interval to 13 seconds
    23:13:00.623 WARN : Live recording duration limit: 01m00s
    23:13:00.837 WARN : Reading media info...
    23:13:00.882 WARN : Reading media info...
    23:13:00.898 WARN : Reading media info...
    23:13:01.070 WARN : Reading media info...
    23:13:01.074 INFO : [0x1]: Video, h264 (avc1), 1280x720
    23:13:01.136 INFO : [0x1]: Data, none (stpp) (default)
    23:13:01.283 INFO : [0x1]: Audio, aac (mp4a), 125 kb/s
    23:13:01.283 INFO : [0x1]: Audio, aac (mp4a), 125 kb/s
    23:13:39.687 WARN : Live recording limit reached, will stop recording soon
    23:13:39.948 WARN : svt1.mp4
    23:13:39.948 WARN : svt1.sv.m4a
    23:13:39.948 WARN : svt1.sv-x-tal.m4a
    23:13:39.948 WARN : svt1.sv.srt
    23:13:39.948 WARN : Muxing to svt1.MUX.mkv
    23:13:40.098 ERROR: Mux failed
    23:13:40.098 ERROR: Failed
    And these files had been created:
    Code:
    drwxr-xr-x  6 bosse bosse      4096 2023-12-28 23:13 svt1
    -rw-r--r--  1 bosse bosse  47282800 2023-12-28 23:13 svt1.mp4
    -rw-r--r--  1 bosse bosse   1175269 2023-12-28 23:13 svt1.sv.m4a
    -rw-r--r--  1 bosse bosse        32 2023-12-28 23:13 svt1.sv.srt
    -rw-r--r--  1 bosse bosse   1175247 2023-12-28 23:13 svt1.sv-x-tal.m4a
    So I tried to play the svt1.mp4 file and it had great video (just like when using svtplay-dl).
    BUT it also lacked all vestiges of audio! Nothing could be heard when the people in the video talked etc...

    So it seems like the exact same problem is present as with svtplay-dl, only video and no audio in the output mp4 file...

    But since there were extra files left over I tried to play a few of them and the svt1.sv.m4a file does contain audio for the video but is not merged into the mp4 file!

    So why did the downloader not combine the video and audio when creating the final mp4???

    Extra info:
    This is the ffmpeg version on this device:
    ffmpeg version 5.1.4-0+rpt1+deb12u1 Copyright (c) 2000-2023 the FFmpeg developers
    built with gcc 12 (Debian 12.2.0-14)
    Last edited by BosseB; 28th Dec 2023 at 16:38. Reason: Added ffmpeg info
    Quote Quote  
  15. Originally Posted by BosseB View Post
    So why did the downloader not combine the video and audio when creating the final mp4???
    The muxing probably fails because of the ttml subtitles. Add "-ds all" to drop them and see if it works.

    The N_m3u8DL-RE --help section is in English, so be sure to check that out as well.
    Quote Quote  
  16. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by stabbedbybrick View Post
    Originally Posted by BosseB View Post
    So why did the downloader not combine the video and audio when creating the final mp4???
    The muxing probably fails because of the ttml subtitles. Add "-ds all" to drop them and see if it works.

    The N_m3u8DL-RE --help section is in English, so be sure to check that out as well.
    Regarding the help I have written the help output to a file so I can read it better.

    Re: the extra argument "-ds all":

    The argument helped in the following way:
    The output file now contains both video and audio

    But the file itself is NOT an mp4 file anymore instead it it is an mkv file.

    My system expects mp4 files for further processing and in the help I do not find any way to specify the output format of the video...
    And I see no way in the help output to specify the output file type, just the name (without extension).
    How can I force the mp4 file format?

    This is the session output this time:
    Code:
    $ N_m3u8DL-RE "https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1" --save-name svt1test --auto-select -M format=mkv:muxer=mkvmerge -ds all --live-real-time-merge --live-record-limit 00:01:00 --task-start-at "20231229102500"
    10:24:42.435 INFO : N_m3u8DL-RE (Beta version) 20230628
    10:24:42.460 INFO : The program will wait until: 12/29/2023 10:25:00 AM
    10:25:00.463 INFO : Loading URL: https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1
    10:25:00.548 INFO : Content Matched: Dynamic Adaptive Streaming over HTTP
    10:25:00.549 INFO : Parsing streams...
    10:25:00.559 WARN : Writing meta json
    10:25:00.560 INFO : Extracted, there are 9 streams, with 6 basic streams, 2 audio streams, 1 subtitle streams
    10:25:00.560 INFO : Vid 1280x720 | 5943 Kbps | v4 | avc1.640020 | 10 Segments | ~00m31s
    10:25:00.561 INFO : Vid 1280x720 | 4794 Kbps | v3 | avc1.640020 | 10 Segments | ~00m31s
    10:25:00.561 INFO : Vid 960x540 | 2480 Kbps | v2 | avc1.64001F | 10 Segments | ~00m31s
    10:25:00.570 INFO : Vid 640x360 | 1092 Kbps | v1 | avc1.64001F | 10 Segments | ~00m31s
    10:25:00.570 INFO : Vid 416x234 | 406 Kbps | v0 | avc1.42C015 | 10 Segments | ~00m31s
    10:25:00.570 INFO : Vid 160x90 | 10 Kbps | t0 | 10 Segments | ~00m31s
    10:25:00.570 INFO : Aud a0 | 130 Kbps | mp4a.40.2 | sv | 2CH | 10 Segments | ~00m31s
    10:25:00.570 INFO : Aud a1 | 130 Kbps | mp4a.40.2 | sv-x-tal | 2CH | 10 Segments | ~00m31s
    10:25:00.570 INFO : Sub s0 | sv | stpp | 10 Segments | ~00m31s
    10:25:00.571 INFO : Parsing streams...
    10:25:00.571 WARN : Live stream found
    10:25:00.571 INFO : Selected streams:
    10:25:00.572 INFO : Vid 1280x720 | 5943 Kbps | v4 | avc1.640020 | 10 Segments | ~00m31s
    10:25:00.572 INFO : Aud a0 | 130 Kbps | mp4a.40.2 | sv | 2CH | 10 Segments | ~00m31s
    10:25:00.572 INFO : Aud a1 | 130 Kbps | mp4a.40.2 | sv-x-tal | 2CH | 10 Segments | ~00m31s
    10:25:00.572 WARN : Writing meta json
    10:25:00.572 INFO : Save Name: svt1test
    10:25:00.573 WARN : MuxAfterDone is detected, binary merging is automatically enabled
    10:25:00.573 WARN : set refresh interval to 13 seconds
    10:25:00.573 WARN : Live recording duration limit: 01m00s
    10:25:00.816 WARN : Reading media info...
    10:25:00.828 WARN : Reading media info...
    10:25:00.829 WARN : Reading media info...
    10:25:01.007 INFO : [0x1]: Audio, aac (mp4a), 125 kb/s
    10:25:01.013 INFO : [0x1]: Video, h264 (avc1), 1280x720
    10:25:01.014 INFO : [0x1]: Audio, aac (mp4a), 125 kb/s
    10:25:39.632 WARN : Live recording limit reached, will stop recording soon
    10:25:39.632 WARN : Live recording limit reached, will stop recording soon
    10:25:39.632 WARN : Live recording limit reached, will stop recording soon
    10:25:39.948 WARN : svt1test.mp4
    10:25:39.949 WARN : svt1test.sv.m4a
    10:25:39.949 WARN : svt1test.sv-x-tal.m4a
    10:25:39.949 WARN : Muxing to svt1test.MUX.mkv
    10:25:40.139 WARN : Cleaning files...   <=== It does NOT delete all temp files! They are still there.
    10:25:40.143 WARN : Rename to svt1test.mkv  <=== WHY DOES IT DO THIS? I need mp4 output
    10:25:40.143 INFO : Done
    Another issue:
    After the download has finished then the terminal output when I type in commands are gone!
    The typed text is invisible but reaches the system so I can type in ls -l and hit enter to see the list of files.

    I had to open a new SSH session to see what I am typing as commands!
    What can have happened to cause this? It is the first time ever I have seen anything like that...
    But if I re-run the command in the new SSH window without the argument--task-start-at "20231229102500", then at the end I still have control over the terminal...

    Question
    How can I get rid of all the extra cruft created during the download?
    It creates a sub-directory containing some files and also a number of work (?) files in the current directory, which are not removed in the end.
    Quote Quote  
  17. How to specify format is literally in the command: "format=mp4".

    All settings are available through --help. Experiment until you find a setup that works for you.
    Quote Quote  
  18. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by stabbedbybrick View Post
    How to specify format is literally in the command: "format=mp4".

    All settings are available through --help. Experiment until you find a setup that works for you.
    I have been experimenting a lot today but whenever I use "-M format=mp4" I get a video without audio!
    Only way to get audio is with the mkv argument you showed.

    I have also experienced recordings for 1 minute which show up in video players like VLC as being several hours long and where the progress bar cannot be used...

    Seems like I have to give up on this as well...
    Quote Quote  
  19. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    I figured out how to use streamlink to retrieve the videos using the URL's shown above in this thread:
    Code:
    SVT1: https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1
    SVT2: https://svt2-d.akamaized.net/se/svt2/manifest.mpd?defaultSubLang=1
    SVT Barn: https://svtb-d.akamaized.net/se/svtb/manifest.mpd?defaultSubLang=1
    The final solution in my other thread.
    Quote Quote  
  20. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by BosseB View Post
    I figured out how to use streamlink to retrieve the videos using the URL's shown above in this thread:
    Code:
    SVT1: https://svt1-d.akamaized.net/se/svt1/manifest.mpd?defaultSubLang=1
    SVT2: https://svt2-d.akamaized.net/se/svt2/manifest.mpd?defaultSubLang=1
    SVT Barn: https://svtb-d.akamaized.net/se/svtb/manifest.mpd?defaultSubLang=1
    The final solution in my other thread.
    FOLLOW-UP QUESTION:
    How do I get the akamaized url for Kunskapskanalen and SVT24?
    Code:
    https://www.svtplay.se/kanaler/kunskapskanalen?start=auto
    https://www.svtplay.se/kanaler/svt24?start=auto
    It seems like the 3 url's shown above differ only by the abbreviations svt1, svt2 and svtb.
    What is the abbreviation for SVT Kunskapskanalen and SVT24??
    Quote Quote  
  21. Kunskapskanalen:
    Code:
    https://svtk-c.akamaized.net/se/svtk/manifest.mpd?defaultSubLang=1
    SVT24:
    Code:
    https://svtb-c.akamaized.net/se/svtb/manifest.mpd?defaultSubLang=1
    Quote Quote  
  22. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    Originally Posted by stabbedbybrick View Post
    Kunskapskanalen:
    Code:
    https://svtk-c.akamaized.net/se/svtk/manifest.mpd?defaultSubLang=1
    SVT24:
    Code:
    https://svtb-c.akamaized.net/se/svtb/manifest.mpd?defaultSubLang=1
    Thanks a lot!
    I have now included these URL's in my script and tested them and they work just fine like the three you posted before.

    How did you find them? I tried by using curl and grep but I got no hit...
    Quote Quote  
  23. Member
    Join Date
    Feb 2021
    Location
    Sweden
    Search Comp PM
    GREAT!
    Thanks a lot, will be added to my notes!
    Quote Quote  



Similar Threads

Visit our sponsor! Try DVDFab and backup Blu-rays!