前言最近《流浪地球》比较火,想找资源下载看看,无奈只找到了网址 http://m./ ,但是我的chrome插件也嗅探不到网页上的视频。。于是乎,右击页面,inspect 走起… 步骤首先发现 #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:0 #EXT-X-ALLOW-CACHE:YES #EXT-X-TARGETDURATION:14 #EXTINF:5.966667, out000.ts #EXTINF:4.300000, out001.ts #EXTINF:5.166667, out002.ts #EXTINF:5.700000, out003.ts #EXTINF:4.433333, out004.ts #EXTINF:5.166667, out005.ts #EXTINF:4.833333, out006.ts #EXTINF:5.500000, out007.ts #EXTINF:4.900000, out008.ts ....... #EXTINF:5.733333, out1444.ts #EXTINF:0.266667, out1445.ts #EXT-X-ENDLIST 而且ts流命名规范有规律,易下载,一开始打算来个shell脚本用 wget 解决 #!/bin/bash str="out" for i in `seq 0 1000` do a=$((1000+$i)) str1=$str${a:1:3}\.ts # 生成 string "out000.ts"~"out999.ts" echo $str1 wget https\:\/\/doubanzyv4\.tyswmp\.com\:888\/2019\/02\/07\/06SfTJsUSa6nKqG9\/$str1 -P ./ts_list/ done 但是下着下着发现老是一直 connecting,就卡住了(可能是网络问题),后来就发现chrome 下载这种文件特别快,但是要注意控制延迟,因为 chrome 下载序列数目有限,超出就会下载错误,shell 脚本如下: #!/bin/bash str="out" for i in `seq 0 999` do a=$((1000+$i)) str1=$str${a:1:3}\.ts # 生成 string "out000.ts"~"out999.ts" echo $str1 google-chrome https\:\/\/doubanzyv4\.tyswmp\.com\:888\/2019\/02\/07\/hLShLmXEtVqiYix9\/$str1 sleep 1s # 延迟1s,视网速而定 done 下载完所有 ts 流文件之后,开始合成,祭出大杀器:ffmpeg,利用 mpeg concat 分离器,先在 ts 文件目录下创建一个文本文件 filelist.txt,即 ts 流文件的顺序列表: file ‘out000.ts’ #include <stdio.h> int main(void) { FILE *fp = NULL; fp = fopen("./ts_list/filelist.txt", "w+"); for (int i = 0; i < 1350; i++) { fprintf(fp, "file \'out"); fprintf(fp, "%03d", i); fputs(".ts\'\n", fp); } fclose(fp); } 然后打开在文件目录打开 terminal ,利用 ffmpeg 合成: ffmpeg -f concat -i filelist.txt -c copy output.mkv 大概一分钟就好了(如果出错,可尝试其他的输出格式:flv,mp4, wmv,avi),目录下便有了 output.mkv, enjoy it! 附:ffmpeg实用命令ffmpeg -i input.mp4 output.mp3 # 从视频中抽取音频 ffmpeg -i input.mp4 -ss 00:01:20 -c copy -t 10 output.mp4 #从00:01:20开始截取10s钟视频输出 ffmpeg -i input.mp4 -c:v copy -an input-no-audio.mp4 #去除视频中音频 ffmpeg -i input-no-audio.mp4 -i input.mp3 -c copy output.mp4 #合并音视频 参考资料 |
|