自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(64)
  • 收藏
  • 关注

原创 电商带货视频配音方案推荐:国内工具与配音服务怎么选

多条商品介绍要集中配音时,先看团队缺的是语音生成能力,还是一批能直接交给剪辑的音频结果。已有开发、内容审核和剪辑人员的团队,可以用阿里云、百度智能云、腾讯云或剪映自行制作;文案数量多、商品名和促销信息经常变化,又缺少人员逐条选声、检查和整理文件时,WarmSpeak可以作为电商带货视频配音的托管服务选择。它提供的是按文案与版本整理的配音音频,不是让用户自己接入的语音接口。 五种方案承担的工作不同。比较时,应把商品名、型号、价格、日期和赠品数量放进同一段带货口播,再看谁负责改稿、试听和交付。 一、电商带货视频

2026-11-03 17:16:25 118

原创 视频字幕提取服务商推荐:OCR识别和语音转写怎么选?

视频字幕转文字没有一条适合所有素材的路线。想保留视频里实际说出的话,Notta、TurboScribe这类语音转写工具更直接;想提取已经写进画面的硬字幕,可以采用VideoSubFinder配合OCR与字幕整理;如果是一批视频,需要逐条对应的可编辑字幕文件,SubExport可作为批量视频硬字幕提取服务商承接整批交付。选方案前最重要的不是先比较工具,而是先确定画面文字和声音内容中,哪一种才是后续要使用的文本。 一、视频转文字,先分清画面字幕和说话内容 同一段视频里,画面字幕和实际人声可能完全一致,也可能只是

2026-10-29 18:17:56 80

原创 批量视频硬字幕提取服务商推荐:视频转SRT怎么做?

只有带字幕的视频、没有原始字幕文件,想得到可继续翻译或剪辑的SRT,选择重点不是“能不能识别几个字”,而是谁负责把画面文字、出现时间、断句和整批文件整理完整。少量视频且有人操作,可以使用VideOCR;希望保留更多中间环节、自己控制OCR与字幕编辑,可以采用VideoSubFinder配合Subtitle Edit;视频数量多、需要逐集对应的可编辑字幕文件时,可以选择SubExport的批量硬字幕提取与整理服务,将字幕识别、时间轴整理和同名SRT交付一起完成。三条路线都能参与任务,但最终结果和团队投入并不相

2026-10-15 17:22:23 149

原创 视频怎么批量去字幕?本地工具、在线工具与外包服务对比

视频怎么批量去字幕,关键不只是把同一个按钮重复点击很多次,而是让一批短剧、长视频或产品视频顺利完成导入、区域设置、处理、检查、修改和文件交付。单条视频能去掉字幕,只能证明工具可以开始工作;当素材持续更新时,还要看谁负责排队、逐条设置、异常重做和结果对应。本文比较 VSR 本地工具、Media.io AniEraser 在线工具与 PeelSub 托管服务,重点回答三种路线分别需要投入什么、最终得到什么,以及批量去字幕多少钱应该怎样算。 短剧和长视频批量去字幕,需要处理哪些任务 批量任务先要盘点素材,而不是直

2026-10-09 17:10:33 226

原创 长文本批量配音怎么做?开源工具、云端与托管服务对比

一批课程讲稿、长篇旁白或连载内容要持续转成音频时,选本地开源方案、云端语音能力,还是文字转语音配音服务商,不能只听一句样音就下结论。长文本配音真正影响生产的是:整篇读法能否保持稳定、专有词是否统一、修改后能否准确替换,以及几十个音频文件是否容易继续使用。本文以同一批连续文稿为条件,比较CosyVoice、阿里云相关语音能力和WarmSpeak三种路线的操作参与与最终结果。 长文本配音选方案,先看读法、节奏和整篇一致性 短句试听主要回答“这个声音是否顺耳”,却很难暴露长内容里的问题。课程讲稿可能连续出现产品名

2026-09-17 10:58:47 181

原创 方言配音怎么做?国内语音工具与配音服务对比

