我想下载一个视频,它的URL不是一个简单的MP4文件,而是一个blob类型的例子:

<video id="playerVideo" width="450px" autoplay="autoplay" height="338px" 
       style="height:100%;width:100%;" class="mejs-rai-e"
       src="blob:http://www.example.com/d70a74e1-0324-4b9f-bad4-84e3036ad354">
</video>

有没有任何chrome扩展或软件,可以用来从blob url下载视频?


当前回答

有多种方法可以获得URL .m3u8,可以通过查看页面的源代码,查看Chrome开发工具中的网络选项卡,或者使用诸如HDL/HLS视频下载器之类的插件。

有了。m3u8的URL,你就可以使用ffmpeg将视频下载到一个文件中,如下所示:

$ ffmpeg -i 'https://url/to/some/file.m3u8' -bsf:a aac_adtstoasc \
    -vcodec copy -c copy -crf 50 file.mp4

其他回答

有多种方法可以获得URL .m3u8,可以通过查看页面的源代码,查看Chrome开发工具中的网络选项卡,或者使用诸如HDL/HLS视频下载器之类的插件。

有了。m3u8的URL,你就可以使用ffmpeg将视频下载到一个文件中,如下所示:

$ ffmpeg -i 'https://url/to/some/file.m3u8' -bsf:a aac_adtstoasc \
    -vcodec copy -c copy -crf 50 file.mp4

这是我设法“下载”它的方法:

使用inspect-element来标识M3U播放列表文件的URL 下载M3U文件 使用VLC读取M3U文件,流和转换视频到MP4

在Firefox中,M3U文件显示为application/vnd.apple.mpegurl类型

M3U文件的内容如下所示:

打开VLC内侧播放器,使用Media => Convert选项。使用您(保存的)M3U文件作为源文件:

如果你找不到.m3u8文件,你需要做几个不同的步骤。

1)进入网络选项卡,按媒体排序

2)你会在这里看到一些东西,然后选择第一项。在我的例子中,它是一个mpd文件。然后复制请求URL。

3)接下来,使用您最喜欢的命令行工具,使用步骤2中的URL下载文件。

youtube-dl -f bestvideo+bestaudio https://url.com/destination/stream.mpd

4)根据编码,您可能需要将音频和视频文件连接在一起,但这将取决于视频的视频情况。

使用HLS Downloader谷歌Chrome扩展来获得链接到M3U播放列表。它在浏览器栏中的图标将显示当前网页上找到的播放列表的数量。点击图标,然后可以看到播放列表链接的列表,然后使用链接旁边的复制按钮复制它。

然后使用youtube-dl程序下载该文件。

youtube-dl --all-subs -f mp4 -o "file-name-to-save-as.mp4" "https://link-from-Google_Chrome-HLS_Downloader_extension"

命令行选项说明:

-f mp4 =输出格式mp4 ——all-subs =下载所有字幕 -o "file- Name -to-save-as.mp4" =要保存视频的文件名。 “https://link-from-Google_Chrome-HLS_Downloader_extension”=这是从HLS Downloader扩展复制的播放列表的链接。

如果您一直在为youtube-dl使用相同的配置选项,那么您可能希望查看youtube-dl的配置选项,因为这可以为您节省大量输入。

HLS Downloader扩展在MIT许可下是免费和开源的,如果你想看代码,可以在Github上的项目页面上找到。

如果blob实例化的数据来自一个F4M清单(检查网络选项卡在Chrome的开发工具),你可以下载视频文件使用php脚本发布在这里:https://n1njahacks.wordpress.com/2015/01/29/how-to-save-hds-flash-streams-from-any-web-page/

通过将:

  if ($manifest == '')
    $manifest = $_GET['manifest'];

之前:

  if ($manifest)

你甚至可以在web服务器上运行它,使用带有查询字符串的请求:?manifest=[manifest url]。

注意,您可能需要使用FTP客户端来检索下载的视频文件并在脚本之后清理(它会留下所有下载的视频部分)。