相关文章推荐
飘逸的烈马  ·  excel如何删除公式保留超链接- ...·  2 天前    · 
爱运动的打火机  ·  python操作k8s回滚的api接口 ...·  8 月前    · 
气宇轩昂的鼠标垫  ·  vue-video-player播放图标居中 ...·  1 年前    · 
霸气的蘑菇  ·  mysql数据库log-slave-upda ...·  2 年前    · 
刀枪不入的茶壶  ·  jdk1.7之后java不需要自己关闭io流 ...·  2 年前    · 
乖乖的泡面  ·  计算列表中的值 - 问答 - ...·  2 年前    · 
小百科  ›  视频地址赚取-腾讯云开发者社区-腾讯云
string url
眉毛粗的木瓜
1 年前
全栈程序员站长
0 篇文章

视频地址获取

前往专栏
腾讯云
开发者社区
文档 意见反馈 控制台
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
发布
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
全栈程序员站长
首页
学习
活动
专区
工具
TVP 最新优惠活动
返回腾讯云官网
社区首页 > 专栏 > 全栈程序员必看 > 视频地址获取

视频地址获取

作者头像
全栈程序员站长
发布 于 2022-07-23 16:06:07
2.2K 0
发布 于 2022-07-23 16:06:07
举报

大家好,又见面了,我是你们的朋友全栈君。 首先需要获取视频的videoId,直接请求该url,然后match匹配:

   Pattern pattern = Pattern.compile("videoId: \'(.+)\'");
   Matcher matcher = pattern.matcher(response);
   if (matcher.find()) {
          String videoId = matcher.group(1);
          Log.i(TAG,videoId);
   }

获得videoId后开始获取r参数与s参数:

   String URL_VIDEO="/video/urls/v/1/toutiao/mp4/%s?r=%s";
   String HOST_VIDEO = "http://i.snssdk.com";
    String r = getRandom();
    CRC32 crc32 = new CRC32();
    String s = String.format(URL_VIDEO, videoId, r);
    //进行crc32加密。
    crc32.update(s.getBytes());
    String crcString = crc32.getValue() + "";
    //2.生成获取视频地址的url
    String url = HOST_VIDEO + s + "&s=" + crcString;
    Log.i(TAG,url);
private String getRandom() {
        Random random = new Random();
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < 16; i++) {
            result.append(random.nextInt(10));
        return result.toString();
    }

接下来访问生成的url,即可获得类似下面的json:

这里写图片描述
这里写图片描述

箭头所示的main_url即为我们需要的视频播放真实地址,但其实Base64编码的,解码即可得到真实地址:

  System.err.println( new String(Base64.getUrlDecoder()
                 .decode("main_url的值")));

视频地址有有效时间,意味每次播放都需要判断地址是否准确!

bak:关于videoId的获取:

 open fun test(url: String): String? {
        var client = OkHttpClient().newBuilder()
                .followRedirects(false)
                .followSslRedirects(false)
                .build();
        var mediaType = MediaType.parse("application/x-www-form-urlencoded");
        var body = RequestBody.create(mediaType,
                "checkCookiesEnabled=true&checkMobileDevice=false&checkStandaloneMode=false&checkTabletDevice=false&portalAccountUsername=username&portalAccountPassword=password");
        var request = Request.Builder()
                .url(url)
                .post(body)
                .addHeader("content-type", "application/x-www-form-urlencoded")
                .addHeader("cache-control", "no-cache")
 
推荐文章
飘逸的烈马  ·  excel如何删除公式保留超链接- Microsoft Q&amp;A
2 天前
爱运动的打火机  ·  python操作k8s回滚的api接口 k8s 回滚_detailtoo的技术博客_51CTO博客
8 月前
气宇轩昂的鼠标垫  ·  vue-video-player播放图标居中显示 - 本溢 - 博客园
1 年前
霸气的蘑菇  ·  mysql数据库log-slave-updates 参数解释_为梦想而努力!的技术博客_51CTO博客
2 年前
刀枪不入的茶壶  ·  jdk1.7之后java不需要自己关闭io流了 - Arbitrary233 - 博客园
2 年前
乖乖的泡面  ·  计算列表中的值 - 问答 - 腾讯云开发者社区-腾讯云
2 年前
今天看啥   ·   Py中国   ·   codingpro   ·   小百科   ·   link之家   ·   卧龙AI搜索
删除内容请联系邮箱 2879853325@qq.com
小百科 - 百科知识指南
© 2024 ~ 沪ICP备11025650号