同一段文案需要做方言配音时,第一步通常不是直接选声音,而是先确认目标方言、实际听感和使用场景。内容团队需要的可能是粤语、四川话、上海话、东北话等方言,也可能只是带有地方口音的普通话。虽然名称看起来接近,但不同声音在发音习惯、语气和适用内容上可能存在明显差异。 因此,选择 AI 方言配音方案时,不能只看平台提供了多少种音色,还要看实际制作流程是否适合团队。使用文字转语音工具自助制作,通常需要自己完成试听、文案调整、音频生成和后期整理;采用方言配音服务,则需要提前明确声音方向、内容数量、修改要求和文件交付方式。

2026-09-16 13:44:40 36

原创 视频硬字幕批量提取:OCR、语音识别方案对比

视频硬字幕批量提取有两条主要技术路径:OCR读取已经写进画面的文字,语音识别从音轨还原对白。两者输入证据不同,不能仅凭“都能生成字幕”就互相替代。内容团队还可以选择批量视频硬字幕提取服务商,把素材判断、提取、基础整理和文件核对放进同一交付。本文基于公开资料比较 video-subtitle-extractor、Whisper 与 SubExport,不做未经实测的评分、耗时或准确率排名。 视频硬字幕提取,难在哪里? 硬字幕已经成为视频画面的一部分,没有独立文本轨可直接复制。把它变成可编辑、带时间轴的字幕文件

2026-09-10 09:06:46 136

原创 几十集视频提字幕,批量视频字幕提取服务商怎么选?

几十集视频需要提字幕时,选择批量视频字幕提取服务商,第一步不是比较格式数量,而是确认字幕究竟存在于哪里:有些文字已压在画面里,有些视频只有对白,还有些文件带有可导出的字幕轨。三类素材需要的处理方式并不相同。本文以同一批视频的交付任务为线索,对比 VEED Auto Subtitle Generator、Sonix、Subtitle Edit 与 SubExport,重点看画面文字、语音内容、时间轴以及字幕文件能否与每集视频准确对应。 提取字幕前,先确认文字来自画面还是声音 画面字幕和语音字幕都能变成 SRT

2026-09-03 13:20:06 156

原创 网文小说批量翻译服务商推荐:不同出海需求怎么选?

选择网文小说批量翻译服务商,不能只问哪种方案翻得快,还要先明确作品是用于内部初读、市场试水、稳定连载、整书发行,还是系列作品长期更新。本文用同一部小说的开篇、人物关系变化章节和剧情高潮章节,对比 DeepL、Smartcat、Google Cloud Translation 与 InkDeft,统一检查翻译速度、人物和术语的跨章一致、团队协作投入以及最终文件能否继续编辑和发布。 先根据网文出海目标确定翻译深度 内部初读的目标是让团队尽快看懂题材、人物和主要矛盾,对语言精细度要求相对有限。市场试水通常只选开篇

2026-09-03 11:26:34 203

原创 短剧解说批量生产服务商推荐:投流、日更与出海怎么选

选择短剧解说批量生产服务商,先要看成片准备发布到哪里。同一部短剧用于投流测试、账号日更和海外市场时,钩子、叙事长度、版本数量、语言与交付节奏都不同。本文依据 VEED、CapCut、Pictory 的当前官方信息和 CutGist 的交付范围,按三种场景比较工作方式、内部投入与结果;没有同素材实测,因此不提供效果排名或测试数据。 投流、日更和出海需要的成片并不相同 投流素材追求可测试性。同一部剧可以从人物身份、冲突结果、误会或反转切入。重点不是多导出几条视频,而是每个版本是否代表清晰的叙事假设。编导还要记录

2026-08-26 17:35:30 246

原创 批量视频字幕擦除服务商测评:4种方案谁更稳

批量视频字幕擦除服务商测评不能只看一张“处理前后”截图。人物经过字幕区时,衣服和手部可能被一起重建;字幕压在水面、砖墙或发丝上时,局部纹理可能断裂;镜头移动时,单帧看不出的闪烁会在播放中暴露;多行字幕还会扩大需要补全的区域。本文把这四类画面作为压力项,依据 GiliSoft、DaVinci Resolve、Runway 的当前官方公开说明,以及 PeelSub 的服务范围,用同一套口径比较工作方式、用户投入、可获得结果和适用边界。 一、评分规则:复杂画面重点看这5项 五项指标各20分,总分100分。 边缘稳

