Загружать файлы TS из видеопотока

Видео на большинстве сайтов используют прогрессивную загрузку, что означает, что видео загружается на мой компьютер и легко отслеживается. Для этого есть много расширений, и даже в dev-tools это легко сделать.

На некоторых веб-сайтах видео транслируются. это означает, что мы не просто загружаем 1 файл, мы загружаем множество небольших пакетов. В dev-tools эти пакеты можно проследить. Мне интересен веб-сайт: http://www.rtlxl.nl/#!/goede-tijden-slechte-tijden-10821/c8e2bff7-5a5c-45cb-be2b-4b3b3e866ffb.

- Пакеты имеют расширение .TS.

-Packages можно сохранить, скопировав URL-адрес запроса

-Я не могу воспроизвести эти файлы.

Я, должно быть, сделал что-то не так, или я что-то упустил. Я хочу знать, что я делаю неправильно. Я хочу создать расширение chrome для личного использования, которое захватывает URL-адреса всех пакетов. когда у меня есть все URL-адреса, я хочу передать их на php-скрипты, которые загружают их, и использует ffmpeg для вставки их в файл mp4.

Пожалуйста, помогите мне получить пакеты.

Ответы

Ответ 1

Обновление:

Расширение Stream Video Dowloader Chrome позволяет без проблем загружать потоки m3u8. Установите и нажмите кнопку воспроизведения на видео, он будет определять поток.

Дополнение к @aalhanane и @Micheal Espinola Jr

Так как m3u8x доступен только для windows. Как только вы определили URL-адрес m3u8, вы также можете использовать Jdownloader2 или VLC Media Player для загрузки и объединения потока.

Jdownloader2: просто скопируйте URL-адрес m3u8, когда Jdownloader открыт. Он распознает поток на вкладке Linkgrabber.

VLC 3:

Откройте Сеть → Вставить URL-адрес m3u8 → Галочка Streamoutput → Выбрать настройки. Выберите выходной файл, контейнер, видео и аудио кодирование. (например, output.mp4, контейнер: mpeg4, видео: h264, аудио: mp4a) Start Stream. Он не будет воспроизводить видео, но будет кодировать его, показывая ход кодирования путем перемещения индикатора выполнения воспроизведения видео.

Ответ 2

---> Открыть Firefox

---> открыть страницу видео

---> Воспроизвести видео

Нажмите ---> Открыть меню

Нажмите ---> открыть инструменты веб-разработчика

Нажмите ---> Панель инструментов разработчика

Нажмите ---> Сеть

---> Перейти к фильтрам URL ---> Напишите "M3u8" → для Найти "m3u8"

---> Скопировать URL ".m3u8"

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

Теперь загрузите программное обеспечение "m3u8x" → https://tajaribsoft-en.blogspot.com/2016/06/m3u8x.html#downloadx12

---> открытое программное обеспечение "m3u8x"

---> вставить URL "m3u8"

---> выбрал опцию "Один... Один"

---> Нажмите Загрузить

---> Начать загрузку

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

изображение "Открыть меню" ===>

a busy cat

изображение "Панель инструментов разработчика" ===>

a busy cat

image "m3u8x" ===>

enter image description here

enter image description here

Ответ 3

Вам нужно будет загрузить все файлы транспортного потока (.ts) и объединить их в один mpeg для воспроизведения. Такие транспортные потоки связаны с файлами списков воспроизведения (.m3u8), в которых перечислены все файлы .ts, которые необходимо загрузить и объединить. Если доступно, может быть дополнительный плейлист .m3u8, который будет отдельно перечислять файлы паролей субтитров (.vtt).

Ответ 4

используя этот пост

  • Откройте Firefox/Chrome

  • открыть страницу видео

  • Проиграть видео

  • нажмите F12 на клавиатуре → network

  • в Filter URLs 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!! ==================  "

если сценарий завершится неудачно или загрузит пустой файл, попробуйте удалить оболочку, чтобы увидеть, что не получилось

Ответ 5

Мне нужно было загружать видео и аудио потоки HLS с портала электронного обучения с содержимым, защищенным сеансом, с типом содержимого application/mp2t MIME.

Вручную копирование всех заголовков аутентификации в сценарии загрузки будет слишком громоздким.

Но задача стала намного проще с помощью Video DownloadHelper Расширение Firefox и Companion App. Это позволило загрузить как плейлисты m3u8 с списками фрагментов TS, так и фактические видео и аудиопотоки в файлы 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 расширение, но это не сработало для меня.

Ответ 6

Скопируйте и вставьте один из видеофайлов .ts в новую вкладку в Chrome. Удалите идентификационный номер файла .ts(0,1,2,3 и т.д. Или любой другой номер) и измените расширение с ".ts" на ".mp4". Это должно вызвать видеофайл в вашем браузере, как обычно.

Ответ 7

Я внес некоторые изменения в ответ на дину, чтобы не пытаться загрузить/объединить 1200 частей, если их не так много.

Я также счел полезным сортировать по 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

Ответ 8

Простой пример youtube-dl на macOS (в командной строке Terminal; также поддерживается 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

Используйте средства разработчика браузера> Сеть, чтобы получить URL-адрес m3u8 (манифеста HLS) при запуске потокового видео.