Python视频处理实战:从零制作鬼畜特效的技术方案
最近在社交媒体上刷到一个特别有趣的视频——Toon Toon的鬼畜恶作剧看完真的让人忍不住直呼太会玩了这种创意十足的恶作剧不仅娱乐性强还展现了视频剪辑技术的魅力。作为技术爱好者我们不妨从开发者的角度来拆解这类视频背后的技术实现看看如何用代码和工具打造属于自己的创意恶作剧视频。本文将完整介绍从视频素材处理、鬼畜效果制作到最终合成的全流程技术方案包含具体的代码示例和工具使用方法。无论你是想学习视频处理技术还是想为自己或朋友制作有趣的恶作剧视频都能从本文找到实用的解决方案。1. 鬼畜视频的技术原理与核心概念1.1 什么是鬼畜视频鬼畜视频是一种通过对原有视频素材进行重复、变速、变调等处理制造出滑稽搞笑效果的视频类型。其技术核心在于对视频和音频信号的数字化处理主要包括以下几个关键要素素材循环选取视频中的特定片段进行高频次重复播放节奏匹配将视频动作与背景音乐的节拍精准对齐音视频变速在不改变音调的前提下调整播放速度特效叠加添加文字、贴纸、滤镜等视觉元素增强喜剧效果1.2 技术实现的基本流程制作鬼畜视频的技术流程可以概括为以下步骤素材采集获取原始视频文件片段截取选择适合制作鬼畜效果的关键片段音频处理调整音频的节奏、音调和效果视频编辑应用重复、变速、特效等处理合成输出将处理后的音视频合并为最终作品2. 环境准备与工具选择2.1 开发环境配置要进行视频处理开发需要准备以下环境Python环境配置# 创建虚拟环境 python -m venv video_env source video_env/bin/activate # Linux/Mac # 或 video_env\Scripts\activate # Windows # 安装核心依赖 pip install opencv-python pip install moviepy pip install numpy pip install scipy pip install librosaFFmpeg安装视频处理核心工具# Ubuntu/Debian sudo apt update sudo apt install ffmpeg # macOS brew install ffmpeg # Windows # 从官网下载预编译版本并配置环境变量2.2 主要工具库介绍OpenCV计算机视觉库用于视频帧处理和分析MoviePy基于FFmpeg的Python视频编辑库Librosa音频处理和分析库NumPy数值计算用于数组操作3. 视频素材处理核心技术3.1 视频读取与基本信息获取首先我们需要读取视频文件并获取基本信息import cv2 import os from moviepy.editor import VideoFileClip def get_video_info(video_path): 获取视频基本信息 cap cv2.VideoCapture(video_path) # 获取视频属性 fps cap.get(cv2.CAP_PROP_FPS) frame_count int(cap.get(cv2.CAP_PROP_FRAME_COUNT)) width int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) height int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) duration frame_count / fps print(f视频信息) print(f分辨率{width}x{height}) print(f帧率{fps} FPS) print(f总帧数{frame_count}) print(f时长{duration:.2f}秒) cap.release() return fps, frame_count, width, height, duration # 使用示例 video_path input_video.mp4 fps, frame_count, width, height, duration get_video_info(video_path)3.2 关键帧检测与片段提取鬼畜视频的核心是找到适合重复的精彩片段def detect_key_frames(video_path, threshold0.3): 检测视频中的关键帧场景变化明显的帧 cap cv2.VideoCapture(video_path) prev_frame None key_frames [] frame_index 0 while True: ret, frame cap.read() if not ret: break # 转换为灰度图 gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) if prev_frame is not None: # 计算帧间差异 diff cv2.absdiff(prev_frame, gray) mean_diff diff.mean() # 如果差异超过阈值认为是关键帧 if mean_diff threshold: key_frames.append({ frame_index: frame_index, timestamp: frame_index / fps, diff_score: mean_diff }) prev_frame gray.copy() frame_index 1 cap.release() return key_frames def extract_video_clip(input_path, output_path, start_time, end_time): 提取视频片段 from moviepy.editor import VideoFileClip with VideoFileClip(input_path) as video: clip video.subclip(start_time, end_time) clip.write_videofile(output_path, codeclibx264, audio_codecaac) # 使用示例 key_frames detect_key_frames(video_path) print(f检测到 {len(key_frames)} 个关键帧) # 提取前5秒的片段 extract_video_clip(video_path, clip_5s.mp4, 0, 5)4. 鬼畜效果实现方案4.1 视频循环重复效果这是鬼畜视频最核心的效果def create_loop_effect(input_path, output_path, loop_segment, repeat_times10): 创建视频循环效果 loop_segment: (start_time, end_time) 循环片段时间范围 repeat_times: 重复次数 from moviepy.editor import VideoFileClip, concatenate_videoclips start_time, end_time loop_segment clip_duration end_time - start_time with VideoFileClip(input_path) as video: # 提取循环片段 loop_clip video.subclip(start_time, end_time) # 创建重复片段列表 clips [loop_clip] * repeat_times # 合并所有片段 final_clip concatenate_videoclips(clips, methodcompose) # 输出视频 final_clip.write_videofile( output_path, codeclibx264, audio_codecaac, temp_audiofiletemp-audio.m4a, remove_tempTrue ) # 使用示例将2-4秒的片段重复10次 create_loop_effect(input_video.mp4, loop_output.mp4, (2, 4), 10)4.2 音频变速不变调处理保持音调的同时改变语速是鬼畜视频的重要特征import librosa import soundfile as sf import numpy as np def change_speed_keep_pitch(audio_path, output_path, speed_factor1.5): 改变音频速度但保持音调 speed_factor: 速度倍数1加速1减速 # 加载音频 y, sr librosa.load(audio_path, srNone) # 使用相位声码器进行变速不变调处理 y_stretched librosa.effects.time_stretch(y, ratespeed_factor) # 保存处理后的音频 sf.write(output_path, y_stretched, sr) print(f音频处理完成速度变化倍数 {speed_factor}) def extract_and_process_audio(video_path, audio_output, speed_factor1.5): 从视频提取音频并处理 from moviepy.editor import VideoFileClip # 提取音频 with VideoFileClip(video_path) as video: audio video.audio audio.write_audiofile(temp_audio.wav, fps44100) # 处理音频 change_speed_keep_pitch(temp_audio.wav, audio_output, speed_factor) # 清理临时文件 if os.path.exists(temp_audio.wav): os.remove(temp_audio.wav) # 使用示例 extract_and_process_audio(input_video.mp4, processed_audio.wav, 1.8)4.3 视频节奏分析与匹配让视频动作与音乐节奏同步def analyze_audio_beats(audio_path): 分析音频的节拍点 y, sr librosa.load(audio_path) # 计算节拍 tempo, beat_frames librosa.beat.beat_track(yy, srsr) beat_times librosa.frames_to_time(beat_frames, srsr) print(f检测到节奏{tempo:.2f} BPM) print(f节拍点数量{len(beat_times)}) return beat_times, tempo def create_rhythm_video(video_path, audio_path, output_path): 创建节奏同步的视频 from moviepy.editor import VideoFileClip, AudioFileClip # 分析音频节拍 beat_times, tempo analyze_audio_beats(audio_path) with VideoFileClip(video_path) as video: clips [] # 根据节拍点切割视频 for i in range(len(beat_times) - 1): start_time beat_times[i] end_time beat_times[i 1] # 确保片段时长合理 if end_time - start_time 0.1: # 最小片段时长 clip video.subclip(start_time, end_time) clips.append(clip) # 合并所有片段 from moviepy.editor import concatenate_videoclips final_video concatenate_videoclips(clips, methodcompose) # 添加处理后的音频 processed_audio AudioFileClip(audio_path) final_video final_video.set_audio(processed_audio) # 输出最终视频 final_video.write_videofile( output_path, codeclibx264, audio_codecaac, temp_audiofiletemp-audio.m4a, remove_tempTrue ) # 使用示例 create_rhythm_video(input_video.mp4, background_music.wav, rhythm_video.mp4)5. 高级特效与视觉效果5.1 文字和贴纸叠加为视频添加搞笑的文字和表情包def add_text_to_video(input_path, output_path, text_configs): 为视频添加文字 text_configs: 文字配置列表 from moviepy.editor import VideoFileClip, TextClip, CompositeVideoClip with VideoFileClip(input_path) as video: clips [video] for config in text_configs: text_clip TextClip( config[text], fontsizeconfig.get(fontsize, 30), colorconfig.get(color, white), fontconfig.get(font, Arial-Bold) ) # 设置文字显示时间和位置 text_clip text_clip.set_position( config.get(position, (center, bottom)) ).set_duration(video.duration) clips.append(text_clip) # 合成所有图层 final_video CompositeVideoClip(clips) final_video.write_videofile(output_path, codeclibx264) # 使用示例 text_configs [ { text: 哈哈哈太搞笑了, fontsize: 40, color: yellow, position: (center, 50) }, { text: 鬼畜名场面, fontsize: 30, color: red, position: (left, top) } ] add_text_to_video(input_video.mp4, text_video.mp4, text_configs)5.2 滤镜和颜色调整增强视频的喜剧效果def apply_video_filter(input_path, output_path, filter_type): 应用视频滤镜 from moviepy.editor import VideoFileClip with VideoFileClip(input_path) as video: if filter_type cartoon: # 卡通化滤镜 def cartoonize_frame(frame): # 使用OpenCV实现卡通效果 import cv2 gray cv2.cvtColor(frame, cv2.COLOR_RGB2GRAY) gray cv2.medianBlur(gray, 5) edges cv2.adaptiveThreshold( gray, 255, cv2.ADAPTIVE_THRESH_MEAN_C, cv2.THRESH_BINARY, 9, 9 ) color cv2.bilateralFilter(frame, 9, 300, 300) cartoon cv2.bitwise_and(color, color, maskedges) return cartoon filtered_video video.fl_image(cartoonize_frame) elif filter_type invert: # 反色效果 filtered_video video.fl_image(lambda frame: 255 - frame) else: filtered_video video filtered_video.write_videofile(output_path, codeclibx264) # 使用示例 apply_video_filter(input_video.mp4, cartoon_video.mp4, cartoon)6. 完整项目实战制作Toon Toon风格鬼畜视频6.1 项目结构设计创建一个完整的鬼畜视频制作项目toon_toon_project/ ├── src/ │ ├── video_processor.py # 视频处理核心类 │ ├── audio_processor.py # 音频处理类 │ ├── effects_library.py # 特效库 │ └── main.py # 主程序 ├── inputs/ # 输入素材 │ ├── raw_videos/ # 原始视频 │ └── background_music/ # 背景音乐 ├── outputs/ # 输出结果 │ ├── processed/ # 处理中间文件 │ └── final/ # 最终视频 └── config/ # 配置文件 └── effects_config.json # 特效配置6.2 核心处理器实现# src/video_processor.py import cv2 import numpy as np from moviepy.editor import VideoFileClip, concatenate_videoclips import json class ToonToonProcessor: def __init__(self, config_pathconfig/effects_config.json): self.load_config(config_path) def load_config(self, config_path): 加载特效配置 with open(config_path, r, encodingutf-8) as f: self.config json.load(f) def create_toon_toon_effect(self, input_path, output_path): 创建完整的Toon Toon风格效果 # 1. 分析视频并检测搞笑片段 funny_segments self.detect_funny_segments(input_path) # 2. 处理音频 processed_audio self.process_audio(input_path) # 3. 应用鬼畜效果 final_video self.apply_ghost_effects(input_path, funny_segments) # 4. 添加音视频并输出 final_video final_video.set_audio(processed_audio) final_video.write_videofile(output_path, codeclibx264) def detect_funny_segments(self, video_path): 检测视频中的搞笑片段 # 基于运动检测和表情识别找出有趣的部分 # 这里简化实现实际可以使用AI模型 segments [] cap cv2.VideoCapture(video_path) fps cap.get(cv2.CAP_PROP_FPS) motion_intensity [] frame_count 0 while True: ret, frame cap.read() if not ret: break # 简单的运动强度检测 if frame_count 0: gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) prev_gray cv2.cvtColor(prev_frame, cv2.COLOR_BGR2GRAY) flow cv2.calcOpticalFlowFarneback(prev_gray, gray, None, 0.5, 3, 15, 3, 5, 1.2, 0) motion np.sqrt(flow[...,0]**2 flow[...,1]**2).mean() motion_intensity.append(motion) prev_frame frame.copy() frame_count 1 cap.release() # 找出运动剧烈的片段 threshold np.mean(motion_intensity) np.std(motion_intensity) for i, motion in enumerate(motion_intensity): if motion threshold: start_time i / fps end_time (i 10) / fps # 10帧的片段 segments.append((start_time, end_time)) return segments[:5] # 返回前5个最有趣的片段 # src/main.py from video_processor import ToonToonProcessor def main(): processor ToonToonProcessor() # 处理视频 input_video inputs/raw_videos/source.mp4 output_video outputs/final/toon_toon_final.mp4 processor.create_toon_toon_effect(input_video, output_video) print(鬼畜视频制作完成) if __name__ __main__: main()6.3 配置文件示例{ video_effects: { loop_repeat_times: 8, speed_variation: [0.5, 1.0, 1.5, 2.0], filter_strength: 0.7 }, audio_effects: { pitch_shift_range: [-2, 2], reverb_level: 0.3, tempo_change: 1.2 }, text_effects: { funny_phrases: [ 哈哈哈笑死我了, 这也太鬼畜了吧, 经典名场面预定, 看完直呼内行 ], font_settings: { size: 35, color: #FFD700, font: SimHei } } }7. 常见问题与解决方案7.1 视频处理常见错误问题现象可能原因解决方案视频无法读取文件路径错误或格式不支持检查文件路径确保使用MP4等常见格式处理速度慢视频分辨率过高或硬件性能不足降低分辨率或使用GPU加速音频视频不同步时间戳处理错误检查帧率设置确保音视频时长匹配输出文件过大码率设置过高调整输出码率和分辨率7.2 性能优化技巧代码优化示例def optimize_video_processing(video_path): 优化视频处理性能 # 使用多线程处理 from concurrent.futures import ThreadPoolExecutor import threading # 降低处理分辨率 def process_frame(frame, scale_factor0.5): height, width frame.shape[:2] new_width int(width * scale_factor) new_height int(height * scale_factor) return cv2.resize(frame, (new_width, new_height)) # 批量处理帧 def batch_process_frames(frames): with ThreadPoolExecutor() as executor: processed_frames list(executor.map(process_frame, frames)) return processed_frames # 实际处理逻辑...7.3 内存管理建议处理大型视频文件时需要注意内存使用def memory_efficient_processing(input_path, output_path): 内存友好的视频处理 # 使用生成器逐帧处理 def frame_generator(video_path): cap cv2.VideoCapture(video_path) while True: ret, frame cap.read() if not ret: break yield frame cap.release() # 逐帧处理并写入 fourcc cv2.VideoWriter_fourcc(*XVID) out None for i, frame in enumerate(frame_generator(input_path)): processed_frame process_frame(frame) # 你的处理函数 if out is None: height, width processed_frame.shape[:2] out cv2.VideoWriter(output_path, fourcc, 30.0, (width, height)) out.write(processed_frame) if out is not None: out.release()8. 高级功能扩展8.1 AI辅助的搞笑片段检测使用深度学习模型自动识别视频中的搞笑时刻# 示例代码框架 - 实际需要训练好的模型 def ai_detect_funny_moments(video_path, model_path): 使用AI模型检测搞笑片段 # 加载预训练的表情识别模型 # 这里需要实际的模型文件 pass def analyze_facial_expressions(frame): 分析面部表情 # 使用OpenCV或深度学习库分析笑容等表情 smile_score detect_smile(frame) return smile_score8.2 自动化批量处理为多个视频文件批量添加鬼畜效果import os from pathlib import Path def batch_process_videos(input_folder, output_folder): 批量处理文件夹中的所有视频 input_path Path(input_folder) output_path Path(output_folder) output_path.mkdir(exist_okTrue) video_files list(input_path.glob(*.mp4)) list(input_path.glob(*.avi)) processor ToonToonProcessor() for video_file in video_files: output_file output_path / ftoon_{video_file.name} try: processor.create_toon_toon_effect( str(video_file), str(output_file) ) print(f处理完成{video_file.name}) except Exception as e: print(f处理失败 {video_file.name}: {e})9. 最佳实践与工程建议9.1 代码组织规范模块化设计将视频处理、音频处理、特效应用分离为独立模块配置文件管理所有可调整参数通过配置文件管理错误处理添加完善的异常捕获和日志记录单元测试为核心功能编写测试用例9.2 性能优化策略预处理优化先分析视频信息根据内容选择合适的处理策略资源复用避免重复加载大型文件并行处理对可独立处理的帧使用多线程缓存机制对中间结果进行缓存避免重复计算9.3 质量保证措施输出验证自动检查输出视频的完整性和质量参数调优提供参数预览和调整功能用户反馈收集处理效果反馈持续改进算法制作鬼畜视频不仅是一种娱乐方式更是学习多媒体处理技术的绝佳实践。通过本文介绍的技术方案你可以从零开始构建自己的视频处理管道逐步掌握计算机视觉和音频处理的核心技能。建议从简单的循环效果开始逐步尝试更复杂的时间拉伸、节奏匹配和AI特效。在实际项目中记得先备份原始素材小规模测试效果后再进行批量处理。随着经验的积累你可以开发出独具特色的视频处理工具甚至将其产品化。技术的乐趣在于创造期待看到你制作的精彩鬼畜作品

