web-dev-qa-db-ja.com

ビデオストリームからTSファイルをダウンロードする

ほとんどのサイトのビデオはプログレッシブダウンロードを使用します。つまり、ビデオはコンピューターにダウンロードされ、簡単にトレースできます。これを行うための拡張機能はたくさんありますが、開発ツールでも簡単に実行できます。

特定のWebサイトでは、ビデオがストリーミングされます。つまり、1つのファイルをダウンロードするだけでなく、多数の小さなパッケージをダウンロードします。 dev-toolsでは、これらのパッケージを追跡できます。私が興味を持っているウェブサイトは次のとおりです: http://www.rtlxl.nl/#!/goede-tijden-slechte-tijden-10821/c8e2bff7-5a5c-45cb-be2b-4b3b3e866ffb

-パッケージの拡張子は.TSです。

-リクエストのURLをコピーすることでパッケージを保存できます

-これらのファイルを再生できません。

私は何か間違ったことをしたに違いないか、何かを見逃しています。私が間違っていることを知りたい。すべてのパッケージのURLをキャプチャする個人用のchrome拡張機能を作成したい。すべてのURLを取得したら、それらをダウンロードし、ffmpegを使用してmp4ファイルに貼り付けるphpスクリプトに渡します。

パッケージの入手を手伝ってください。

37
Nicky Smits

更新

Stream Video Dowloader Chrome拡張機能により、m3u8ストリームをシームレスにダウンロードできます。ビデオをインストールして再生ボタンを押すと、ストリームが識別されます。

@aalhananeおよび@Micheal Espinola Jrへの追加

M3u8xはWindowsでのみ使用可能です。 m3u8のURLを特定したら、Jdownloader2またはVLC Media Playerを使用してストリームをダウンロードおよび連結することもできます。

Jdownloader2:Jdownloaderが開いているときにm3u8のURLをコピーするだけです。 Linkgrabberタブでストリームを認識します。

VLC 3:

ネットワークを開く-> m3u8のURLを貼り付け-> Checkmark Streamoutput->設定を選択します。出力ファイル、コンテナ、ビデオ、およびオーディオのエンコードを選択します。 (たとえば、output.mp4、コンテナ:mpeg4、ビデオ:h264、オーディオ:mp4a)ストリームを開始します。ビデオは再生されませんが、エンコードし、ビデオの再生進行バーを移動することでエンコードの進行状況を示します。

22
dre-hh

---> Firefoxを開く

--->ビデオのページを開く

--->ビデオを再生する

--->メニューを開くをクリックします

---> Web開発者ツールを開くをクリックします

--->開発者ツールバーをクリックします

--->ネットワークをクリックします

--->フィルタURLに移動---> "M3u8"を書き込み-> "m3u8"を検索

---> URL ".m3u8"をコピーします

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

今すぐソフトウェア「m3u8x」をダウンロード----> https://tajaribsoft-en.blogspot.com/2016/06/m3u8x.html#downloadx12

--->オープンソフトウェア「m3u8x」

---> URL「m3u8」を貼り付け

--->オプション「One ... One」を選択しました

--->ダウンロードをクリック

--->ダウンロードを開始

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

画像「メニューを開く」===>

a busy cat

画像「開発者ツールバー」===>

a busy cat

画像「m3u8x」===>

enter image description here

enter image description here

15
aalhanane

すべてのトランスポートストリーム(.ts)ファイルをダウンロードし、再生のために単一のmpegに連結する必要があります。このようなトランスポートストリームには、ダウンロードして連結する必要があるすべての.tsファイルをリストするプレイリストファイル(.m3u8)が関連付けられています。利用可能な場合、サブタイトルのSteamファイル(.vtt)を個別にリストするセカンダリ.m3u8プレイリストが存在する場合があります。

10

this postを使用

  • Firefox/Chromeを開きます

  • ビデオを開く

  • 動画を再生します

  • キーボードのF12をクリックします-> network

  • Filter URLs ts

  • tsのリンクをコピー

  • リンクからインデックスとts拡張を削除します

    例えば:

    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
    

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

編集

pythonにスクリプトを追加-WindowsおよびLinuxで実行

import urllib2
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 = '%d.mp4' % lesson
    f = open(file_name, 'ab')
    for x in range(0, 1200):
        try:
            rsp = urllib2.urlopen(dwn_link + "_%d.ts" % (x) )
        except:
            break
        file_name = '%d.mp4' % lesson
        print "downloading  %d.ts" % (x)
        f.write(rsp.read())
    f.close()



print "done good luck!! ==================  "

スクリプトが失敗した場合、または空のファイルをダウンロードした場合は、試行ラップを削除して、失敗したものを確認してください

8
dina

application/mp2t MIMEコンテンツタイプのセッション保護されたコンテンツを使用して、eラーニングポータルからHLSビデオおよびオーディオストリームをダウンロードする必要がありました。

すべての認証ヘッダーをダウンロードスクリプトに手動でコピーするのは面倒です。

しかし、タスクは Video DownloadHelper Firefox拡張機能と Companion App の助けを借りてはるかに簡単になりました。認証ヘッダーを正しく保持しながら、ボタンをクリックするだけで、TSチャンクリストを含むm3u8プレイリストと実際のビデオおよびオーディオストリームの両方をmp4ファイルにダウンロードできました。

結果として得られる個別のビデオファイルとオーディオファイルは、 マージffmpeg とすることができます。

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

または mp4box を使用:

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

Video DownloadHelper Chrome extension も試してみましたが、うまくいきませんでした。

4
Vadzim

簡単 youtube-dl macOSでの例(コマンドラインターミナル:Windowsもサポート):

$ 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)

$ 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

ブラウザの[開発ツール]> [ネットワーク]を使用して、ストリーミングビデオを開始するときにm3u8(HLSマニフェスト)URLを取得します。

2
Peter Tseng

Chromeの新しいタブに.tsビデオファイルの1つをコピーして貼り付けます。 .tsファイルの識別番号(0、1、2、3など、またはその番号)を削除し、拡張子を「.ts」から「.mp4」に変更します。これにより、通常どおりブラウザにビデオファイルが表示されます。

1
Connor

それほど多くない場合、1200個のパーツをダウンロード/結合しようとするのを避けるために、dinaの回答にいくつかの変更を加えました。

また、Chromeの[ネットワーク]タブでwaterfallでソートすることも役立ちました。これは、ファイルがダウンロードされる時間でソートされるため、ビデオをストリーミングしている場合、最後にダウンロードされた部分が上部に表示され、.tsリンクを簡単に見つけることができます。

#!/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
1
Cyrus