Загружать файлы 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) при запуске потокового видео.