曾几何时,看视频的时候都是可以下载的,不过不知道什么时候起,在线的视频不能下载了,很多精彩的内容想回味第二遍的时候居然要收费了,比如周星驰孟达的系列电影。本文通过Fiddler Everywhere来获取下载内容。主要是mp4文件和m3u8格式文件的下载。
MP4
MP4是一套用于音频、视频信息的压缩编码标准,由国际标准化组织(ISO)和国际电工委员会(IEC)下属的“动态图像专家组”(Moving Picture Experts Group,即MPEG)制定,第一版在1998年10月通过,第二版在1999年12月通过。MPEG-4格式的主要用途在于网上流、光盘、语音发送(视频电话),以及电视广播。
下载mp4格式文件
这种是最简单的了,但是个人还是推荐使用Fiddler Everywhere工具。F12也能捕获到网络信息信息,但是有时候F12的功能会受到限制。
以周星出吴孟达的经典电影<<喜剧之王>>为例子,这部电影非常非常精彩,值得回味的好电影。本文使用Google浏览器,怎么配置,可参考抓包神器之Fiddler Everywhere及Wireshark 网站链接: http://m.shoujizhan.cn/vod-play-id-3741-src-1-num-1.html。 使用Fiddler Everywhere开始抓包:
关于如何过滤微软给出了下面的方法: Alternatively, you can apply filters through the more option on each Live Traffic column (e.g., apply a filter for Host column). The column filtering allows using AND and OR logical operators (for two lines), and multiple comparison rules (for example, like Is equal to, contains, ends with, etc.).
比如要过滤mp4,只需要这样就可以了:保存视频就完成了mp4格式视频的下载。
m3u8和ts
m3u8是苹果公司推出的视频播放标准,是m3u的一种,只是编码格式采用的是UTF-8。 m3u8准确来说是一种索引文件,使用m3u8文件实际上是通过它来解析对应的放在服务器上的视频网络地址,从而实现在线播放。使用m3u8格式文件主要因为可以实现多码率视频的适配,视频网站可以根据用户的网络带宽情况,自动为客户端匹配一个合适的码率文件进行播放,从而保证视频的流畅度。
下载m3u8/ts格式
选择郭敬明的电影<<晴蕥集>>作为例子,电影好坏不做评价,视频链接: http://m.shoujizhan.cn/vod-play-id-25936-src-1-num-1.html
Filter添加mp4和m3u8,可以看到只有m3u8格式文件。播放视频,过滤ts文件,结果如下:导出(All selected session),选择格式为RAW Files格式。 找到ts文件所所在的位置:
使用下面的代码将所有的ts文件合并为mp4格式的文件。
import oscombine_ts_start = "9a3f1b0cc7e001182.ts"combine_ts_end = "9a3f1b0cc7e001210.ts"len = 1210 - 1182 + 1tsfile = ""for i in range(len): if (i == len-1): tsfile += "9a3f1b0cc7e00" + str(1182 + i) + ".ts" else: tsfile += "9a3f1b0cc7e00" + str(1182 + i) + ".ts" + "|"command = "ffmpeg -i " + "\"concat:" + tsfile + "\"" + " -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4"print(command)# 注意这里使用的是os.system。使用subprocess相关的方法会包File name too long的错误os.system(command)
最终结果:当然了,这里只是截取了视频的一部分。最后安利一个几乎无敌的播放器VLC播放器。
VLC播放器
VLC多媒体播放器(最初命名为VideoLAN客户端)是VideoLAN计划的多媒体播放器。它支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流式协议。它也能作为unicast或multicast的流式服务器在IPv4或IPv6的高速网络连接下使用。它融合了FFmpeg计划的解码器与libdvdcss程序库使其有播放多媒体文件及加密DVD影碟的功能。
迄今为止个人发现的最强大的视频播放器,没有之一,基本常见的格式的都能播放。
ffmpeg
将ts文件合并为mp4
ffmpeg -i "concat:file001.ts|file002.ts|file003.ts|file004.ts......n.ts" -acodec copy -vcodec copy -absf aac_adtstoasc out.mp4ffmpeg -i https://ip182.com/media=hlsA/ssd2/21/8/184547828.m3u8 -acodec copy -vcodec copy output.mp4ffmpeg -i https://ip182.com/media=hlsA/ssd2/21/8/184547828.m3u8 -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4
切割mp4为m3u8格式,推荐用以下第一行的命令就行了
ffmpeg -i raw_video.mp4 -c copy -map 0 -f segment -segment_list hls/video.m3u8 hls/video%d.tsffmpeg -i Video.mp4 -c copy -map 0 -f segment -segment_list video_playlist.m3u8 -segment_time 2 video%03d.tsffmpeg -i Video.mp4 -c copy -bsf:v h264_mp4toannexb -map 0 -f segment -segment_time 10 -segment_format mpegts -segment_list video_playlist.m3u8 video%03d.tsffmpeg -i Video.mp4 -c copy -hls_time 2 -hls_list_size 0 video_playlist.m3u8
fmpeg转视频格式为m3u8
ffmpeg -i test.mp4 -codec:v libx264 -codec:a mp3 -map 0 -f ssegment -segment_format mpegts -segment_list playlist.m3u8 -segment_time 10 out%03d.ts
-i : 引入视频源 -codec:v : 视频格式 -codec:a : 音频格式 segment_format: 来指定输出格式为mpegts segment_list: 用来配置输出的列表文件名 segment_time: 切片的时长
写在最后
这种方式下载视频个人玩一下倒是无妨,不要用作商业目的,否则后果自负。版权保护,人人有则。
公众号
更多内容,欢迎关注我的微信公众号:无情剑客。