影刀RPA 视频处理自动化:FFmpeg批量转码与剪辑

影刀RPA 视频处理自动化:FFmpeg批量转码与剪辑 影刀RPA 视频处理自动化FFmpeg批量转码与剪辑作者林焱 | 分类影刀RPA新手教程 | 难度★★什么情况用运营、剪辑、新媒体从业者经常需要批量处理视频把MOV转MP4、压缩视频体积、截取片段、提取音频、加字幕。每次打开Premiere或剪映一个个导出浪费时间。用影刀RPA自动监控文件夹触发FFmpeg命令行批量处理视频支持转码、压缩、裁剪、拼接、提取音频等常见操作。适合需要定期处理大量标准化视频的场景。怎么做第一步安装FFmpeg从 ffmpeg.org 下载Windows版本解压后将bin目录路径加入系统环境变量PATH。验证安装拼多多店群自动化上架方案ffmpeg-version影刀中通过Python的subprocess调用命令行。第二步文件夹监控 自动触发影刀操作动作【文件夹监控】→ 监控D:\待处理视频\目录【触发器】→ 新文件到达时启动子流程【判断文件类型】→ .mov / .avi / .mkv / .mp4第三步批量转码MOV→MP4# 影刀Python节点批量转码importsubprocessimportos INPUT_DIRD:/待处理视频OUTPUT_DIRD:/已处理视频defconvert_mov_to_mp4(input_path,output_path,crf23):MOV转MP4CRF值越小质量越高(0-51默认23)cmd[ffmpeg,-i,input_path,-c:v,libx264,# H.264编码-preset,medium,# 编码速度ultrafast/fast/medium/slow-crf,str(crf),# 质量18近乎无损23默认28可接受压缩-c:a,aac,# 音频AAC编码-b:a,128k,# 音频比特率-y,# 覆盖输出文件output_path,]try:resultsubprocess.run(cmd,capture_outputTrue,textTrue,timeout600)ifresult.returncode0:original_sizeos.path.getsize(input_path)/1024/1024converted_sizeos.path.getsize(output_path)/1024/1024return{status:success,original_mb:round(original_size,1),converted_mb:round(converted_size,1),ratio:round(converted_size/original_size*100,1),}exceptsubprocess.TimeoutExpired:return{status:timeout}return{status:failed,error:result.stderr[-200:]}# 批量处理forfileinos.listdir(INPUT_DIR):iffile.lower().endswith((.mov,.avi,.mkv)):input_pathos.path.join(INPUT_DIR,file)output_pathos.path.join(OUTPUT_DIR,file.rsplit(.,1)[0].mp4)resultconvert_mov_to_mp4(input_path,output_path)print(f{file}:{result[status]}|{result.get(original_mb)}MB →{result.get(converted_mb)}MB ({result.get(ratio)}%))第四步视频裁剪与拼接# 截取片段从第30秒到第60秒deftrim_video(input_path,output_path,start00:00:30,duration00:00:30):cmd[ffmpeg,-ss,start,# 起始时间-i,input_path,-t,duration,# 持续时长-c,copy,# 不重新编码快速但可能不够精确-y,output_path,]subprocess.run(cmd,checkTrue)# 多个视频拼接需要先创建文件列表defconcat_videos(video_list,output_path):拼接视频列表中的文件# 创建concat文件列表list_fileconcat_list.txtwithopen(list_file,w,encodingutf-8)asf:forvideoinvideo_list:f.write(ffile {video}\n)cmd[ffmpeg,-f,concat,-safe,0,-i,list_file,-c,copy,-y,output_path,]subprocess.run(cmd,checkTrue)os.remove(list_file)第五步提取音频与压缩# 提取音频为MP3defextract_audio(video_path,audio_path,bitrate192k):cmd[ffmpeg,-i,video_path,-vn,# 不要视频流-acodec,libmp3lame,-b:a,bitrate,-y,audio_path,]subprocess.run(cmd,checkTrue)# 压缩视频降低分辨率到720pdefcompress_video(input_path,output_path,scale1280:720):cmd[ffmpeg,-i,input_path,-vf,fscale{scale},-c:v,libx264,-crf,28,-c:a,aac,-b:a,64k,-y,output_path,]subprocess.run(cmd,checkTrue)影刀流程中根据需求调用对应的处理函数处理完成后【企微推送】通知。有什么坑坑1FFmpeg路径问题subprocess调用FFmpeg时如果没加环境变量需要写完整路径C:/ffmpeg/bin/ffmpeg.exe。建议在代码开头检查subprocess.run([ffmpeg, -version], capture_outputTrue)如果失败则提示FFmpeg未安装。TEMU店群如何管理运营坑2大文件处理耗时极长一个4K视频转码可能需要半小时以上。影刀的Python节点默认超时时间不够。建议大文件用subprocess.Popen异步执行或者限制处理超时比如单个文件最多10分钟超时的标记为需要手动处理。坑3输出文件路径含中文可能乱码FFmpeg对中文路径支持有时不稳定。如果遇到No such file or directory检查路径中是否有中文、空格或特殊字符。建议输入输出路径只用英文。坑4编码器选择Windows某些版本FFmpeg不包含libx264编码器license原因。如果报Unknown encoder ‘libx264’改用-c:v mpeg4质量差但兼容性好或重新下载完整版FFmpeg。坑5源文件被其他程序占用如果视频还在拷贝中或被播放器打开FFmpeg会报Permission denied。在影刀流程中加上【文件是否被占用】的判断——如果文件正在写入等文件大小稳定了连续3次检测一样再处理。总结FFmpeg是视频处理的瑞士军刀几乎所有操作一行命令搞定。难点在于参数调优——不同视频需要的CRF值、编码器、比特率都不一样。建议先用一个小视频手动调参确认效果再批量跑。