前些天刷抖音,刷到个好看的动漫视频。本想着做个手机壁纸,但是下载到本地后发现有水印。这可不行啊,多影响美观,于是就写了个获取无水印视频的Demo。

Github传送门 biu biu biu ~~~

实现思路

抖音视频有个复制链接的功能,这个链接是能在网页打开的,如下:

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就是无水印的视频了(是不是很简单)。

代码实现

  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");// 获取重定向的URLvideoUrl = 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了)哈哈哈~

Android实现抖音去水印相关推荐

  1. 从0开发小程序,一个月时间实现盈利!内附抖音去水印原理

    一.开发前奏 1.背景 近几年短视频行业的兴起,涌现出抖音快手等优秀的app,但是在app上发现优秀视频想要下载到本地时,又奈何总是全程有水印又末尾有平台独白,搜索众多app和小程序大部分要嘛广告众多 ...

  2. 基于android的高仿抖音,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

  3. Android仿抖音加载框之两颗小球转动控件

    Android仿抖音加载框之两颗小球转动控件 本篇文章已授权微信公众号 hongyangAndroid(鸿洋)独家发布. 效果图 安卓版抖音v2.5加载框: 本控件效果图: 使用方法 源码地址:And ...

  4. android仿抖音礼物列表实现,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

  5. word无法打开请去应用商店_抖音去水印 | HTTP Catcher方法全解析

    果仁部落 长按二维码关注 前言 最近快捷指令抖音去水印规则已经失效,导致很多小伙伴前来询问,有一些小伙伴也提供了方法,但是因种种原因不能采纳,非常抱歉,不过今天小编为大家分享更好用的去水印方法,可在正 ...

  6. Android 仿抖音视频播放列表和评论列表

    Android 汇集CSDN.GitHub等最实用的良心之作-KING Android最实用的各种技能点的网址链接(每天都会更新,希望大家用的上) Android 仿抖音系列之视频播放列表和评论列表 ...

  7. iOS快捷指令最全整理(支持iOS14),抖音去水印捷径快手去水印捷径

    收集整理一波iOS捷径库(使用方法见文末,支持iOS14),包括了大家最想要的抖音去水印捷径和快手去水印捷径.大家使用过程中如果发现有啥问题或者想实现什么快捷指令,关注微信公众号"云峰小罗& ...

  8. iOS12捷径(快捷指令),最新抖音去水印捷径,快手去水印捷径

    之前整理过一波很全(100多个)的iOS快捷指令:iOS12捷径最全整理(100多个捷径汇总),包括抖音视频下载,地图导航等,但是发现读者用得最多的还是抖音无水印下载和快手无水印下载这两个捷径. 因为 ...

  9. 一气之下,手撸了一个抖音去水印的工具!

    百因必有果 说一下我为什么要做个抖音视频去水印工具,其实是因为我的沙雕女友,她居然刚我~ 有天晚上她在抖音看见一个非常具有 教育意义 的视频,"男人疼媳妇就该承包全部家务活",然后 ...

  10. android仿抖音关注列表,Android仿抖音列表效果

    本文实例为大家分享了Android仿抖音列表效果的具体代码,供大家参考,具体内容如下 当下抖音非常火热,是不是也很心动做一个类似的app吗? 那我们就用RecyclerView实现这个功能吧,关于内存 ...

最新文章

  1. 【BZOJ 1202】 [HNOI2005]狡猾的商人(枚举区间也可行)
  2. yshon对讲机如何调频率_99%的人都不知道对讲机的这些功能.....
  3. 采用UltraISO制作U盘启动盘
  4. Java对象容器——顺序容器及常用方法
  5. Token Bucket原理
  6. 想创业没有资金,如何获得启动资金?
  7. Hibernate 4.2.8,javassist 3.18.1和ClassCastExceptions –注意您的类路径
  8. 《深入理解Java虚拟机》第5章 调优案例分析与实战
  9. databinding include 控件空指针_Android Jetpack系列——细说DataBinding
  10. C语言error2005,c链接器错误LNK2005已在SDL中定义
  11. matlab地震频谱分析,《基于MATLAB的地震数据的分析》.doc
  12. u盘打不开,提示需要格式化怎么办?
  13. C#:实现一个将字符串转换为整数的方法
  14. 报错:UnicodeDecodeError:: ‘utf-8‘ codec can‘t decode byte 0xc8 in position 0: invalid contin
  15. 清理工作区git clean -fd
  16. C语言无符号数与有符号数的运算原则
  17. 动手学强化学习第三章(马尔可夫决策过程)
  18. Focusky教程 | 输出Focusky网页格式为什么打不开超链接?
  19. 【足式机器人控制算法】(5.1)分解式虚拟模型VMC解耦思想 +反馈控制的方法规划反作用力 +运动学雅可比+虚功原理规划关节扭矩方法
  20. Atals元数据治理-介绍/编译/安装

热门文章

  1. 京东联盟接口——链接取商品sku
  2. 农行笔试题之多少年后两国人均GDP相等
  3. 查看Win10是否永久激活
  4. KT148A语音芯片ic的软件参考代码C语言,一线串口
  5. 小米允许安装未知来源不用sim卡_视频能独立通话的小米手表,会像小米手机一样好用吗?...
  6. [转]外贸出口流程图
  7. 服务器引导损坏怎么处理,硬盘主引导记录(MBR)损坏,一个命令轻松解决问题...
  8. 微信Android端如何安全降级
  9. arduino教程【实战篇】
  10. 计算机管理磁盘分区,一分钟搞定电脑磁盘分区,再也不求人!