相关新闻

庞加莱回归定理:宇宙循环的数学基础与物理意义

庞加莱回归定理:宇宙循环的数学基础与物理意义

你是否曾想过,如果时间足够长,宇宙中的一切会不会精确地重复发生?你此刻阅读这篇文章的瞬间,会不会在未来的某个时刻再次出现?这个看似科幻的问题,其实在数学和物理学中有一个严谨的理论基础——庞加莱回归…

2026/10/15 10:39:33 阅读更多 →
智慧旅游管理系统开发实战:Java EE架构与性能优化

智慧旅游管理系统开发实战:Java EE架构与性能优化

1. 项目背景与核心需求在当今数字化旅游时代,传统旅行社和景区管理面临三大痛点:信息孤岛、服务滞后和决策低效。我去年参与某5A景区系统升级时,亲眼看到工作人员还在用Excel表格手动统计每日入园人数,而周边民宿老板则抱怨无法实…

2026/10/15 10:39:33 阅读更多 →
AIGC检测哪个准?2026年论文AI率自查指南,提交前必看

AIGC检测哪个准?2026年论文AI率自查指南,提交前必看

「同学,你的论文AIGC率62%,回去修改。」我室友收到这条消息时距离答辩只剩十天。他反复喊冤:论文真是自己写的,最多就是让AI帮忙润色了几段。但检测系统不听解释,62%就是62%。 2026年,AIGC检测已经和查重并…

