Download TS-bestanden van videostream

Video’s op de meeste sites maken gebruik van progressief downloaden, wat betekent dat de video naar mijn computer wordt gedownload en gemakkelijk te traceren is. Er zijn veel extensies om dit te doen, en zelfs in de dev-tools is dit eenvoudig te doen.

Op bepaalde websites worden video’s gestreamd. wat betekent dat we niet slechts 1 bestand downloaden, we downloaden veel kleine pakketten. In de dev-tools zijn deze pakketten te traceren. De website waarin ik geïnteresseerd ben is: http://www.rtlxl.nl/#!/goede-tijden-slechte-tijden-10821/c8e2bff7-5a5c-45cb-be2b-4b3b3e866ffb.

-De pakketten hebben de extensie .TS.

-Pakketten kunnen worden opgeslagen door de url van het verzoek te kopiëren

-Ik kan deze bestanden niet afspelen.

Ik moet iets verkeerd hebben gedaan, of ik mis iets. Ik wil weten wat ik fout doe. Ik wil een Chrome-extensie maken voor persoonlijk gebruik die de url’s van alle pakketten vastlegt. als ik alle url’s heb, wil ik ze doorgeven aan een php-script dat ze downloadt en ffmpeg gebruikt om ze in een mp4-bestand te plakken.

Help me alsjeblieft om de pakketten te krijgen.


Antwoord 1, autoriteit 100%

Toevoeging aan @aalhanane en @Micheal Espinola Jr

Als m3u8x is alleen beschikbaar voor Windows.
Zodra je de m3u8-url hebt geïdentificeerd, kun je ook Jdownloader2 of VLC Media Player gebruiken om de stream te downloaden en samen te voegen.

Jdownloader2:
Kopieer gewoon de m3u8-url wanneer de Jdownloader is geopend. Het herkent de stream op het tabblad Linkgrabber.

VLC 3:

Open netwerk -> Plak m3u8 url -> Vinkje Streamoutput -> Selecteer Instellingen.
Kies uitvoerbestand, container, video- en audiocodering.
(bijv. output.mp4, container: mpeg4, video: h264, audio: mp4a)
Stream starten. De video wordt niet afgespeeld, maar gecodeerd, waarbij de voortgang van de codering wordt weergegeven door de voortgangsbalk voor het afspelen van de video te verplaatsen.

WAARSCHUWING: eerder voorgestelde Chrome-extensie Stream Video Downloaderbevat malware. Zie reddit-bericht


Antwoord 2, autoriteit 98%

Eenvoudig youtube-dlvoorbeeld op macOS (in de opdrachtregel Terminal; Windows ook ondersteund):

# 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

Gebruik de ontwikkelaarstools van de browser > Netwerk om de m3u8 (HLS-manifest) URL te krijgen bij het starten van een streaming video.


Antwoord 3, autoriteit 68%

—> Firefox openen

—> open pagina de video

—> Video afspelen

Klik —> Menu openen

Klik —> open hulpprogramma’s voor webontwikkelaars

Klik —> Ontwikkelaarswerkbalk

Klik —> Netwerk

—> Ga naar URL’s filteren —> Schrijf “M3u8” –> voor Zoek “m3u8”

—> Kopieer URL “.m3u8”

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

Download nu software “m3u8x” —-> https://tajaribsoft-en.blogspot.com/2016/06/m3u8x .html#downloadx12

—> open software “m3u8x”

—> plak URL “m3u8”

—> koos optie “One…One”

—> Klik op Downloaden

—> Download starten

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

afbeelding “Menu openen” ===>

afbeelding “Ontwikkelaarswerkbalk” ===>

afbeelding “m3u8x” ===>


Antwoord 4, autoriteit 58%

met behulp van ditbericht

  • Firefox / chrome openen

  • open de video

  • Video afspelen

  • klik op F12op toetsenbord -> network

  • in Filter URLsts

  • link van ts kopiëren

  • index en ts-extensie uit link verwijderen

    bijvoorbeeld:

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

    wordt gekopieerd als

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

voeg in onderstaand script in onder 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

BEWERKEN

script toevoegen in python – draait op Windows en 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!! ==================  "

Als het script faalt of een leeg bestand downloadt, probeer dan de try-wrap te verwijderen om te zien wat er niet lukt


Antwoord 5, autoriteit 28%

Je moet alle transportstream-bestanden (.ts) downloaden en ze samenvoegen tot een enkele mpeg om ze af te spelen. Transportstreams zoals deze hebben bijbehorende afspeellijstbestanden (.m3u8) die alle .ts-bestanden weergeven die u moet downloaden en samenvoegen. Indien beschikbaar, is er mogelijk een secundaire .m3u8-afspeellijst die de stoombestanden met ondertitels (.vtt) afzonderlijk vermeldt.


