我是靠谱客的博主 追寻导师,最近开发中收集的这篇文章主要介绍视频地址获取,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

软件具体名字就不说了哈,首先贴出视频的网页地址:
http://www.365yg.com/a6542366077089743367/
首先需要获取视频的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")
                .build();

        var response = client.newCall(request).execute()
//        ALog.e(response.body()?.string())
        return response.body()?.string()
        }

最后

以上就是追寻导师为你收集整理的视频地址获取的全部内容,希望文章能够帮你解决视频地址获取所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部