Uniapp 短视频去水印分析工具开发实现

[复制链接]
发表于 2025-10-31 03:39:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
迩来搞了一个故意思的小工具——短视频去水印分析器!这玩意儿可以把短视频中的水印给抹掉,还能提取视频、封面等资源。整个项目用了 Uniapp 开发,做完后体验了一下,发现还挺随手。本日就来跟各人聊聊实现思绪和代码细节~
需求分析

我们的目标是做一个简朴易用的小工具,支持以下功能:

  • 输入短视频链接,辨认并分析出视频内容。
  • 展示视频信息:视频封面、作者信息、标题等。
  • 下载和复制功能:可以方便地复制视频链接、封面链接和标题。
代码拆解与讲授

先来看代码的大要结构,我们把重要部门放在 <template> 和 <script> 里,固然另有一些样式细节。不要发急,我们会逐段分析,干货满满~

页面模板部门 (<template>)

起首是页面的结构,用 Vue 的模板语法来结构。这里用了 uni-notice-bar 来放一些提示,克制用户乱用这工具(你懂的,须要的免责声明)。
  1. <uni-notice-bar
  2.   :show-icon="true"
  3.   :scrollable="true"
  4.   :single="true"
  5.   text="本工具仅供学习交流实用,请勿用于商业用途。"
  6. ></uni-notice-bar>
复制代码
这段代码很简朴,就是一个横幅关照条,提示用户“仅供学习用途”,毕竟,咱们要做个遵法的好公民。
接下来是输入框、辨认按钮、展示效果的地区:
  1. <view class="input-section card">
  2.   <input v-model="inputText"  placeholder="请输入文本" class="input-box" />
  3.   <view class="button-group">
  4.     <button class="action-button" @tap="clearText">清空</button>
  5.     <button class="action-button" @tap="extractLinks">识别</button>
  6.   </view>
  7. </view>
复制代码

  • input:绑定 v-model="inputText",获取用户输入的链接。
  • 按钮组:两个按钮,一个清空输入框,一个开始辨认。

辨认链接功能 (extractLinks 方法)

代码如下:
  1. async extractLinks() {
  2.   const urlPattern = /(https?:\/\/[^\s]+)/g;
  3.   const links = this.inputText.match(urlPattern);
  4.   if (links && links.length > 0) {
  5.     this.extractedLinks = links;
  6.     this.showNoLinkMessage = false;
  7.     await this.fetchVideoData(links[0]);
  8.   } else {
  9.     this.extractedLinks = [];
  10.     this.showNoLinkMessage = true;
  11.   }
  12. }
复制代码

  • 正则匹配链接:简朴地通过正则表达式来辨认用户输入中的 URL。
  • 调用视频分析函数:辨认到 URL 后,就调用 fetchVideoData,实行分析视频信息。
哀求视频分析接口 (fetchVideoData 方法)

通过接口哀求获取视频信息,这里用了 uni.request 方法。
  1. async fetchVideoData(link) {
  2.   const encodedURL = encodeURIComponent(link);
  3.   await uni.request({
  4.     url: `${VideoParserAPI}?url=${encodedURL}`,
  5.     method: 'GET',
  6.     success: (response) => {
  7.       if (response.data.code === 200) {
  8.         this.data = response.data.data;
  9.       } else {
  10.         this.data = null;
  11.         uni.showToast({ title: response.data.msg || '解析失败', icon: 'none' });
  12.       }
  13.     },
  14.     fail: () => {
  15.       this.data = null;
  16.       uni.showToast({ title: '请求出错', icon: 'none' });
  17.     }
  18.   });
  19. }
复制代码

  • URL编码:encodeURIComponent 确保链接转达准确。
  • 哀求乐成:如果 code === 200,则表现分析乐成,数据就放在 this.data 里,反面展示就靠这个了。
  • 哀求失败:不管啥缘故原由,直接 uni.showToast 弹个错误提示就完事了。

视频播放与信息展示

分析乐成后,我们会展示作者、标题、封面等信息,趁便整了个播放按钮。
  1. <view class="card" v-if="data">
  2.   <view class="author">
  3.     <image :src="data.author.avatar" class="avatar"></image>
  4.     <text class="author-name">{{ data.author.name }}</text>
  5.   </view>
  6.   <text class="title">{{ data.title }}</text>
  7.   <image :src="data.cover_url" class="cover"></image>
  8.   <button class="play-button" @tap="playVideo">播放视频</button>
  9. </view>
复制代码

  • v-if="data":只有当 data 有内容时才表现。
  • 播放视频:点击按钮后 playVideo 方法会表现 <video> 标签,开始播放视频。
  1. playVideo() {
  2.   this.showVideo = true;
  3. }
复制代码
下载和复制功能

提供了几个按钮,可以让用户复制视频的标题、链接等信息。代码如下:
  1. copyTitle() {
  2.   if (this.data && this.data.title) {
  3.     uni.setClipboardData({
  4.       data: this.data.title,
  5.       success: () => {
  6.         uni.showToast({ title: '标题已复制', icon: 'success' });
  7.       },
  8.       fail: () => {
  9.         uni.showToast({ title: '复制失败', icon: 'none' });
  10.       }
  11.     });
  12.   }
  13. }
复制代码
其他按钮(如复制视频链接、复制封面链接)逻辑雷同,就不赘述了。
样式与美化

页面的样式重要会合在 <style> 标签内,针对差别组件举行样式界说,好比 card、input-box、button-group 等等。
  1. .container {
  2.   display: flex;
  3.   flex-direction: column;
  4.   align-items: center;
  5.   padding: 20rpx;
  6.   background-color: #f5f5f5;
  7. }
  8. .input-box {
  9.   width: 100%;
  10.   height: 60rpx;
  11.   padding: 10rpx;
  12.   border: 1px solid #ccc;
  13.   border-radius: 10rpx;
  14.   margin-bottom: 10rpx;
  15. }
  16. .action-button {
  17.   width: 45%;
  18.   height: 60rpx;
  19.   background-color: #007aff;
  20.   color: #fff;
  21.   border-radius: 10rpx;
  22. }
复制代码
样式计划保持轻便,让用户可以舒畅地利用,整个页面风格清新、轻便。
下面是效果展示:


总结

整个过程还是蛮顺畅的,重要是借助了 Uniapp 和现成的视频分析 API 来实现短视频去水印分析的焦点功能。固然,代码中还是有一些细节必要注意,好比正则表达式的利用、接口哀求的错误处理处罚等。整个工具界面友爱,利用简朴,信任各人用起来会感觉不错!
代码着实也没啥复杂的地方,简朴实用才是硬原理。渴望各人喜欢这个工具,如果你有更好的优化发起,欢迎一起交换~
回复

使用道具 举报

登录后关闭弹窗

登录参与点评抽奖  加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表