Antwoord 6, autoriteit 25%

Ik moest HLS-video- en audiostreams downloaden van een e-learningportal met sessiebeveiligde inhoud met application/mp2tMIME-inhoudstype.

Het handmatig kopiëren van alle authenticatieheaders naar de downloadscripts zou te omslachtig zijn.

Maar de taak werd veel eenvoudiger met behulp van Video DownloadHelperFirefox-extensie en het is Companion-app.
Het mag zowel M3U8-afspeellijsten met TS Chunks-lijsten en daadwerkelijke video- en audiostreams downloaden in MP4-bestanden via een klik op de knop, terwijl het correct behoud van authenticatiekoppen.

De resulterende afzonderlijke video- en audiobestanden kunnen samengevoegd met ffmpeg :

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

of met mp4box :

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

geprobeerd video-downloadhelper chromen extensie ook, maar het is niet werk voor mij.


Antwoord 7, Autoriteit 20%

Hoewel dit niet ooit op zou zijn gevraagd en door de VETTER-verwerking door de eerste plaats door de eerste plaats, heb ik geen idee … maar ik geef toch mijn antwoord.

Na het verkennen van eigenlijk alle opties die hier worden gepresenteerd, blijkt dat de eenvoudigste vaak de beste is.

FFMPEG eerst downloaden van: https://evermeet.cx/fmpeg/

Nadat u uw .m3u8-afspeellijstbestand hebt (hoogstwaarschijnlijk van de webpagina of netwerkverkeer), voert u deze opdracht uit:

ffmpeg -i "http://host/folder/file.m3u8" -bsf:a aac_adtstoasc -vcodec copy -c copy -crf 50 file.mp4

Ik heb geprobeerd het van een lokaal opgeslagen M4U8-bestand te laten werken en het werkte niet, omdat de downloadprocedure van FFMPEG de brokken downloadt die ten opzichte van de URL zijn, dus zorg ervoor dat u de website van de website gebruikt.


Antwoord 8, Autoriteit 10%

  • Download VLC-speler
  • media
  • Converteren/Opslaan
  • Netwerk (tabblad)
  • Voer de URL in van [afspeellijst].m3u8
  • Volg de resterende stappen van de wizard om de streambestemming (Bestand) in te stellen
  • Stel het juiste transcoderingsprofiel in (MP4 op het moment van dit antwoord)
  • Bekijk video

Antwoord 9, autoriteit 5%

Veel websites verpakken hun video’s als meerdere Transport Stream-bestanden (.ts). Als u de volledige video wilt uitvoeren, moet u alle .ts-bestandsstukken downloaden en samenvoegen. Het samenstellen kan eenvoudig worden gedaan met behulp van de FFmpeg-opdrachtregeltool.

Voor het geval iemand op zoek is naar een Java-manier om TS-bestanden van een videostream te downloaden, hier is een goed voorbeeld van een hulpprogramma en een artikel dat ook in detail gaat over hoe TS- en M3U8-bestanden werken >> https://jet-cabral.medium.com/java-ts- video-downloader-a0fcf23ab84a

Zodra alle .ts-bestanden zijn gedownload, ziet het ffmpeg-commando om de video’s te assembleren/aaneenschakelen er als volgt uit:

ffmpeg -i "concat:C:\users\your-name\file_0.ts|C:\users\your-name\file_1.ts|C:\users\your-name\file_2.ts|C:\users\your-name\file_3.ts

Als u de url van het .m3u8-bestand al weet dat de .ts-bestanden bevat die u wilt downloaden. Vervolgens downloadt de volgende opdracht alle .ts-bestanden en voert een enkel .mp4-bestand uit

ffmpeg -i "http://www.some-website.com/video/someM3U8_file.m3u8" -c copy -bsf:a aac_adtstoasc "full_video.mp4"

Antwoord 10, autoriteit 5%

Zo simpel als deze twee commando’s:

wget https://example.com/videos/tschunks_{0 ..10}.ts

kat tschunks_{0..10}.ts > video.mp4

* – Waar “https://example.com/videos/tschunks_{0..10}” -part is te vinden in m3u8 bestand


Antwoord 11, Autoriteit 2%

Kopieer en plak een van de .ts-videobestanden in een nieuw tabblad in Chrome. Verwijder het identificerende nummer van het .ts-bestand (0,12,3 enz. Of welk nummer het ook is) en de uitbreiding van “.ts” naar “.mp4” wijzigen. Dat moet het videobestand in uw browser zo gebruikelijk inbrengen.


