Как извлечь видео mp4 из файла m3u8

Недавно я загружал видео с веб-сайта, используя расширения Chrome или сайт загрузки. Однако в последнее время он начал давать ссылку для скачивания файла m3u8. Я искал по всему Интернету и пробовал множество способов, но не могу загрузить эти видео. Кто-нибудь знает, как получить ссылки для скачивания таких видео? Это будет высоко ценится. Большинство этих видеороликов представляют собой лучшие моменты футбольных матчей, которые обычно воспроизводятся в браузере, но не могут быть загружены. ОБНОВЛЕНИЕ: http @ 0000018479631d00] Протокол 'http' не включен в белый список 'file,crypto'! master.m3u8: Неверный аргумент это ошибка, которую я получаю, когда использую FFmpeg.


person RizwanTahir    schedule 20.06.2018    source источник
comment
Вы должны иметь возможность воспроизводить и загружать файлы с помощью VLC или FFMPEG.   -  person avolkmann    schedule 20.06.2018


Ответы (2)


m3u8 файлы обычно представляют собой текстовые файлы, содержащие ссылки на фактические файлы данных.

Решение, которое я использую, состоит в том, чтобы загрузить фактические файлы данных с помощью curl в цикле Bash, а затем объединить все загруженные файлы списка воспроизведения.

Вы можете попробовать функцию Bash, подобную следующей [поместите ее в свой файл .bashrc или .bash_aliases и отредактируйте ее соответствующим образом, если вам нужно]:

function download-playlist() {
    if [[ -n "$1" ]]; then
        touch ./files.txt;
        counter=1;
        while read line; do
            if [[ "$line" == "http"* ]]; then
                curl --silent -o ${counter}.mp4 "$line";
                echo "file ${counter}.mp4" >> ./files.txt;
                ((counter++));
            fi;
        done < "$1";
        ffmpeg -f concat -safe 0 -i ./files.txt -codec copy output.mp4;
    else
        echo 'Usage: download-playlist <file.m3u8>';
    fi
}

Тогда вы можете использовать его так: download-playlist master.m3u8

PS: Обычно master.m3u8 содержит ссылки на плейлисты. Функция, возможно, должна быть запущена в подсписке воспроизведения, а не в фактическом списке воспроизведения master.m3u8.

person Vagelis Prokopiou    schedule 20.06.2018
comment
Хороший ответ! Вы не против исправить вызов ffmpeg? Не хватает буквы "ф" :) - person Fulalas; 30.09.2020

Я узнал ответ. Проблема в том, что поток зашифрован, и при использовании FFmpeg я получаю сообщение об ошибке Шифрование SAMPLE-AES еще не поддерживается. Таким образом, если FFmpeg не поддерживает эту функцию, такие видео не могут быть загружены.

person RizwanTahir    schedule 21.06.2018
comment
VLC может обрабатывать шифрование AES. Если вы хотите программировать самостоятельно, любой язык может решить проблему. - person avolkmann; 24.06.2018
comment
@ Энрико, ты имеешь в виду vlc или решение для программирования? IIRC vlc автоматически обрабатывает шифрование. Что касается способа «сделай сам», я писал о том, как я решил подобную проблему здесь: andreasvolkmann.github.io/posts/2018-04-27-m3u8-and-ts-segments - person avolkmann; 19.02.2019