Скачивание файлов .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?

Вы уже что-нибудь пробовали? Выложите пожалуйста код того, что уже пробовали?

Yashovardhan99 17.08.2018 19:58

@Yashovardhan Я действительно запутался и застрял. Первым делом нужно загрузить эти файлы, а другое - преобразовать их в один пакет, так как .MP4 я не нашел никаких библиотек, которые могли бы выполнять эту работу.

wiils 18.08.2018 10:09

@Yashovardhan это то, что я нашел для FFMPEG для android. github.com/writingminds/ffmpeg-android-java не обновляется, поддерживается.

wiils 18.08.2018 10:52

@Yashovardhan и FFMPEG из ссылки имеют серьезную проблему, связанную с увеличением размера приложения на 21 МБ !! и сообщите мне, есть ли у вас образцы кода для загрузки этих фрагментов и преобразования их в мое приложение.

wiils 18.08.2018 19:50
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
4
5 825
2

Ответы 2

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

pip install m3u8-dl

m3u8-dl --help

Источник: Скачать файлы 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! ================= = ")

Другие вопросы по теме