2026/10/14 23:50:29 阅读更多 →

最新新闻

SpringBoot+Vue医院预约挂号系统设计与优化

SpringBoot+Vue医院预约挂号系统设计与优化

1. 项目概述:现代化医疗预约解决方案这个基于SpringBootVue的医院预约挂号系统,是我去年为某三甲医院信息化改造设计的核心模块。传统医疗机构的预约挂号流程普遍存在页面卡顿、数据不同步、操作繁琐等问题,而采用前后端分离架构后&#xff0…

2026/10/15 10:39:41 阅读更多 →
微信小游戏是什么?运行原理与开发入门全解析

微信小游戏是什么?运行原理与开发入门全解析

做前端时间长了,总有人问我:微信小游戏到底是个什么东西?能像网页一样不用下载就玩,又能做出挺复杂的游戏,还能在朋友圈里被疯转。说实话,我一开始也绕了不少弯路,总觉得它像小程序,…

2026/10/15 10:39:41 阅读更多 →
超帧在SLAM中的作用:从关键帧组织到局部优化的全面解析

超帧在SLAM中的作用:从关键帧组织到局部优化的全面解析

1. 为什么我会盯上 Hyperframes 这个概念做了这么多年SLAM相关的工作,我逐渐意识到一个残酷的事实:绝大多数做视觉SLAM的人,对关键帧的认知停留在“选一帧长得不一样的图”这个层面,更别说超帧(Hyperframes&#xff09…

2026/10/15 10:39:41 阅读更多 →
D-S证据理论:用不确定性推理解决急诊分诊与医疗AI评估难题

D-S证据理论:用不确定性推理解决急诊分诊与医疗AI评估难题

急诊分诊这件事,表面上是个分诊护士按个红黄绿标签的过程,实际上是个高压、高噪声、高代价的决策现场。病患到急诊的那一刻,能采集到的信息往往是零散的:病人自己的口述、家属慌张的补充、监护仪上跳动的几个数字、既往病历里一段…

2026/10/15 10:39:41 阅读更多 →
superpowers安装全攻略:从环境准备到排错重装的一条龙实操

superpowers安装全攻略:从环境准备到排错重装的一条龙实操

“superpowers”这个词最近在我几个技术交流群里出现的频率高得离谱,不少人在问“想要安装superpowers”,还有人把它列进新机器必备清单。我最初以为是什么夸张的营销宣传,直到自己在全新的机器上完整走了一遍安装、配置、排错的全流程&#…

2026/10/15 10:39:41 阅读更多 →
学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真

学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真

目录 手把手教你学Simulink——储能变流器(PCS)中 PWM 整流器的恒流充放电(CC Charge / CC Discharge)仿真 一、为什么储能 PCS 要做 恒流(CC)充放电双向 PWM 整流器 二、PCS 双向控制与 CC 模式原理** 2.1 功率平衡估算(用于 idref​折算) 2.2 模式定义 三、关键…

2026/10/15 10:38:32 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →