资讯动态

古早鬼畜素材整理指南:ffmpeg转码、字幕切片与变调调教全流程

发布时间:2026/9/3 10:27:52 来源:尧图企业网站定制
这个标题更像一个内容研究方向而不是一个可以直接pip install的软件项目。所谓“上古鬼畜明星”指的是鬼畜视频早期传播阶段里被反复剪辑、二创的素材角色“石家庄小夏”在这个语境里属于历史素材标签之一。真正值得拆解的不是某个人物的八卦而是围绕这类老素材展开的本地整理、转码、切片、变调、字幕对齐和批量合成技术流程。这篇文章会把“石家庄小夏”当作一个研究样本代称不谈真实人物身份不评价真实事件只讲技术人员可以复现的工具链。整个过程尽量用离线、本地、可控的方式完成避免把任意素材传到不受控的第三方服务。默认环境是 Windows 或 Linux需要安装的工具也以开源、通用为主。文章里会给出可以直接运行的ffmpeg命令、Python 脚本、批量任务写法以及把这条工作流封装成本地 API 的例子。如果你手里有需要整理的老视频、老录音或者想还原某些古早鬼畜视频的素材处理方式这篇内容可以作为起步模板。先说清楚边界鬼畜素材或老视频片段很可能涉及他人的肖像、声音、著作权或平台规则。本文只讨论技术处理方案不提供任何侵权用途。所有实操验证请使用自己有权使用的素材例如自己拍摄的内容、已获授权的录音、公共领域或明确授权可商用的素材。1. 核心能力速览能力项说明项目类型素材整理与音视频处理工作流不属于某一个独立开源项目主要用途老视频/老录音的转码、音频切片、语音识别、字幕生成、变调调教、批量合成核心工具ffmpeg、ffprobe、Python、faster-whisper / openai-whisper、可选字幕工具推荐硬件CPU 即可跑完转码和切片ASR 识别推荐 8GB 以上内存有 NVIDIA GPU 会更方便显存需求主要取决于 ASR 模型大小和是否使用音源分离模型小模型 CPU 推理可以不占用显存支持平台Windows、Linux、macOS 均可命令结构以跨平台为优先启动方式命令行执行无专用 WebUI可按需封装 FastAPI 服务是否支持 API支持可用 FastAPI 把处理流程包成 HTTP 接口是否支持批量任务支持推荐按“输入目录 输出目录 任务清单日志”的方式组织适合场景自媒体素材库整理、古早鬼畜视频复刻研究、音频切片管理、字幕工程、数据结构化归档不适合场景对真实人物进行恶意丑化、未经授权的商用、伪造声音或图像、规避平台规则等上面这张表是判断这套流水线适不适合你的关键。它不是某款带界面的“一键整合包”而是由一系列通用命令和脚本组成的工作流。熟悉命令行的人拿到之后可以很快扩展不熟悉命令行的人也可以先照着步骤复制命令先跑通一条 1 分钟的测试片段。2. 适用场景与合规边界这套技术栈主要解决的问题是当手上有一批“零散的老视频/老音频”你想把它们统一转成方便处理的格式打上字幕或文本标签然后按时间轴切成小片段再针对片段做调音、变速、变调或重混缩合。典型场景包括个人素材归档把多年收集的素材统一成 H.264 AAC 的 mp4方便后续剪辑。鬼畜二创研究工作流研究古早二创视频里的“倒放、鬼畜调音、千本音、人力VOCALOID”等常见效果并尝试用工具复现。字幕与文本检索给视频做语音识别输出带时间的字幕文件再按台词关键词检索片段。语音切片实验将一段长音频按照停顿或字幕切成几百个短句方便逐句调教。数据准备为后续做语音合成、声音克隆、视频索引模型准备训练测试集。以下边界必须明确真实人物的视频、录音、人脸、声音不是拿来就能用。即使是搞怪或讽刺也可能构成对名誉权、肖像权、声音权益的侵害。不得把技术处理结果用于诈骗、冒充、造谣、诽谤、冒充客服等非法场合。很多视频平台的创作规则不允许对特定人物进行恶意鬼畜尤其是涉及真实身份的内容。发布前要自查。不要让本地服务暴露到公网。如果封装成 API 接口默认只能监听127.0.0.1。3. 环境准备与通用基座3.1 安装 ffmpegffmpeg 是整个流水线里最重要的工具。它负责视频转码、音频提取、切片、变速变调、字幕烧录、画面抽帧等步骤。Windows 用户可以到 ffmpeg 官网下载 release 包把解压后的bin目录加入系统PATHLinux 用户可以用包管理器安装。# Ubuntu/Debian sudo apt update sudo apt install ffmpeg # CentOS/RHEL 系列可以用 EPEL 或源码方式安装 sudo yum install ffmpeg安装完成后验证ffmpeg -version ffprobe -version只要命令能正常输出版本信息就说明环境可用。如果提示找不到命令说明ffmpeg没有进入PATH需要去检查系统环境变量。3.2 安装 Python 与可选依赖Python 主要负责处理字幕时间轴、批量调用 ffmpeg、封装 API。建议使用 Python 3.9 以上版本。python -m venv venv # Windows venv\Scripts\activate # Linux / macOS source venv/bin/activate pip install --upgrade pip pip install fastapi uvicorn pydantic requests如果还需要做本地语音识别可以按需安装 whisper 相关库。需要注意的是whisper 类模型首次运行时会下载模型权重这需要一定的磁盘空间和网络时间所以建议根据自己电脑的性能选择模型大小。# 可选使用 faster-whisper 做 CPU/GPU 推理 pip install faster-whisper # 如果用 openai-whisper也可以 pip install openai-whisper3.3 推荐工作目录结构建议所有素材处理都在独立工作目录里完成不要直接在原始素材目录里乱写文件。目录结构如下material/ raw/ # 原始素材保持只读 work/ # 转码后的中间文件 audio/ # 从视频中提取的音频 frames/ # 抽出的视频关键帧或片段预览图 cuts/ # 切片后的小片段 out/ # 最终产物 logs/ # 日志与任务状态把原始文件放进raw/后只读不改。所有中间产物写入work/这样可以随时清理重来避免污染原始素材。4. 素材接入与统一转码老视频的编码格式很杂可能是 RMVB、AVI、FLV也可能是高码率的 MP4。处理前先摸清素材属性。ffprobe -v error -show_entries formatduration,size -show_entries streamcodec_type,codec_name,width,height,r_frame_rate -of defaultnoprint_wrappers1 raw/base_video.mp4这一步能看到视频时长、编码、分辨率、帧率。通常建议先统一转成 H.264 视频流 AAC 音频流封装为 MP4兼容性最好。直接使用下面的转码模板ffmpeg -y -i raw/base_video.mp4 \ -vcodec libx264 -crf 23 -preset medium \ -acodec aac -b:a 192k \ -r 30 \ work/base_video_norm.mp4参数含义-crf 23是 x264 的默认质量参数数字越小质量越高文件越大。-preset medium控制压缩速度与体积的平衡。-r 30强制输出 30 帧避免帧率不一致导致的播放卡顿。-b:a 192k指定音频码率。-y表示输出文件已存在时直接覆盖。如果原始素材只是音频例如录音、电话音、现场音可以统一转成便于处理的 WAV 格式ffmpeg -y -i raw/base_audio.mp3 \ -ar 44100 -ac 1 -sample_fmt s16 \ work/base_audio.wav其中-ar 44100表示采样率-ac 1表示单声道。语音调校和切分使用单声道、16bit WAV 更稳定。这一步是很多后续操作的基础。如果格式不统一ASR 出来的时间轴可能因为采样率不对而偏移切片工具也可能拿不到正确时长。5. 从视频中提取音频文本和语音的对齐是鬼畜素材整理中的一个高效步骤。先提取音频文件ffmpeg -y -i work/base_video_norm.mp4 \ -vn -acodec pcm_s16le \ -ar 16000 -ac 1 \ work/base_audio_16k.wav这里将音频转为 16k 采样率的单声道 WAV目的有两个文件体积更小处理更快。语音识别通常不需要高于 16k 的采样率。如果你的素材主要是背景音乐可能需要保留立体声和高采样率那就不要转成 16k。要按实际需求区分。16k 是为了让 ASR 更快更准不代表最终成品音频。6. 字幕识别与自动文本抽取想对素材做结构化整理最直接的方法是先把里面的语音转成带时间码的文本。这里用faster-whisper做一个 CPU 可用的示例。先安装pip install faster-whisper然后写一个自动识别脚本transcribe.pyimport sys from pathlib import Path from faster_whisper import WhisperModel def format_timestamp(seconds: float) - str: millis int(round(seconds * 1000)) hours millis // 3_600_000 millis % 3_600_000 minutes millis // 60_000 millis % 60_000 secs millis // 1000 millis % 1000 return f{hours:02d}:{minutes:02d}:{secs:02d},{millis:03d} def transcribe_to_srt(audio_path: str, output_srt: str, model_size: str small): model WhisperModel(model_size, devicecpu, compute_typeint8) segments, info model.transcribe( audio_path, languagezh, vad_filterTrue, beam_size1, ) lines [] index 1 for seg in segments: lines.append(str(index)) lines.append(f{format_timestamp(seg.start)} -- {format_timestamp(seg.end)}) lines.append(seg.text.strip()) lines.append() index 1 Path(output_srt).write_text(\n.join(lines), encodingutf-8) if __name__ __main__: audio_file sys.argv[1] srt_file sys.argv[2] transcribe_to_srt(audio_file, srt_file)运行python transcribe.py work/base_audio_16k.wav out/base.srt运行后打开out/base.srt如果能看到按序号排列的时间轴和中文文本说明流程正常。需要注意small模型在 CPU 上可以跑速度取决于音频长度和 CPU 核心数。素材很长时建议换tiny或base试跑。识别结果可能受录音质量、背景噪声、方言影响。如果有很重的方言或口音可以先在素材里加语言提示策略也可以改用更高精度模型。生成的 SRT 不是最终成品字幕而是用来定位语音片段位置。后面切片阶段会频繁用到它。如果不想用本地 ASR也可以用剪映等剪辑软件先导出字幕但人工导出会比较慢。本地脚本更适合批量素材处理。更关键的是识别出的字幕文件能作为自动化切片的基础数据源。很多鬼畜素材做的是“把一句话拆开再重新拼装”所以先得到每个词或每个短句的起止时间是提高工作效率的关键。如果字幕时间轴不准后续切片基本都会错所以应该先在小范围内人工抽查几条时间码。7. 按字幕时间轴批量切片拿到 SRT 文件后可以写脚本按时间轴切出每个短句的音频片段。这里不依赖第三方字幕解析库直接用正则解析 SRT 的时间行即可。脚本cut_by_srt.py如下import re import subprocess import sys from pathlib import Path def parse_srt_time(line: str): # 00:00:01,200 -- 00:00:03,500 m re.search(r(\d{2}):(\d{2}):(\d{2})[,.](\d{3}) -- (\d{2}):(\d{2}):(\d{2})[,.](\d{3}), line) if not m: return None, None g m.groups() start int(g[0]) * 3600 int(g[1]) * 60 int(g[2]) int(g[3]) / 1000 end int(g[4]) * 3600 int(g[5]) * 60 int(g[6]) int(g[7]) / 1000 return start, end def cut_audio_via_srt(srt_path: Path, source_audio: Path, output_dir: Path): output_dir.mkdir(parentsTrue, exist_okTrue) lines srt_path.read_text(encodingutf-8).splitlines() index 0 for line in lines: start, end parse_srt_time(line) if start is None: continue index 1 out_wav output_dir / fseg_{index:04d}_{start:.3f}_{end:.3f}.wav if out_wav.exists(): continue subprocess.run( [ ffmpeg, -y, -ss, f{start:.3f}, -to, f{end:.3f}, -i, str(source_audio), -ar, 44100, -ac, 1, str(out_wav), ], stdoutsubprocess.DEVNULL, stderrsubprocess.PIPE, checkTrue, ) print(fcut done, total{index}) if __name__ __main__: cut_audio_via_srt( Path(sys.argv[1]), Path(sys.argv[2]), Path(sys.argv[3]), )运行示例python cut_by_srt.py out/base.srt work/base_audio.wav cuts/line脚本会自动跳过已经存在的输出文件所以支持断点续跑。外层再套一层循环就可以同时处理多个素材。对于鬼畜调教素材来说切好的短句就是后续变调、变速、编排的最小单元。8. 音频变调、变速与音色保持古早鬼畜素材里很多声音效果本质上就是音高调整、语速调整和共振峰处理的不同组合。先用一点音频知识说明区别变调改变音高但不改变语速。变速改变语速但不改变音高或同时改变音高。共振峰影响“音色”例如让声音听起来更像另一个人。ffmpeg自带的音频滤镜可以做基础变速变调但对更精细的“音色保持”或“音高同时调整”可能有局限。先看两种常见效果。8.1 变调不变速用asetrate改变采样率后再用atempo恢复时长可以实现音调升高但语速基本不变ffmpeg -y -i line/seg_0001.wav \ -af asetrate44100*1.2,aresample44100,atempo1/1.2 \ out/pitch_up.wav这里的44100*1.2会把音调抬高约 3 个半音再用atempo1/1.2把被加速播放的部分拉回正常时值。注意atempo的合法范围一般是 0.5 到 2.0如果1/1.2超出范围需要分段处理。下降同理ffmpeg -y -i line/seg_0001.wav \ -af asetrate44100*0.85,aresample44100,atempo1/0.85 \ out/pitch_down.wav8.2 快速切片素材重拼把切好的短句重新拼接成一个连贯音频可以先建一个文件清单file pitch_up_0001.wav file pitch_down_0002.wav file original_0003.wav然后运行ffmpeg -y -f concat -safe 0 -i list.txt -c copy out/remix.wav如果各片段的采样率或声道数不同就不能用-c copy需要重新编码并保证所有片段格式统一。8.3 更精细的调校如果只是为了快速验证片段音色直接对原始片段做上述处理就够了。但要达到能用的调校效果通常还要用剪映、Audacity、Adobe Audition 等工具做可视化调整。先降噪、去爆音再做变调。根据素材里的人声特点小幅调整音高而不是一次拉很高。注意韵律实际鬼畜素材往往不是单纯变调而是按字切分后重新排布。一个实用的建议是不要在 ffmpeg 参数里一次性大幅变调容易出现明显的“金属声”或“塑料声”。可以分成多次小步调整然后逐段试听。更专业的声码器如rubberband也可以尝试但需要额外安装不是每一个 ffmpeg 版本都自带该滤镜。使用前先运行ffmpeg -filters | grep rubberband确认。9. 批量任务组织与断点续跑单条命令处理一个文件很容易但素材一多就会遇到一个问题任务中途失败后前面已经处理好的文件要不要重新跑最好的做法是引入“幂等输出”。也就是不管脚本运行几次输出结果保持一致已经存在的文件直接跳过。前面的切片脚本已经用out_wav.exists()做了跳过处理转码脚本也可以按同类思路处理。一个完整的批量工作流可以拆成多个阶段素材转码。音频提取。语音识别获得 SRT。按 SRT 切片。对切片做变调变速。按编排清单合成输出。每阶段只操作自己的输入输出目录上一阶段的输出是下一阶段的输入。某一阶段失败后修复错误再重跑不会浪费太多时间。Python 里用subprocess批量调用 ffmpeg 时建议加上日志。简单示例import subprocess from pathlib import Path def run_ffmpeg(cmd, log_file): proc subprocess.run( cmd, stdoutsubprocess.PIPE, stderrsubprocess.PIPE, ) if proc.returncode ! 0: log_file.write(CMD: .join(cmd) \n) log_file.write(proc.stderr.decode(utf-8, errorsignore)) raise RuntimeError(fffmpeg failed: {proc.returncode})外层再按文件做循环并把成功和失败的文件分别记录到logs/success.txt和logs/failed.txt。如果有切片文件反复失败就优先排查该文件的格式、时长、时间轴是否越界。很多批量任务卡住并不是 ffmpeg 命令本身有问题而是某个素材分辨率异常、音频不存在或时间轴末尾越界。如果想进一步提升速度可以在“切片”阶段用多线程并行处理。但要控制并发数不要一次把所有素材全丢进去否则磁盘 I/O 会成为瓶颈而且每个 ffmpeg 进程都会占内存。常见的做法是并发数等于 CPU 核心数的一半或四分之一先跑少量样本测试。from concurrent.futures import ThreadPoolExecutor, as_completed def process_file(item): # item 是一个字典或元组 return subprocess.run(item[cmd], checkTrue, capture_outputTrue) with ThreadPoolExecutor(max_workers4) as pool: futures [pool.submit(process_file, item) for item in task_list] for fut in as_completed(futures): fut.result()这里的并发数要根据电脑配置实际观察。如果你的 CPU 核数很多但内存只有 8GB建议并发数设成 2 或 3。不能盲目开几十个线程。10. 把处理流程封装成本地 API如果不想一直改命令行参数或者希望把“转码/切分/变调”能力暴露给其他脚本可以用 FastAPI 封装一个极简服务。安装依赖pip install fastapi uvicorn示例服务代码api_server.pyfrom pathlib import Path from fastapi import FastAPI, HTTPException from pydantic import BaseModel app FastAPI() class TaskRequest(BaseModel): input_path: str output_path: str filter_complex: str asetrate44100*1.2,aresample44100,atempo0.8333 app.post(/ffmpeg/audio) def process_audio(req: TaskRequest): input_file Path(req.input_path) output_file Path(req.output_path) if not input_file.exists(): raise HTTPException(status_code404, detailinput file not found) output_file.parent.mkdir(parentsTrue, exist_okTrue) cmd [ ffmpeg, -y, -i, str(input_file.absolute()), -af, req.filter_complex, str(output_file.absolute()), ] # 这里直接使用 subprocess 执行生产环境需要更完善的超时和错误处理 import subprocess result subprocess.run(cmd, textTrue, capture_outputTrue, timeout300) return { ok: result.returncode 0, output: str(output_file), stderr: result.stderr[-500:] if result.returncode ! 0 else , }启动uvicorn api_server:app --host 127.0.0.1 --port 8000调用示例curl -X POST http://127.0.0.1:8000/ffmpeg/audio \ -H Content-Type: application/json \ -d {\input_path\:\test.wav\,\output_path\:\out.wav\,\filter_complex\:\asetrate44100*0.9,aresample44100,atempo1/0.9\}返回结果会是 JSON{ ok: true, output: out.wav, stderr: }这个示例适合在本机内联调。要注意服务要监听127.0.0.1不要改成公网地址。API 请求里直接传路径意味着调用方需要能访问服务器上的文件系统。实际部署时要设计好权限模型不能随便允许任意路径读写。如果处理函数可能执行很久需要增加任务队列、状态查询接口和超时机制。一个更稳妥的批量接口思路是提交任务时先返回task_id后台线程执行 ffmpeg另一个接口查询结果。虽然会增加复杂度但对素材多、耗时长的情况更可控。11. 资源占用与性能观察处理流程的性能瓶颈往往不是某一个工具而是格式转换和解码。以下是需要观察的资源点。11.1 ffmpeg 转码时的 CPU 占用ffmpeg 默认会利用多个 CPU 核心编解码。如果同时跑很多个 ffmpeg 进程CPU 会非常容易打满。建议第一轮先跑两个进程观察系统负载之后再加并发。Windows 可以使用任务管理器查看 CPU 百分比Linux 可以用top或htopNVIDIA 显卡需要在命令行执行nvidia-sminvidia-smi -l 2-l 2表示每 2 秒刷新一次。11.2 ASR 模型的显存与内存ASR 模型的资源占用很难给出一个固定数字因为它取决于模型大小、音频长度、批处理设置和是否使用 GPU 加速。在没有实测数据的情况下不要轻信网上某个固定的“占用 2GB”说法。从经验来说用 faster-whispertiny或base模型在 CPU 上处理短音频基本没有压力。如果换small或medium还要用 GPU建议先观察显存占用。不同模型大小差异很大但需以自己机器上的实际输出为准。超长音频一次性送进模型可能会导致内存吃紧可以分段转写再按时间戳拼接结果。观察方式为 Windows 任务管理器中的“内存/GPU”一栏或 Linux 的free -h、nvidia-smi。AI 模型首次运行时一般要下载权重到缓存目录磁盘空间需要预留具体权重大小以运行日志提示为准。11.3 切换分辨率、步数与文本长度的影响对于纯 ffmpeg 的转码和切片影响最大的是视频分辨率、编码器预设和帧率。分辨率越高、帧率越高、preset越慢耗时越长。音频切片几乎不受分辨率影响。对于 ASR影响最大的是音频长度、背景噪声、语速和语言复杂度。说话人重叠、环境嘈杂、方言浓重都会让识别时间变长甚至导致时间轴不准。因此建议先把音频切成多个 10 到 20 分钟的段落再做转写而不是一次性丢进 2 小时的长音频。11.4 降低显存占用的通用思路优先使用 CPU 推理的小 ASR 模型。使用int8量化减少模型内存占用。关闭不必要的并发推理进程。对视频先抽音频再处理避免同时解码高分辨率视频。转码阶段采用-crf 28或更低分辨率中间文件可以显著降低处理耗时。注意中间文件的清晰度不需要太高够用就行。12. 常见问题与排查方法问题现象可能原因排查方式解决方案ffmpeg 命令找不到ffmpeg 未安装或不在 PATH 中执行ffmpeg -version正确安装并配置环境变量中文文件名乱码终端编码与文件名编码不一致执行dir/ls查看显示结果将素材统一重命名为英文或数字前缀SRT 时间轴明显偏移原视频本身有片头/片尾偏移用播放器人工对照时间轴对整段 SRT 做时间轴整体平移识别出的文本错字多背景噪声大、口音重、模型太小试听素材调整降噪换更大模型先降噪或单独提取人声变调后声音过于金属感大幅单次变调导致音质劣化用试听对比原声分段小步调整或使用带共振峰保持的工具使用-af滤镜时提示滤镜不存在当前 ffmpeg 编译版本缺少该滤镜执行ffmpeg -filters搜索对应名称更换完整版 ffmpeg 或改用等价参数音频切片末尾越界SRT 时间大于音频实际时长检查ffprobe输出时长对越界区间做裁剪或跳过批量脚本跑到一半卡住某些素材异常ffmpeg 等待输入查看logs/failed.txt给 ffmpeg 加超时参数记录失败任务并继续API 调用返回 500输入路径不存在或权限不足查看服务端错误日志确保文件路径正确且有读写权限启动本地服务后端口被占用8000 端口已被其他程序占用执行 netstat -anofindstr 8000或lsof -i:8000未授权人物素材被误用对素材来源缺少审核回看素材授权记录未确权素材不用于公开传播和商用这些排错方法都不需要依赖某个具体项目的版本适用于类似的 ffmpeg 和 Python 本地流水线。13. 最佳实践与使用建议第一新建工作目录和记录文件。建议先用一个小素材跑通全流程再扩大到批量。第一次就处理几百个文件很容易被格式和参数问题淹没。小范围验证要做三件事确认能正常转码和切片。确认识别出的字幕时间轴基本准确。确认最终产物音画质量符合预期。第二建立可靠的目录与命名规范。输入、输出、日志分开文件名尽量使用“时间戳”或“序号”避免用带空格、特殊符号和中文的长文件名。中间文件可以随时删除原始文件不要动。第三输出多版本命名时保留处理参数。例如把pitch_up_120_atempo.wav改成“文件名_音高120_语速100.wav”更容易理解。要把“处理参数”写入文件名或一份 JSONL 任务清单否则过几天就忘记某个文件是怎么做出来的。第四考虑给长期项目加任务清单。每处理完一个素材就在清单里追加一行{ input: raw/base_video.mp4, output: out/pitch_up_120.wav, filter: asetrate44100*1.2,aresample44100,atempo0.8333, status: done, duration_seconds: 3.2 }这样即使脚本中断也可以根据status字段决定哪些任务需要重启。第五公开传播前做授权审核。涉及脸、声音、姓名、真实经历的内容都要先确认有没有权限。即使是“老素材”也可能存在同样严格的权利限制。最稳妥的方案是全部使用自己拍摄、自己录制或明确标注可再创作的内容。第六接口服务不暴露公网。如果需要跨机器调用建议放在可控的内网环境中并加认证令牌。不能直接把处理接口挂到公网上否则很容易被滥用为批量处理工具。14. 总结与下一步围绕“上古鬼畜明星之石家庄小夏”这类素材研究角度最有价值的技术起点是先跑通三个环节统一转码、SRT 字幕定位、按时间轴切片。这三点完成后剩下的大部分工作都是对已经切好的小片段做变调、变速、重排和混缩本质上是在处理越来越小的素材单元。真正容易踩坑的不是命令本身而是时间轴不准、音频格式不统一、素材来源授权不清这三个问题。建议下一步先从 30 秒到 1 分钟的测试片段试起。不要一上来就想完成一个几十秒的整片复刻先验证片段切得准不准、调音质感能不能接受。跑通之后可以把切好的短句按“音高 语速 原始文件”的标签归档为后续建立可检索的本地素材库做准备。如果你手里有合适的老视频素材这篇文章里的命令和脚本可以当模板直接用。替换本地路径和输出目录即可。建议收藏备用下次整理素材时少走弯路。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价