如何从m3u8文件中提取mp4视频

时间:2018-06-20 05:32:54

标签: video-streaming mp4 m3u8

我最近一直在使用Chrome扩展程序或下载网站从网站上下载视频。但是,最近它开始提供m3u8文件下载链接。我在互联网上进行了搜索,并尝试了多种方法,但无法下载这些视频。有谁知道如何获取此类视频的下载链接?将不胜感激。 这些视频大多数是足球比赛的精彩片段,通常会在浏览器中播放但无法下载。 更新: http @ 0000018479631d00]协议'http'不在白名单'file,crypto'上! master.m3u8:无效的参数,这是我使用FFmpeg时遇到的错误。

2 个答案:

答案 0 :(得分:1)

m3u8文件通常是文本文件,其中包含指向实际数据文件的链接。

我使用的一种解决方案是在Bash循环中使用curl下载实际数据文件,然后将播放列表的所有下载文件连接起来。

您可以尝试如下所示的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";
        fmpeg -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播放列表上运行。

答案 1 :(得分:-1)

我已经找到答案了。问题是该流已加密,并且使用FFmpeg时遇到了一个错误,即尚不支持SAMPLE-AES加密。因此,除非FFmpeg支持此功能,否则无法下载此类视频。