一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

服務器之家 - 編程語言 - JAVA教程 - java實現優酷視頻地址解析示例代碼分享

java實現優酷視頻地址解析示例代碼分享

2019-10-30 16:59java代碼網 JAVA教程

最近做了一個在線視頻的下載器,需要解析youku的視頻,獲得真正的視頻地址,現在把解析過程記錄下來以供參考

舉個例子比較好理解,比如我現在要下http://v.youku.com/v_show/id_XNDM2Mjc0MzAw.html這個視頻。這里我們要獲得的是視頻的id,就是XNDM2Mjc0MzAw這部分,這是一個視頻唯一的,所以在解析的時候肯定會用到。

為了能看清楚youku視頻的播放過程,可以使用火狐的插件firebug對網頁進行跟蹤,如下圖。

java實現優酷視頻地址解析示例代碼分享

可以看到有很多GET,我們要找的應該是以這個id作為參數的GET,在下面我們可以找到這個鏈接
http://v.youku.com/player/getPlayList/VideoIDS/XNDM2Mjc0MzAw/timezone/+08/version/5/source/video?ran=3545&password=&n=3
這是youku獲取播放列表的GET,打開它的響應,這是一個json,我們需要的內容是seed、streamfileids和segs。segs里面放的是視頻的分段key,streamfileids是一串亂碼,要用seed對他解碼。下面我截取了下載器的一部分來說明解碼的過程,解析json用的是json-lib-2.4-jdk15。

 

復制代碼代碼如下:

List<Video> videos = new ArrayList<Video>();
JSONObject data;
//json就是剛獲得的響應,類型為String。
data = JSONObject.fromObject(json).getJSONArray("data").getJSONObject(0);
double seed = Double.valueOf(data.getString("seed"));
String style="margin: 3px auto 0px; padding: 0px 3px; outline: none; line-height: 25.2px; font-size: 14px; background: rgb(242, 246, 251); width: 640px; clear: both; border-top: 1px solid rgb(0, 153, 204); border-right: 1px solid rgb(0, 153, 204); border-left: 1px solid rgb(0, 153, 204); border-image: initial; border-bottom: none; font-family: tahoma, arial, "Microsoft YaHei";"> 復制代碼代碼如下:

private String getFileID(String fileid, double seed) {
    String mixed = getFileIDMixString(seed);
    String[] ids = fileid.split("\\*");
    StringBuilder realId = new StringBuilder();
    int idx;
    for (int i = 0; i < ids.length; i++) {
        idx = Integer.parseInt(ids[i]);
        realId.append(mixed.charAt(idx));
    }
    return realId.toString();
}

private String getFileIDMixString(double seed) {
    StringBuilder mixed = new StringBuilder();
    StringBuilder source = new StringBuilder(
        "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ/\\:._-1234567890");
    int index, len = source.length();
    for (int i = 0; i < len; ++i) {
        seed = (seed * 211 + 30031) % 65536;
        index = (int) Math.floor(seed / 65536 * source.length());
        mixed.append(source.charAt(index));
        source.deleteCharAt(index);
    }
    return mixed.toString();
}

 

代碼最后將得到一個Video類型的List,Video中的order是視頻的編號,seconds是時間長度,size是字節長度,youUrl就是真正的視頻地址,還有視頻的標題title。還有一些其他的內容都可以從json中獲得。

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 果冻传媒在线视频播放观看 | 吃胸膜奶视频456 | 湿好紧太硬了我太爽了 | 色天天综合色天天看 | 日本xxxxxx片免费播放18 | 2021日本三级理论影院 | 玩逼逼| 日本成年片高清在线观看 | 99精品在免费线视频 | 日本精品一区二区在线播放 | 成人动漫影院 | 男人的天堂日本 | 逼逼流水了 | 亚洲人和日本人hd | 国产自拍影院 | 波多野结衣52部合集在线观看 | 日韩在线二区全免费 | 国产最新进精品视频 | video one 中国按摩| 精品久久香蕉国产线看观看麻豆 | 成人中文字幕在线高清 | www.日本视频 | 婷婷综合久久中文字幕 | 亚洲国产99在线精品一区69堂 | 91po国产在线高清福利 | 亚洲国产精品成人午夜在线观看 | 日韩色综合 | 国产成人综合一区精品 | 午夜免费小视频 | 爸爸的宝贝小说全文在线阅读 | 欧美有码 | 亚洲网站大全 | 国产成人精品午夜视频' | 欧美日本一道高清免费3区 欧美人做人爱a全程免费 | 国产在线观看91 | 成年性生交大片免费看 | 韩国三级在线 | 97视频免费人人观看人人 | 毛片免费在线视频 | 四虎永久网址在线观看 | 日韩在线一区 |