今天有人找我帮他抖音视频去水印,发到朋友圈,然后就研究了一下。去水印功能代码如下:
public class DouYinQushuiyin {

    public static void main(String[] args) throws Exception{

        //●抖音链接(使用手机分享功能,复制链接)
String url = "http://v.douyin.com/2MKBC6/"; String url1 ="#在抖音,记录美好生活#好好看 http://v.douyin.com/6xrJQP/ 复制此链接,打开【抖音短视频】,直接观看视频!"; //过滤链接,获取http连接地址
String finalUrl = decodeHttpUrl(url1); //1.利用Jsoup抓取抖音链接
//抓取抖音网页
String htmls = Jsoup.connect(finalUrl).ignoreContentType(true).execute().body();
//System.out.println(htmls); //做测试时使用 //2.利用正则匹配可以抖音下载链接
//playAddr: "https://aweme.snssdk.com/aweme/v1/playwm/?video_id=v0200ffc0000bfil6o4mavffbmroeo80&line=0",
//具体匹配内容格式:「https://aweme.snssdk.com/aweme/...line=0」
Pattern patternCompile = Pattern.compile("(?<=playAddr: \")https?://.+(?=\",)");
//利用Pattern.compile("正则条件").matcher("匹配的字符串对象")方法可以将需要匹配的字段进行匹配封装 返回一个封装了匹配的字符串Matcher对象 //3.匹配后封装成Matcher对象
Matcher m = patternCompile.matcher(htmls); //4.①利用Matcher中的group方法获取匹配的特定字符串 ②利用String的replace方法替换特定字符,得到抖音的去水印链接
String matchUrl ="";
while(m.find()) {
matchUrl = m.group(0).replaceAll("playwm", "play");
} //5.将链接封装成流
//注:由于抖音对请求头有限制,只能设置一个伪装手机浏览器请求头才可实现去水印下载
Map<String, String> headers = new HashMap<>();
headers.put("Connection", "keep-alive");
headers.put("Host", "aweme.snssdk.com");
headers.put("User-Agent", "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_4 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/16D57 Version/12.0 Safari/604.1"); //6.利用Joup获取视频对象,并作封装成一个输入流对象
BufferedInputStream in = Jsoup.connect(matchUrl).headers(headers).timeout(10000).ignoreContentType(true).execute().bodyStream(); Long timetmp = new Date().getTime();
String fileAddress = "d:/抖音视频/douyin_"+timetmp+".mp4"; //7.封装一个保存文件的路径对象
File fileSavePath = new File(fileAddress); //注:如果保存文件夹不存在,那么则创建该文件夹
File fileParent = fileSavePath.getParentFile();
if(!fileParent.exists()){
fileParent.mkdirs();
} //8.新建一个输出流对象
OutputStream out =
new BufferedOutputStream(
new FileOutputStream(fileSavePath)); //9.遍历输出文件
int b ;
while((b = in.read()) != -1) {
out.write(b);
} out.close();//关闭输出流
in.close(); //关闭输入流 //注:打印获取的链接
System.out.println("-----抖音去水印链接-----\n"+matchUrl);
System.out.println("\n-----视频保存路径-----\n"+fileSavePath.getAbsolutePath());
} public static String decodeHttpUrl(String url) {
int start = url.indexOf("http");
int end = url.lastIndexOf("/");
String decodeurl = url.substring(start, end);
return decodeurl;
}
}

