Android實現(xiàn)抖音去水印

前些天刷抖音,刷到個好看的動漫視頻。本想著做個手機壁紙,但是下載到本地后發(fā)現(xiàn)有水印。這可不行啊,多影響美觀,于是就寫了個獲取無水印視頻的Demo。

Github傳送門 biu biu biu ~~~

實現(xiàn)思路

抖音視頻有個復制鏈接的功能,這個鏈接是能在網頁打開的,如下:

https://v.douyin.com/qsSFEV/

這是個短鏈接,復制到瀏覽器地址欄后得到的長鏈接是下面的格式:

https://www.iesdouyin.com/share/video/6780619456570789127/?region=CN&mid=6771282500762471182&u_code=14fai9b88&titleType=title&utm_source=copy_link&utm_campaign=client_share&utm_medium=android&app=aweme

找到html里的video標簽的src元素就是視頻的播放鏈接地址。但這個播放鏈接的地址是帶有水印的,如下:

https://aweme.snssdk.com/aweme/v1/playwm/?s_vid=93f1b41336a8b7a442dbf1c29c6bbc567de80acd4fb17215462db57f4eabe430bb64051acde98da903f0d8cdc9f23f24485b28f6a85ef87dafed6915bb0494f6&line=0

只需要替換掉鏈接中的playwm成play就是無水印的視頻了(是不是很簡單)。

代碼實現(xiàn)

  1. 獲取剪切版的內容
    /**
     * 獲取剪切版內容
     *
     * @return 剪切版內容
     */
    public String getShareText() {
        ClipboardManager cm = (ClipboardManager) getSystemService(CLIPBOARD_SERVICE);
        ClipData data = null;
        if (cm != null) {
            data = cm.getPrimaryClip();
        }
        ClipData.Item item = null;
        if (data != null) {
            item = data.getItemAt(0);
        }
        String content = null;
        if (item != null) {
            content = item.getText().toString();
        }
        return content;
    }
  1. 提取鏈接地址
   /**
     * 獲取鏈接地址
     *
     * @param text 獲取瀏覽器分享出來的text文本
     */
    public static String getCompleteUrl(String text) {
        Pattern p = Pattern.compile("((http|ftp|https)://)(([a-zA-Z0-9._-]+\\.[a-zA-Z]{2,6})|([0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}))(:[0-9]{1,4})*(/[a-zA-Z0-9&%_./-~-]*)?", Pattern.CASE_INSENSITIVE);
        Matcher matcher = p.matcher(text);
        boolean find = matcher.find();
        if (find) {
            return matcher.group();
        } else {
            return "";
        }
    }
  1. 從Html中獲取視頻播放地址
    Document doc = Jsoup.connect(url).userAgent(userAgent).get();
    Elements video = doc.select("video[src]");
    for (Element el : video) {
        String videoUrl = el.attr("src");
        videoUrl = videoUrl.replace("playwm", "play");
        // 獲取重定向的URL
        videoUrl = getRealUrl(videoUrl);
     }
  1. 獲取重定向的地址
    /**
     * 獲取重定向地址
     */
    private String getRealUrl(String urlStr) {
        String realUrl = urlStr;
        try {
            URL url = new URL(urlStr);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("user-agent", "Mozilla/5.0.html (iPhone; U; CPU iPhone OS 4_3_3 like Mac " +
                    "OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) " +
                    "Version/5.0.html.2 Mobile/8J2 Safari/6533.18.5 ");
            conn.setInstanceFollowRedirects(false);
            int code = conn.getResponseCode();
            String redirectUrl = "";
            if (302 == code) {
                redirectUrl = conn.getHeaderField("Location");
            }
            if (redirectUrl != null && !redirectUrl.equals("")) {
                realUrl = redirectUrl;
            }
            conn.disconnect();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return realUrl;
    }

然后有了這個地址就可以播放了(貌似這個只能在移動端播放)

差不多就只有這些了,具體的就看代碼吧:

Github傳送門 biu biu biu ~~~

最后

如果你有什么意見和反饋,歡迎到Github提issue(最喜歡別人提issue了)哈哈哈~

?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 抖音視頻如何去水??? 現(xiàn)在大家都喜歡把自己拍的日常上傳到短視頻app中,也喜歡從這些app中看視頻,典型的有抖音、...
    球球_355e閱讀 11,739評論 0 2
  • 文學藝術創(chuàng)作有“源于生活高于生活”一說。藝術源于生活好理解,不能脫離真實胡編亂造。藝術高于生活咋樣理解呢?怎樣高,...
    西安吳墨閱讀 809評論 0 1
  • 殘花隨風飄落 在那親愛的土地 在那可愛的小溪 詩人的贊歌巳遠去 游人的目光巳別離 帶著一身倦戀 一縷殘香 撲向大地...
    書運閱讀 530評論 16 17
  • 今天是我們學校一年1度的家長體驗日。我的心里像懷了一只兔子。激動極了。 ‘...
    鋼鐵咆哮閱讀 350評論 0 1
  • 清朝年間,有一個嗜煙如命的老農,早晨起床臉還沒有洗,就先得抽上一口,要是上茅房,必得先裝滿一袋煙,抽完了才走出茅房...
    Awhatsup閱讀 745評論 3 23

友情鏈接更多精彩內容