记录下ffmpeg如何安装配置,以及如何合成视频。
一、安装ffmpeg
1、下载ffmpeg安装包
打开 Dpwnload FFmpeg 官网,选择安装包Windows builds from gyan.dev
2、下滑找到release bulids
部分,选择ffmpeg-7.0.2-essentials_build.zip
3、下载完成后,解压缩得到 FFmpeg 文件夹。
解压文件并检查目录结构
解压后的文件夹中应包含以下目录:
bin:FFmpeg 可执行文件所在的文件夹,运行 FFmpeg 的所有命令都需通过此目录下的文件。
doc:文档资料。
presets:预设的格式和编码方案。
进入 bin 目录,可以看到 FFmpeg 的三个核心可执行文件:ffmpeg.exe、ffplay.exe、ffprobe.exe。
4. 配置环境变量
为了方便在命令行中直接调用 FFmpeg,需要将其添加到系统的环境变量中。
在桌面左下角开始菜单搜索"菜单",找到"编辑编辑环境变量",然后点击打开。
5、重启电脑后查看是否生效
ffmpeg -version
6、命令行参数
-i 输入文件路径(被转换的 MP4 文件)
-f 输出文件格式设置为 mpegts
-codec:v 指定视频编码器为 mpeg1video
-b:v 设置输出视频比特率为 2000k
-r 设置帧速率为 30
-bf 设置 B 帧数量为 0
-codec:a 指定音频编码器为 mp2
-ar 设置音频采样频率为 44100
-ac 设置音频通道数为 1
-b:a 设置音频比特率为 128k
二、ffmpeg-python应用
1、安装ffmpeg-python
首先需要安装第一步ffmpeg,才能使用ffmpeg-python
pip install ffmpeg-python
2、获取音频、视频信息
def get_video_info(source_video_path):probe = ffmpeg.probe(source_video_path)format = probe['format']duration = format['duration']bit_rate = int(format['bit_rate'])/1000duration = format['duration']size = int(format['size'])/1024/1024video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)if video_stream is None:print('No video stream found!')returnwidth = int(video_stream['width'])height = int(video_stream['height'])fps = int(video_stream['r_frame_rate'].split('/')[0])/int(video_stream['r_frame_rate'].split('/')[1])duration = float(video_stream['duration'])print('width: {}'.format(width))print('height: {}'.format(height))print('bit_rate: {}k'.format(bit_rate))print('fps: {}'.format(fps))print('size: {}MB'.format(size))print('duration: {}'.format(duration))
3、转换视频格式
def convert_video():input_file = 'added.mp4'output_file = 'added.avi'ffmpeg.input(input_file).output(output_file).run()
4、调整视频比特率
def bitrate_video():input_file = 'added.mp4'output_file = 'added.avi'# 使用 b 参数调整输出视频的比特率ffmpeg.input(input_file).output(output_file, b=500000).run()
5、裁剪视频
def crop_video():input_file = 'added.mp4'output_file = 'added_crop.mp4'#使用 filter 方法裁剪视频到指定尺寸。ffmpeg.input(input_file).filter('crop',320,240).output(output_file).run()
6、合并视频
def concat_video():video_list = ["added.mp4","final.mp4"]v_in_arr = []for fn in video_list:inv = ffmpeg.input(fn)v_in_arr.append(inv)output_file = 'concated.mp4'ffmpeg.concat(*v_in_arr).output(output_file).run()
7、音频提取
def extract_video():input_file = 'added.mp4'output_file = 'added_audio.mp4'#使用 filter 方法裁剪视频到指定尺寸。ffmpeg.input(input_file).output(output_file, acodec='libmp3lame').run()
8、添加配音
def add_audio():input_file = 'output.mp4'audio_file = 'music.mp3'output_file = 'added.mp4'audio = ffmpeg.input(audio_file) # 配音video = ffmpeg.input(input_file) # 无声视频out = ffmpeg.input(input_file).output(audio,output_file,vcodec='copy',acodec='aac',shortest=None)out.run()# 命令如下:# os.system('ffmpeg -i output.mp4 -i music.mp3 -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 -shortest final.mp4')