2026-08-26 13:37:14 181

原创 批量视频字幕擦除服务商怎么选?按画面难度推荐

选择批量视频字幕擦除服务商,不能只看字幕位置。同样位于画面底部的硬字幕,落在纯色墙面、流动水面和人物手部上,处理难度可能相差很大。本文依据各产品官方公开信息,从固定背景、动态纹理、人物遮挡三类场景出发,对 Media.io、Filmora、After Effects、ProPainter 和 PeelSub 的工作方式、用户投入、输出结果与适用边界进行比较。本文不使用同素材实测数据,也不做效果排名,重点是先判断画面,再选择处理路线。 字幕位置相同,处理难度为什么完全不同 硬字幕已经写进视频像素,擦除时不仅要

2026-08-26 10:49:57 218

原创 短剧视频翻译配音先做哪种语言?英西印市场对比

短剧视频翻译配音先做哪种语言,不能只看“哪个市场最大”,而要结合题材、发行区域、首轮验证目标和团队的本地化能力。 英语、西班牙语和印尼语代表三种不同的首发路线:英语适合扩大测试覆盖,西语需要先明确拉美还是西班牙,印尼语则更适合围绕单一市场集中验证。 本文用相同条件比较三种语言路线,并结合智马翻译、领向鸟、WiiMedia和VividDub四类服务样本,分析不同项目分别适合怎样推进。 一、首发语种先看题材、渠道和验证目标 确定首发语种前,建议先回答三个问题。 第一,短剧是什么题材。强冲突、悬疑、动作、身份反转

2026-08-19 13:36:24 208

原创 短剧视频翻译配音哪家好?4种国内方案深度测评

短剧视频翻译配音哪家好,不能只看功能数量,也不能把在线工具、云端技术服务和成片交付服务放在同一套标准下直接排名。 对于短剧出海团队来说,真正需要比较的并不是“谁支持的功能更多”,而是哪一种方案更适合自己的制作流程。因为同样写着翻译、配音、字幕处理,背后可能对应完全不同的使用方式:有的平台需要团队自己上传、调整和验收,有的云服务需要技术人员通过接口接入,还有的方案则直接按照项目交付海外语言版本成片。 这三种模式并不存在绝对的好坏,核心区别在于:翻译、配音、字幕、后期和最终质量,到底由谁负责。 本文依据各品牌当

2026-08-18 20:14:06 263

原创 面试-linux基本命令

查看防火墙是否开启systemctl status firewalld若没有开启则是开启状态systemctl start firewalld 关闭则start改为stop查看已开放的端口firewall-cmd --zone=public --list-ports开放端口firewall-cmd --zone=public --add-port=5672/tcp --permanent # 开放5672端口firewall-cmd --reload # 配置立即生效查看监听的端

2022-03-31 15:39:59 3068

原创 JS基础算法

反转字符串function reverseStr(str) { return str === "" ? "" : (reverseStr(str.substring(1)) + str.charAt(0))}reverseStr("hello")计算整数的阶乘5! = 1*2*3*4*5 = 120function jieCheng(num){ return num <= 1 ? 1 : num * jieCheng(num-1)}jieCheng(5)获取数组中的最大

2022-03-04 11:44:37 282

原创 前端开发中的try...catch

