beyond live - streams

notes

requirements

download

  1. open your browser and enable vineless
  2. if you aren't on windows+edge, open UserAgent-Switcher and set your user agent to the latest windows+edge string
  3. navigate to beyondlive.com and enter the concert venue
  4. take note of the three digit number id in the page url
  5. open Get-cookies.txt-LOCALLY and export your beyond live cookies
  6. open vineless, locate the page url in the keys section and click + to expand the entry
  7. copy the manifest url and key
  8. install the required module
  9. pip install requests
  10. run beyondlive.py with the following options
  11. python beyondlive.py --mpd <url> --key <key> --id <id> --cookies <cookies_file>
  12. when the stream has finished, use ctrl+c to end the script

post process

at this point you should have all the segments downloaded, split up into a large number of directories. these segments now have to be concatenated and merged to become a playable file.

  1. make directories for the video and audio streams
  2. mkdir vid aud
  3. copy the init files into their respective directories
  4. cp beyondlive_*_001/0_*/_init_dec.mp4 vid
    cp beyondlive_*_001/1_*/_init_dec.mp4 aud
    
  5. copy the segments into their respective directories, skipping over any duplicates
  6. find . -type d -name '0_*' | sort | while read -r f; do cp --update=none "$f"/*.m4s vid; done
    find . -type d -name '1_*' | sort | while read -r f; do cp --update=none "$f"/*.m4s aud; done
    
  7. concatenate the segments onto the init file
  8. cat vid/*.m4s >> vid/_init_dec.mp4
    cat aud/*.m4s >> aud/_init_dec.mp4
  9. merge the streams
  10. ffmpeg -i vid/_init_dec.mp4 -i aud/_init_dec.mp4 -c copy merge.mp4

post process on windows

windows users will have to use the powershell equivalents of the above commands in order to post process the segments.

  1. make directories for the video and audio streams
  2. mkdir vid aud
  3. copy the init files into their respective directories
  4. Get-ChildItem beyondlive_*_001/0_*/_init_dec.mp4 | Copy-Item -Destination vid
    Get-ChildItem beyondlive_*_001/1_*/_init_dec.mp4 | Copy-Item -Destination aud
    
  5. copy the segments into their respective directories, skipping over any duplicates
  6. Get-ChildItem -Recurse -Directory -Filter '0_*' | Sort-Object Name | ForEach-Object { Get-ChildItem -Path $_.FullName -Filter '*.m4s' } | Copy-Item -Destination vid -ErrorAction SilentlyContinue
    Get-ChildItem -Recurse -Directory -Filter '1_*' | Sort-Object Name | ForEach-Object { Get-ChildItem -Path $_.FullName -Filter '*.m4s' } | Copy-Item -Destination aud -ErrorAction SilentlyContinue
    
  7. concatenate the segments onto the init file
  8. Get-ChildItem vid/*.m4s | Sort-Object Name | ForEach-Object { [System.IO.File]::AppendAllBytes('vid/_init_dec.mp4', [System.IO.File]::ReadAllBytes($_.FullName)) }
    Get-ChildItem aud/*.m4s | Sort-Object Name | ForEach-Object { [System.IO.File]::AppendAllBytes('aud/_init_dec.mp4', [System.IO.File]::ReadAllBytes($_.FullName)) }
    
  9. merge the streams
  10. ffmpeg -i vid/_init_dec.mp4 -i aud/_init_dec.mp4 -c copy merge.mp4

note: I don't use windows so these commands are currently untested.

subtitles

although subtitles will be downloaded and segments can be merged with the same method used for audio and video, I have not yet found a reliable way of converting them to a standard format such as srt.