Download TS files from video stream

前端 未结 14 1571
遥遥无期
遥遥无期 2020-12-22 17:55

Videos on most sites make use of progressive downloading, which means that the video is downloaded to my computer, and easy to trace. There are lots of extensions out there

相关标签:
14条回答
  • 2020-12-22 18:24

    Easy youtube-dl example on macOS (in the command line Terminal; Windows supported too):

    # List variants (resolutions/bitrates)
    $ youtube-dl -F https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8
    [generic] f08e80da-bf1d-4e3d-8899-f0f6155f6efa: Requesting header
    [generic] f08e80da-bf1d-4e3d-8899-f0f6155f6efa: Downloading m3u8 information
    [info] Available formats for f08e80da-bf1d-4e3d-8899-f0f6155f6efa:
    format code           extension  resolution note
    audio-English_stereo  mp4        audio only [en] 
    628                   mp4        320x180     628k , avc1.42c00d, video only
    928                   mp4        480x270     928k , avc1.42c00d, video only
    1728                  mp4        640x360    1728k , avc1.42c00d, video only
    2528                  mp4        960x540    2528k , avc1.42c00d, video only
    4928                  mp4        1280x720   4928k , avc1.42c00d, video only
    9728                  mp4        1920x1080  9728k , avc1.42c00d, video only (best)
    
    # Choose a variant to download, and use its format code below
    $ youtube-dl --format 628 https://bitdash-a.akamaihd.net/content/MI201109210084_1/m3u8s/f08e80da-bf1d-4e3d-8899-f0f6155f6efa.m3u8
    ...
    frame= 5257 fps=193 q=-1.0 Lsize=    6746kB time=00:03:30.16 bitrate= 263.0kbits/s speed=7.73x    
    video:6679kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.998669%
    [ffmpeg] Downloaded 6907810 bytes
    [download] 100% of 6.59MiB in 00:29
    
    $ open f08e80da-bf1d-4e3d-8899-f0f6155f6efa-f08e80da-bf1d-4e3d-8899-f0f6155f6efa.mp4
    

    Use the browser's Developer Tools > Network to get the m3u8 (HLS manifest) URL when starting a streaming video.

    0 讨论(0)
  • 2020-12-22 18:24

    ---> Open Firefox

    ---> open page the video

    ---> Play Video

    Click ---> Open menu

    Click ---> open web developer tools

    Click ---> Developer Toolbar

    Click ---> Network

    ---> Go to Filter URLs ---> Write "M3u8" --> for Find "m3u8"

    ---> Copy URL ".m3u8"

    ========================

    Now Download software "m3u8x" ----> https://tajaribsoft-en.blogspot.com/2016/06/m3u8x.html#downloadx12

    ---> open software "m3u8x"

    ---> paste URL "m3u8"

    ---> chose option "One...One"

    ---> Click Download

    ---> Start Download

    ========================

    image "Open menu" ===>

    a busy cat

    image "Developer Toolbar" ===>

    a busy cat

    image "m3u8x" ===>

    0 讨论(0)
  • 2020-12-22 18:25
    • Download VLC Player
    • Media
    • Convert/Save
    • Network (Tab)
    • Enter URL of [playlist].m3u8
    • Follow remaining wizard steps to set the stream destination (File)
    • Set appropriate transcoding profile (MP4 at the time of this answer)
    • Watch video
    0 讨论(0)
  • 2020-12-22 18:29

    using this post

    • Open Firefox / chrome

    • open page the video

    • Play Video

    • click F12 on keyboard -> network

    • in Filter URLs ts

    • copy link of ts

    • remove index and ts extension from link

      for example:

      http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000_454.ts
      

      will be copied as

       http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000
      

    insert in below script under LINK

    #!/bin/bash
    
    # insert here urls
    LINK=(
    
    'http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000' # replace this with your url 
    
    )
    
    mkdir my-videos
    cd mkdir my-videos
    
    CNT=0
    
    for URL in ${LINK[@]}
    do
      # create folder for streaming media
      CNT=$((CNT + 1))
      mkdir $CNT
      cd $CNT
    
      (
    
       DIR="${URL##*/}"
    
       # download all videos
       wget $URL'_'{0..1200}.ts
    
       # link videos
       echo $DIR'_'{0..1200}.ts | tr " " "\n" > tslist
       while read line; do cat $line >> $CNT.mp4; done < tslist
    
       rm -rf media* tslist
       ) &
       cd ..
    
    done
    
    wait
    

    EDIT

    adding script in python - runs on windows and linux

    import urllib.request
    import os
    import shutil
    
    my_lessons = [
       #  http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000_454.ts
        "http://vid.com/vod/mp4:vod/PRV/Yg0WGN_6.mp4/media_b180000" # replace this with your url 
    
    
    ]
    
    lesson_dir = "my_vids"
    try:
        shutil.rmtree(lesson_dir)
    except:
        print "ok"
    
    os.makedirs(lesson_dir)
    os.chdir(lesson_dir)
    
    for lesson, dwn_link in enumerate(my_lessons):
        print ("downloading lesson  %d.. " % (lesson), dwn_link)
        file_name = '%04d.mp4' % lesson
        f = open(file_name, 'ab')
        for x in range(0, 1200):
            try:
                rsp = urllib.request.urlopen(dwn_link + "_%04d.ts" % (x) )
            except:
                break
            file_name = '%d.mp4' % lesson
            print "downloading  %d.ts" % (x)
            f.write(rsp.read())
        f.close()
    
    
    
    print "done good luck!! ==================  "
    

    if the script fails, or downloads empty file, try removing the try wrap to see what fails

    0 讨论(0)
  • 2020-12-22 18:35
    • Get one Link from Network tab of developer tools
    • Remove index and ts extension from link

    With following script you can save movie to Videos folder

    Example usage:

    download-video.sh https://url.com/video.mp4 video-name
    

    download-video.sh

    #!/bin/bash
    LINK=$1
    NAME=$2
    
    START=0
    END=2000
    
    help()
    {
        echo "download-video.sh <url> <output-name>"
        echo "<url>: x.mp4 (without .ts)"
        echo "<output-name>: x (without .mp4)"
    } 
    
    create_folders()
    {
        # create folder for streaming media
        cd ~/Videos
        mkdir download-videos
        cd download-videos
    }
    
    print_variables()
    {
        echo "Execute Download with following parameters"
        echo "Link $LINK"
        echo "Name $NAME"
    }
    
    check_video()
    {
        i=$START
        while [[ $i -le $END ]]
        do
            URL=$LINK'-'$i.ts
            STATUS_CODE=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' $URL)
            if [ "$STATUS_CODE" == "200" ]; then
                break
            fi
            ((i = i + 1))
        done
    
        if [ "$STATUS_CODE" == "200" ]; then
            START=$i
            echo "START is $START"
        else 
            echo "File not found"
        fi
    } 
    
    
    download_video()
    {
        i=$START
        e=$END
        while [[ $i -le $END ]]
        do
            URL=$LINK'-'$i.ts
            STATUS_CODE=$(curl -o /dev/null --silent --head --write-out '%{http_code}\n' $URL)
            if [ "$STATUS_CODE" != "200" ]; then
                break
            fi
            wget $URL
            e=$i
            ((i = i + 1))
        done
    
        END=$e
    }
    
    concat_videos()
    {
        DIR="${LINK##*/}"
    
        i=$START
        echo "i is $i"
        while [[ $i -le $END ]]
        do
            FILE=$DIR'-'$i.ts
            echo $FILE | tr " " "\n" >> tslist
            ((i = i + 1))
        done
        while read line; 
        do 
            echo "gugu"$line
            cat $line >> $NAME.mp4; 
        done < tslist
    
        rm *.ts tslist
    }
    
    if [ "$1" == "" ]; then
        echo "No video url provided"
        help
    else
        LINK=$1
        if [ "$2" == "" ]; then
            echo "No video output-name provided"
            help
        else
            NAME=$2
            create_folders
            print_variables
            check_video
            download_video
            concat_videos
        fi
    fi
    
    0 讨论(0)
  • 2020-12-22 18:36

    I needed to download HLS video and audio streams from a e-learning portal with session-protected content with application/mp2t MIME content type.

    Manually copying all authentication headers into the downloading scripts would be too cumbersome.

    But the task got much easier with help of Video DownloadHelper Firefox extension and it's Companion App. It allowed to download both m3u8 playlists with TS chunks lists and actual video and audio streams into mp4 files via a click of button while correctly preserving authentication headers.

    The resulting separate video and audio files can be merged with ffmpeg:

    ffmpeg -i video.mp4 -i audio.mp4 -acodec copy -vcodec copy video-and-audio.mp4 
    

    or with mp4box:

    mp4box -add audio.mp4#audio video.mp4 -out video-and-audio.mp4
    

    Tried Video DownloadHelper Chrome extension too, but it didn't work for me.

    0 讨论(0)
提交回复
热议问题