Как я могу пакетно / последовательно скачать файлы m3u8 с помощью ffmpeg? - PullRequest
1 голос
/ 20 февраля 2020

В настоящее время я загружаю плейлисты m38u индивидуально, используя следующую команду для Ma c:

ffmpeg -i <"URL with m3u8"> -codec copy output.ts

Если я хочу сделать несколько файлов, я в настоящее время делаю это из отдельного терминала windows.

В одном случае я бы хотел, чтобы ffmpeg, например, взял URL-адреса из файла .txt и последовательно их загрузил с последовательным именем для каждого (подходит для всех go в той же выходной папке).

Пример кода из файла m3u8:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:9
#EXTINF:8.333333,
segment00000.ts
#EXTINF:8.333333,
segment00001.ts
#EXTINF:8.333333,
segment00002.ts
#EXTINF:5.000000,
segment00003.ts
#EXTINF:8.333333,
segment00004.ts
#EXTINF:8.333333,
segment00005.ts

У меня наверняка установлен homebrew - я новичок, поэтому не уверен, означает ли это, что я активно использую 'it для управления пакетами

Файл со списком адресов m3u8 в настоящее время находится по адресу / Users / username / Downloads / m38u hold list.txt и выглядит следующим образом:

https://streaming.imvbox.com/media/2825/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2298/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2822/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2821/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2820/1280x800/1280x800.m3u8
https://streaming.imvbox.com/media/2088/1280x800/1280x800.m3u8

Но пока этот файл - просто место для хранения ссылок - я не использовал его, кроме как для копирования ссылок.

1 Ответ

0 голосов
/ 20 февраля 2020

Итак, я бы сохранил следующее в вашем HOME каталоге как grabAll:

#!/bin/bash

HoldList="/Users/username/Downloads/m38u hold list.txt"

index=0
while read line ; do
    echo ffmpeg -i $line -codec copy output-${index}.ts
    ((index=index+1))
done < "$HoldList"

Примечание : если вы используете TextEdit, сделайте обязательно выберите пункт меню Format -> Make Plain Text

Затем вы можете запустить Терминал и запустить:

bash grabAll

и посмотреть, генерирует ли он требуемый тип команд. В настоящее время он ничего не делает, он просто говорит на экране, что он будет делать. Если все выглядит хорошо, вам просто нужно убрать слово echo из 3-й до последней строки и запустить его снова.

Пример вывода

ffmpeg -i https://streaming.imvbox.com/media/2825/1280x800/1280x800.m3u8 -codec copy output-0.ts
ffmpeg -i https://streaming.imvbox.com/media/2298/1280x800/1280x800.m3u8 -codec copy output-1.ts
ffmpeg -i https://streaming.imvbox.com/media/2822/1280x800/1280x800.m3u8 -codec copy output-2.ts
ffmpeg -i https://streaming.imvbox.com/media/2821/1280x800/1280x800.m3u8 -codec copy output-3.ts
ffmpeg -i https://streaming.imvbox.com/media/2820/1280x800/1280x800.m3u8 -codec copy output-4.ts
ffmpeg -i https://streaming.imvbox.com/media/2088/1280x800/1280x800.m3u8 -codec copy output-5.ts
...