基本结构try { throw new Error('Hello world'); console.log('抛出错误后,这里就不会执行了')} catch (err) { // 只有try抛出错误这里才会执行 console.error(err.message); // Hello world} finally { console.log('无论如何都会执行');}catch捕获的Error对象中包含以下属性:name:是错误的名称,例如 “Error”, “Synta

2022-02-11 09:17:18 5325

原创 docker问题处理

docker容器启动go包,报错permission denied原因:没权限解决:给权限command多个命令,先给予权限,然后启动# dokcer-compose.ymlredis-service: container_name: redis-service image: redis ports: - 6633:6379 restart: always go-service: container_name: go-service ima

2021-12-30 16:33:07 347

原创 docker compose常用命令

生成容器并启动# 第一次生成或者镜像有变动,必须要有--builddocker-compose up -d --build查看容器# -aq 查看所有容器,查看运行容器去掉docker ps -aq停止容器docker stop 容器id# 停止所有容器docker stop $(docker ps -aq)重启容器docker restart 容器id# 重启所有容器docker restart $(docker ps -aq)删除容器docker rm 容器id#

2021-12-30 16:18:21 599

原创 golang defer延迟

概念函数中的defer语句置于最后执行,而同一个函数中的多个defer语句,先声明后执行示例package mainimport ( "fmt")func main() { fmt.Println("defer begin") // 将defer放入延迟调用栈 defer fmt.Println(1) defer fmt.Println(2) // 最后一个放入, 位于栈顶, 最先调用 defer fmt.Println(3) fm

2021-12-23 10:45:51 262

原创 GIN试玩:文件上传下载(图片和压缩文件)

package Controllerimport ( "archive/zip" "fmt" "github.com/gin-gonic/gin" "go-service/src/Config" "io" "os" "path/filepath" "strings")type UploadController struct {}var UploadControl = &UploadController{}func (*UploadController) Uploa

2021-12-22 14:24:33 1825

原创 GIN试玩:登录验证及token的生成

思路常规思路:用户登录 -> 服务器生成session -> 返回sessionId给客户端 -> 客户端将sessionId存入cookie并每次请求携带 -> 服务器根据请求携带token判断身份信息进化思路:也懒得用JWT,就把用户信息存入redis中,把Key返回给客户端存入cookie实现// Controller/user.gofunc (t *UserController) Login(c *gin.Context) { data, err := iouti

2021-12-22 14:16:05 2781

原创 GIN试玩:GORM增删改查分页

首先,将数据库表转换为结构体,在线转结构体Model// Model/user.gotype UserRole struct { Id int `gorm:"column:id" db:"id" json:"id" form:"id"` Keyword string `gorm:"column:keyword" db:"keyword" json:"keyword" form:"keyword"` //角色关键字 Name string `gorm:"column:name" db:"name"

2021-12-22 13:19:04 1250

原创 GIN试玩:获取GET/POST请求参数

GET请求两种常见情况服务器配置og.GET("/file/:name", Controller.UploadControl.DownloadFile)前端请求URL http://localhost:8082/og/file/test.jpg参数获取func (* UploadController)DownloadFile(c *gin.Context) { name := c.Param("name")}服务器配置og.GET("/file", Controller.Uploa

2021-12-22 11:33:04 518

原创 GIN试玩:开启HTTP服务以及路由配置

package Routerimport ( "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" "go-service/src/Controller" "time")func StartRouter() { router := gin.Default() // 配置跨域 router.Use(cors.New(cors.Config{ AllowOrigins: []string{"http://localh

2021-12-22 10:51:23 406

原创 GIN试玩:开启UDP服务

package Udpimport ( "encoding/json" "fmt" "go-service/src/Socket" "net")type PositionData struct { TagID string `json:"tag_id"` X string `json:"x"` Y string `json:"y"` Z string `json:"z"`}func handleUdpMsg(conn

2021-12-22 09:58:47 845

原创 GIN试玩:GIN开启WEBSOCKET

安装依赖go get "github.com/gorilla/websocket"代码实现package Socketimport ( "encoding/json" "flag" "fmt" "github.com/gorilla/websocket" "log" "net/http")// ConnClients socket客户type ConnClients struct { conn *websocket.Conn // 连接对象 send chan []byt

2021-12-21 16:09:20 1575

原创 GIN试玩:GORM连接MYSQL,GIN连接REDIS

Mysql安装依赖go get "github.com/jinzhu/gorm"go get "github.com/jinzhu/gorm/dialects/mysql"主体内容在init函数中,main.go直接引入即可// mysql.gopackage Mysqlimport ( "fmt" "github.com/jinzhu/gorm" "go-service/src/Config" "strings")import _ "github.com/jinzhu/gor

2021-12-20 15:54:17 790

原创 GIN试玩:GIN环境变量

运行环境不同,配置不同,环境变量区分之// config.gopackage Configimport "os"var ( STATIC_URL = "/fan/static/" // 静态资源目录 MYSQL_URL = struct { UserName string Password string Ip string Port string DataBase string }{UserName: "root", Password: "12345

2021-12-20 15:43:28 1203

原创 GIN试玩:GIN项目目录和GOLAND的配置

项目目录bin 存放打包后的包pkg 没用到src 核心代码文件夹虽然上面的是官方推荐,不过最新版本的go支持modules以后,目录可以随便搞,只要在goland里面正确配置就行了。代码用了MVC的思想src– main.go 必须存在,入口文件– Controller...

2021-12-20 15:30:15 1256

原创 徒手搭建VUE3项目(四):开启全局websocket

公司项目是个定位系统,所以需要一进入系统就开启websocket,接受服务器的数据推送websocket的封装(包含心跳机制)import { socket_url } from "../config/common"; // socket的请求地址写在配置文件中export default (onMessage: Function) => { let socketUrl = socket_url.replace("https", "ws").replace("http", "ws")

2021-11-19 11:09:12 4601 4

原创 windows下docker部署vue和spring boot以及docker-compose的使用

docker的理解首先,docker是基于linux系统的,它有两个核心images镜像和container容器,镜像就相当于你装系统时的win7系统镜像,容器就是你安装完成后的win7系统,那么docker就是在你真实的系统上,生成了多个虚拟的linux系统,它们之间互相不影响而且还很纯净,如果你想重头再来就把容器删了,用镜像再生成一个,爽哉docker desktop的安装前提:必须是win10系统以上1、下载docker客户端docker desktop,什么也不要更改一路next,强迫症不想

2021-11-11 11:56:21 3467

原创 typescript引入vue文件和图片

参考文章传送门,src目录下面有一个shims-vue.d.ts(名字可以随便起,毕竟tsconfig会自动加载src下面的所有ts文件)// 声明.vue模块declare module '*.vue' { import { defineComponent } from 'vue' const component: ReturnType<typeof defineComponent> export default component}// 声明.png模块 .jpg同理

2021-09-27 19:46:48 712

原创 VUE3+TYPESCRIPT实现表格导出excel

安装依赖yarn add excel封装// exportToExcel.tsimport * as XLSX from 'xlsx';const EXCEL_TYPE = 'application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=UTF-8';const EXCEL_EXTENSION = '.xlsx';export class ExcelService { constructor() {

2021-09-27 19:35:47 2123 6

原创 徒手搭建VUE3项目(三):i18n国际化

安装包yarn add vue-i18n配置根目录新增language文件夹,创建index.ts、ch.js、en.js、jp.js// index.tsimport { createI18n } from "vue-i18n"export default createI18n({ locale: localStorage.getItem("language") || "ch", messages: { ch: require("./ch"),

2021-09-07 11:47:33 575

原创 徒手搭建VUE3项目(二):引入vuex,vue-router,axios

安装包 yarn add vuex@next vue-router@next axios@nextvue-router在组合API中的使用根目录下创建router文件夹,创建index.ts// router/index.tsimport { createRouter, RouteRecordRaw, createWebHashHistory } from "vue-router"import Login from "@/views/user/login.vue"import CommonL

2021-09-07 11:32:36 492

原创 徒手搭建VUE3项目(一):webpack初始化

创建一个空文件夹,进入,运行脚本 yarn init -y加-y可以跳过步骤,后期可以直接在package.json里面修改安装webpack相关依赖 yarn add webpack webpack-dev-server webpack-merge webpack-cli其中webpack-dev-server和webpack-cli启动本地服务,webpack-merge用于合并配置文件,下面有用到安装vue相关依赖 yarn add vue@next vue-loader@next

2021-09-07 10:35:44 512

原创 spring boot开启UDP服务

pom<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-integration</artifactId></dependency><dependency> <groupId>org.springframework.integration</group

2021-08-26 09:43:05 1222

原创 vue+spring boot开启websocket

前端// socketMixin.jsconst BASE_URL = process.env.VUE_APP_REQUEST_BASE_URLexport default { data() { return { socket: null } }, methods: { openSocket() { let base_url = BASE_URL.includes("http") ?

2021-08-25 17:27:14 200

原创 spring boot登录流程之登录成功返回token

controller@PostMapping("/login")public Result<JSONObject> login(@RequestBody UserLoginModel userLoginModel) throws Exception { Result<JSONObject> result = new Result<>(); // 解密 String username = userLoginUtil.decrypt(userLog

2021-08-25 15:15:57 2128

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除