下载FFmpeg命令行工具,这是视频处理的核心:
Windows系统执行以下PowerShell命令:
``` winget install ffmpeg ```macOS系统使用Homebrew安装:
``` brew install ffmpeg ```Linux系统使用apt安装:
``` sudo apt update && sudo apt install ffmpeg ```验证安装是否成功:
``` ffmpeg -version ```正确安装会显示FFmpeg版本信息。
安装exiftool用于读写视频元数据:
Windows下载地址:https://exiftool.org/exiftool-12.69.zip
解压后将exiftool.exe所在目录添加到系统PATH环境变量。
macOS安装命令:
``` brew install exiftool ```验证安装:
``` exiftool -ver ```创建开场钩子视频片段,时长严格控制在3秒内:
``` ffmpeg -i input.mp4 -t 3 -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k hook.mp4 ```参数说明:
使用whisper生成字幕文件:
安装whisper:
``` pip install openai-whisper ```生成字幕:
``` whisper video.mp4 --model base --language zh --output_format srt ```将字幕嵌入视频:
``` ffmpeg -i video.mp4 -vf "subtitles=subtitle.srt:force_style='FontName=Microsoft YaHei,FontSize=24,PrimaryColour=&H00ffffff,OutlineColour=&H00000000,BackColour=&H80000000,BorderStyle=3,Outline=1,Shadow=0'" -c:a copy output.mp4 ```针对抖音平台的优化编码命令:
``` ffmpeg -i raw.mp4 -c:v libx264 -profile:v high -level 4.0 -preset slower -crf 22 -maxrate 2000k -bufsize 4000k -pix_fmt yuv420p -c:a aac -b:a 128k -ar 44100 -movflags +faststart optimized.mp4 ```
关键参数说明:
从视频中提取第1秒的关键帧作为封面:
``` ffmpeg -i video.mp4 -ss 00:00:01 -vframes 1 -q:v 2 cover.jpg ```批量处理脚本:
``` !/bin/bash for file in .mp4; do ffmpeg -i "$file" -ss 00:00:01 -vframes 1 -q:v 2 "${file%.mp4}_cover.jpg" done ```强制设置关键帧间隔,提升拖动体验:
``` ffmpeg -i input.mp4 -c:v libx264 -g 30 -keyint_min 30 -sc_threshold 0 -c:a copy output.mp4 ```-g 30表示每30帧一个关键帧,适合短视频。
写入标题、描述等元数据信息:
``` exiftool -Title="你的视频标题" -Description="视频详细描述" -Keywords="关键词1,关键词2,关键词3" video.mp4 ```查看写入的元数据:
``` exiftool video.mp4 ```创建完整的处理脚本process_video.sh:
``` !/bin/bash INPUT_FILE=$1 OUTPUT_FILE="optimized_${INPUT_FILE}" 1. 提取3秒钩子 ffmpeg -i "$INPUT_FILE" -t 3 -c:v libx264 -crf 23 -preset fast -c:a aac -b:a 128k "hook_${INPUT_FILE}" 2. 优化主视频 ffmpeg -i "$INPUT_FILE" \ -c:v libx264 \ -profile:v high \ -level 4.0 \ -preset slower \ -crf 22 \ -maxrate 2000k \ -bufsize 4000k \ -pix_fmt yuv420p \ -g 30 \ -keyint_min 30 \ -sc_threshold 0 \ -c:a aac \ -b:a 128k \ -ar 44100 \ -movflags +faststart \ "$OUTPUT_FILE" 3. 提取封面 ffmpeg -i "$INPUT_FILE" -ss 00:00:01 -vframes 1 -q:v 2 "${INPUT_FILE%.mp4}_cover.jpg" 4. 生成字幕(需要先安装whisper) whisper "$INPUT_FILE" --model base --language zh --output_format srt 5. 嵌入字幕 ffmpeg -i "$OUTPUT_FILE" -vf "subtitles=${INPUT_FILE%.mp4}.srt:force_style='FontName=Microsoft YaHei,FontSize=24'" "final_${INPUT_FILE}" echo "处理完成:final_${INPUT_FILE}" ```给脚本添加执行权限:
``` chmod +x process_video.sh ```执行脚本:
``` ./process_video.sh your_video.mp4 ```批量处理整个文件夹的视频:
``` !/bin/bash for file in /path/to/videos/.mp4; do ./process_video.sh "$file" done ```创建检查脚本check_video.sh:
``` !/bin/bash FILE=$1 echo "检查文件: $FILE" echo "========================" 检查基本信息 ffprobe -v error -select_streams v:0 -show_entries stream=width,height,codec_name,bit_rate -of default=noprint_wrappers=1 "$FILE" 检查时长 DURATION=$(ffprobe -v error -show_entries format=duration -of default=noprint_wrappers=1:nokey=1 "$FILE") echo "视频时长: $(echo "$DURATION/60" | bc)分钟" 检查文件大小 FILESIZE=$(stat -f%z "$FILE" 2>/dev/null || stat -c%s "$FILE") echo "文件大小: $(echo "scale=2; $FILESIZE/1024/1024" | bc)MB" 检查关键帧 echo "关键帧信息:" ffprobe -v error -select_streams v:0 -show_entries frame=pict_type -of csv "$FILE" | grep -n I | head -5 ```执行检查:
``` ./check_video.sh your_video.mp4 ```如果遇到编码错误,尝试强制使用yuv420p像素格式:
``` ffmpeg -i input.mp4 -c:v libx264 -pix_fmt yuv420p -c:a copy output.mp4 ```修复音视频不同步:
``` ffmpeg -i input.mp4 -itsoffset 0.5 -i input.mp4 -map 0:v -map 1:a -c copy output.mp4 ```调整-itsoffset 0.5的值(单位:秒)直到同步。
限制内存使用:
``` ffmpeg -i input.mp4 -c:v libx264 -preset ultrafast -crf 23 -threads 2 output.mp4 ```-threads 2限制使用2个CPU线程,减少内存占用。
易频IT社区是综合性互联网IT技术门户网站,专注分享网络技术、服务器运维、网络安全、编程开发、系统架构、云计算、大数据等行业干货,实时更新IT行业资讯、零基础教程、实战案例,为IT从业者、技术爱好者提供专业的学习交流平台。
Copyright © 2021-2026 易频IT社区. All Rights Reserved. 备案号:闽ICP备2023013482号 网站地图