Загрузка файлов .ts

Я хочу загрузить потоки .ts с сервера и сохранить их локально на телефоне Android. я могу получить файл .m3u8, но не знаю, как на самом деле загрузить эти фрагменты.

Почему я задаю этот вопрос, потому что эти фрагменты .ts 1950 в цифрах, и я не знаю, как загрузить их сразу и преобразовать в один файл.

вот так выглядит .m3u8:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA:TYPE=SUBTITLES,GROUP-ID="subtitles",NAME="English",AUTOSELECT=YES,DEFAULT=YES,LANGUAGE="en",URI="master_subtitle.m3u8"
#EXT-X-INDEPENDENT-SEGMENTS
#EXT-X-STREAM-INF:BANDWIDTH=96632,AVERAGE-BANDWIDTH=82657,CODECS="avc1.42c015,mp4a.40.5",RESOLUTION=250x140,SUBTITLES="subtitles",FRAME-RATE=10.000
master_Layer1.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=167696,AVERAGE-BANDWIDTH=141886,CODECS="avc1.42c015,mp4a.40.5",RESOLUTION=320x180,SUBTITLES="subtitles",FRAME-RATE=15.000
master_Layer2.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=329376,AVERAGE-BANDWIDTH=280906,CODECS="avc1.42c015,mp4a.40.2",RESOLUTION=320x180,SUBTITLES="subtitles",FRAME-RATE=25.000
master_Layer3.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=598968,AVERAGE-BANDWIDTH=505629,CODECS="avc1.42c01e,mp4a.40.2",RESOLUTION=416x234,SUBTITLES="subtitles",FRAME-RATE=25.000
master_Layer4.m3u8
#EXT-X-STREAM-INF:BANDWIDTH=1102432,AVERAGE-BANDWIDTH=914396,CODECS="avc1.42c01e,mp4a.40.2",RESOLUTION=640x360,SUBTITLES="subtitles",FRAME-RATE=25.000
master_Layer5.m3u8 

и вот как выглядит файл, в котором рассказывается история чанков:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXT-X-PLAYLIST-TYPE:VOD
#EXTINF:4.000,
master_Layer1_00001.ts
#EXTINF:4.000,
master_Layer1_00002.ts
#EXTINF:4.000,
master_Layer1_00003.ts
#EXTINF:4.000,
master_Layer1_00004.ts
#EXTINF:4.000,
master_Layer1_00005.ts
#EXTINF:4.000,
master_Layer1_00006.ts
#EXTINF:4.000,
master_Layer1_00007.ts
#EXTINF:4.000,
master_Layer1_00008.ts
#EXTINF:4.000,
master_Layer1_00009.ts
#EXTINF:4.000,
master_Layer1_00010.ts
...
#EXTINF:0.600,
master_Layer1_02150.ts
#EXT-X-ENDLIST 

URL-адрес загрузки выглядит примерно так: https://abcd.com/path1/path2/master_Layer*.ts

теперь мне нужно знать, как загрузить эти фрагменты сразу и преобразовать их в один пакет файлов, такой как .mp4?


person wiils    schedule 17.08.2018    source источник
comment
Вы уже пробовали что-то? Пожалуйста, опубликуйте код того, что вы уже пробовали?   -  person Yashovardhan99    schedule 17.08.2018
comment
@Yashovardhan Я действительно запутался и застрял сейчас. Первое, что нужно сделать, это загрузить эти файлы, а второе — преобразовать их в единый пакет, поскольку .MP4 я не нашел библиотек, которые могли бы выполнять эту работу.   -  person wiils    schedule 18.08.2018
comment
@Yashovardhan это то, что я нашел для FFMPEG для Android github.com/writingminds/ffmpeg-android -java не обновляется.   -  person wiils    schedule 18.08.2018
comment
@Yashovardhan и FFMPEG из ссылки имеют серьезную проблему, которая увеличивает размер приложения на 21 МБ !! и, пожалуйста, дайте мне знать, если у вас есть образец кода для загрузки этих фрагментов и преобразования их в мое приложение.   -  person wiils    schedule 18.08.2018


Ответы (2)


Библиотека Python — m3u8-dl

pip установить m3u8-dl

m3u8-dl --помощь

person kbrahma    schedule 30.01.2020

Источник: Загрузить файлы TS из видеопотока Попробуйте следующее:

import urllib.request
import os
import shutil

# Paste the address for one (any) video chunk ending with .ts
my_lessons = [
# paste your https://YOUR_SITE.com/A_VIDEO_CHUNK.ts address here
]

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 - Find your video at", lesson_dir, "- Good luck! ==================")
person jeppoo1    schedule 25.01.2021