JAVA代码实现抖音短视频去水印功能的更多相关文章

  1. Python爬虫---爬取抖音短视频

    目录 前言 抖音爬虫制作 选定网页 分析网页 提取id构造网址 拼接数据包链接 获取视频地址 下载视频 全部代码 实现结果 待解决的问题 前言 最近一直想要写一个抖音爬虫来批量下载抖音的短视频,但是经 ...

  2. Python音视频开发:消除抖音短视频Logo的图形化工具实现

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 在<Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解>节介绍了怎么通过Python+Moviepy+OpenCV实现 ...

  3. Python音视频开发:消除抖音短视频Logo和去电视台标

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...

  4. 视频剪辑软件调研:Adobe Premiere、会声会影、抖音短视频

    Adobe Premiere.会声会影.抖音短视频基本功能特点对比: 特点 Adobe Premiere 会声会影 抖音短视频 运行平台 Win7/Win8/Win10.macOS  Win7/Win ...

  5. 最新快手抖音短视频源码web+APP架设教程+完整数据

    最新更新快手抖音短视频源码web+APP架设教程+完整数据完美运行 视频直播源码,好东西,反正有人要就是了. 下载地址:https://pan.baidu.com/wap/init?surl=POU5 ...

  6. 100行代码搞定抖音短视频App,终于可以和美女合唱了。

    欢迎大家前往腾讯云+社区,获取更多腾讯海量技术实践干货哦~ 本文由视频咖 发表于云+社区专栏 本文作者,shengcui,腾讯云高级开发工程师,负责移动客户端开发 最近抖音最近又带了一波合唱的节奏,老 ...

  7. 抖音短视频爆火的背后到底是什么——如何快速的开发一个完整的直播app

    前言 今年移动直播行业的兴起,诞生了一大批网红,甚至明星也开始直播了,因此不得不跟上时代的步伐,由于第一次接触的原因,因此花了很多时间了解直播,今天我来教你从零开始搭建一个完整的直播app,希望能帮助 ...

  8. Python音视频开发:消除抖音短视频Logo和去电视台标的实现详解

    ☞ ░ 前往老猿Python博文目录 ░ 一.引言 对于带Logo(如抖音Logo.电视台标)的视频,有三种方案进行Logo消除: 直接将对应区域用对应图像替换: 直接将对应区域模糊化: 通过变换将要 ...

  9. 使用python爬虫,批量爬取抖音app视频(requests+Fiddler+appium)

    抖音很火,楼主使用python随机爬取抖音视频,并且无水印下载,人家都说天下没有爬不到的数据,so,楼主决定试试水,纯属技术爱好,分享给大家.. 1.楼主首先使用Fiddler4来抓取手机抖音app这 ...

随机推荐

  1. Zookeeper集群"脑裂"问题 - 运维总结

    关于集群中的"脑裂"问题,之前已经在这里详细介绍过,下面重点说下Zookeeper脑裂问题的处理办法.ooKeeper是用来协调(同步)分布式进程的服务,提供了一个简单高性能的协调 ...

  2. Redis5设计与源码分析读后感(四)压缩列表

    一.引言 上一节我们总结了跳跃表的知识,我们知道了有序数组可以用跳跃表实现,也可以用压缩列表来实现,这一篇文章我们来总结一下压缩列表相关的知识. 二.压缩列表简介 定义:压缩列表 ziplist 本质 ...

  3. 干货满满!关于Pycharm远程开发

    可以在Windows中使用Pycharm编写代码,而代码的调试运行可以使用远程服务器中的python解释器. 在本地创建好工程项目(或从git上clone下代码)后,用Pycharm打开: 打开「To ...

  4. 大白话谈JVM的类加载机制

    前言 我们很多小伙伴平时都是做JAVA开发的,那么作为一名合格的工程师,你是否有仔细的思考过JVM的运行原理呢. 如果懂得了JVM的运行原理和内存模型,像是一些JVM调优.垃圾回收机制等等的问题我们才 ...

  5. 二维数组,column可以从后往前循环

  6. RTThread DFS文件系统使用: 基于使用SFUD驱动的SPI FLASH之上的ELM FATFS文件系统

    参考博文: 博文很长,但是实际要操作的步骤没几下. http://m.elecfans.com/article/730878.html  为了防止几年后文章链接找不到,我把文章复制过来了 /***** ...

  7. Arduino读取写入电压值

    读取写入方式分为数字和模拟 读取方式:(注意接地) 数字:digitalRead(pin); 模拟:analogRead(A1);float val=value*(5.0/1023.0);       ...

  8. 【题解】[USACO12MAR]Cows in a Skyscraper G

    题目链接 题目大意:给定一个集合\(S\),给一个限制条件\(P\),要求划分集合,使得每一个子集\(A\in S\),\(A\)满足限制条件\(P\),且划分总数最小. 注意到数据范围\(n< ...

  9. 一键安装PyCharm

    1.准备阶段,首先去官网下载:https://download.jetbrains.8686c.com/python/pycharm-professional-2019.1.exe 官网地址:http ...

  10. Linux就该这么学28期——Day02 2.1-2.3

    本文记录必须掌握的Linux命令,部分内容引用自https://www.linuxprobe.com/basic-learning-02.html 工作中可使用https://www.linuxcoo ...