在网上找了更多,下载直播视频的博文,发现其办法都太过麻烦,于是我钻研了一下,成功实现用java下载直播视频到本地的办法。
原理:直播视频基本原理,是将视频进行视频切片成多个几秒的小视频,其格式多为.ts文件或着.m2u8文件
下面以CSDN为例子讲解如何下载CSDN网站上的直播视频
编辑
1.打开直播视频页,按F12进入开发者模式,切换到Network,
编辑
2.用“m3u8”过滤请求,复制第二请求的 URL地址
编辑
3.放入代码中(API变量后面)请求,得到的4K、高清、标清、流畅四种视频的请求源
编辑
4.用上个请求地址(截取到最后一个“/”)拼接你想要下载的分辨率的视频源地址,放入url变量中,code如下
注意:连接有时效性,不能下载的时候,请获取最新的连接
import cn.hutool.http.HttpUtil; import java.io.FileOutputStream; import java.io.IOException; public class BlobVideo { //要下载的创建的视频地址 public final static String fileSavePath="d:/ts/new.mp4"; //视频源 public final static String url="https://video.csdnimg.cn/73c634ff71c1479f96b7fb7b1f9292de/video/f00e7e9b70e8445e81bad8ce322869cd-655657db1aadfdcf51ed91e91162df27-video-fd.m3u8?auth_key=1608615189-bb8508ae73dc4dfaa9e63d6f5e5edab7-0-e559005aad8ec494b10224351977a268"; public static void main(String[] args) { String API="https://video.csdnimg.cn/73c634ff71c1479f96b7fb7b1f9292de/f00e7e9b70e8445e81bad8ce322869cd.m3u8?auth_key=1608622392-407a739bc488462a9c1781fe208e1fb9-0-9625912f0ef91ae3150fb8ac66cbc6b4"; String result= HttpUtil.get(API); System.out.println(result); downVideo(url,fileSavePath); } public static void downVideo(String url,String fileSavePath){ try { String result= HttpUtil.get(url); String[] lines= result.split("\n"); url= url.substring(0,url.indexOf("/video/")+7); FileOutputStream fs = new FileOutputStream(fileSavePath); for (String line : lines) { if(!line.contains("#")){ byte [] bytes= HttpUtil.downloadBytes(url+line); fs.write(bytes); } } } catch (IOException e) { e.printStackTrace(); } } }
需要引用的第三方pom依赖
<!-- hutool工具类--> <dependency> <groupId>cn.hutool</groupId> <artifactId>hutool-all</artifactId> <version>5.3.6</version> </dependency>
5.下载结果,可以正常播放
编辑
未经本人同意,不得转载和用于商业用途!!!