Antwoord 12, Autoriteit 2%

Ik heb enkele wijzigingen aangebracht in het antwoord van Dina om te voorkomen dat ik 1200 delen te downloaden / combineren als er niet zoveel zijn.

Ik heb het ook nuttig gevonden om te sorteren op waterfallop het tabblad Netwerk van Chrome. Dit zal op de tijd sorteren op de tijd dat de bestanden worden gedownload, dus wanneer u een video streamt, staan ​​de meest recent gedownloade onderdelen bovenaan, waardoor het gemakkelijk is om de .tskoppelingen te vinden.

#!/bin/bash
# Name of the containing folder
GROUP="My Videos"
# Example link: https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE_0.ts
# Insert below as: https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE
# INSERT LINKS TO VIDEOS HERE
LINK=(
'Title for the video link'
'https://vids.net/ABCAED/AADDCDE/m3u8/AADDCDE/AADDCDE'
'Title for the next video'
'https://vids.net/EECEADFE/EECEADFE/m3u8/EECEADFE/EECEADFE'
)
# ------------------------------------------------------------------------------
mkdir "$GROUP"
cd "$GROUP"
I=0
while [ $I -lt ${#LINK[@]} ]
do
  # create folder for streaming media
  TITLE=${LINK[$I]}
  mkdir "$TITLE"
  cd "$TITLE"
  mkdir 'parts'
  cd 'parts'
  J=$((I + 1))
  URL=${LINK[$J]}
  I=$((I + 2))
  DIR="${URL##*/}"
  # download all streaming media parts
  VID=-1
  while [ $? -eq 0 ];
  do
    VID=$((VID + 1))
    wget $URL'_'$VID.ts
  done
  # combine parts
  COUNTER=0
  while [  $COUNTER -lt $VID ]; do
    echo $DIR'_'$COUNTER.ts | tr " " "\n" >> tslist
    let COUNTER=COUNTER+1
  done
  while read line; do cat $line >> $TITLE.ts; done < tslist
  rm -rf tslist
  mv "$TITLE.ts" "../$TITLE.ts"
  cd ..
  rm -rf 'parts'
  cd ..
done

Antwoord 13

1) Lees de instructies van @aalhanane (na de stap “URL m3u8 plakken” moet u de naam van het bestand typen, bijv. “video” en vervolgens op het pictogram “hand” naast “kwaliteit” klikken en pas daarna moet u selecteer “één op één” en “download”).

2) De stream splitst video en audio, dus je moet ze afzonderlijk downloaden en vervolgens dezelfde m3u8x gebruiken om ze samen te voegen https://youtu.be/he-tDNiVl2M(optioneel converteren naar mp4).

3) m3u8x kan zonder problemen video downloaden, maar in mijn geval kan het geen audiolinks extraheren. Dus ik downloadde gewoon het *.m3u8-bestand en zocht naar de regel die GROUP-ID=”audio-0″ bevat en scrolde vervolgens naar rechts en kopieerde de link (!inclusief token!) en plakte deze rechtstreeks in het veld “Quality URL” van m3u8x app. Dan “één op één” en download het vergelijkbaar met videostream.

Toen ik zowel video als audio had, deed ik mee en succes =)

ps. in het geval dat automatische extractie in de toekomst niet meer werkt, kunt u dezelfde methode gebruiken om videolinks handmatig te extraheren.


Antwoord 14

  • Haal één link op het tabblad Netwerk van ontwikkelaarstools
  • Verwijder index en ts-extensie uit link

Met het volgende script kun je de film opslaan in de map Video’s

Voorbeeld van gebruik:

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

Antwoord 15

U kunt hiervoor de Xtreme Download Manager(XDM)-software gebruiken. Deze software kan van elke site in dit formaat worden gedownload.
Zelfs deze software kan het ts-bestandsformaat wijzigen. U hoeft alleen het formaat te wijzigen tijdens het downloaden.

zoals:https://www.videohelp.com/software/Xtreme- Downloadmanager-


Antwoord 16

Ik bedacht een efficiënte parallelle regel met één regel die een reeks .ts-bestanden samenvoegt tot één .mp4-bestand met behulp van GNU Parallel:

parallel -k curl https://example.com/video/seg-{}-f4-v1-a1.ts ::: {1..279} >> result.mp4

De sleutel is om het variantgedeelte van uw url te vervangen door {}en om {a..b}in te stellen met de onder- en bovengrens. Dat is het!

Other episodes