ffmpeg合成视频

记录下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、重启电脑后查看是否生效

bash 复制代码
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

bash 复制代码
pip install ffmpeg-python

2、获取音频、视频信息

python 复制代码
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'])/1000
    duration = format['duration']
    size = int(format['size'])/1024/1024
    video_stream = next((stream for stream in probe['streams'] if stream['codec_type'] == 'video'), None)
    if video_stream is None:
        print('No video stream found!')
        return
    width = 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、转换视频格式

python 复制代码
def convert_video():
    input_file = 'added.mp4'
    output_file = 'added.avi'
    ffmpeg.input(input_file).output(output_file).run()

4、调整视频比特率

python 复制代码
def bitrate_video():
    input_file = 'added.mp4'
    output_file = 'added.avi'
    # 使用 b 参数调整输出视频的比特率
    ffmpeg.input(input_file).output(output_file, b=500000).run()

5、裁剪视频

python 复制代码
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、合并视频

python 复制代码
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、音频提取

python 复制代码
def extract_video():
    input_file = 'added.mp4'
    output_file = 'added_audio.mp4'
    #使用 filter 方法裁剪视频到指定尺寸。
    ffmpeg.input(input_file).output(output_file, acodec='libmp3lame').run()

8、添加配音

python 复制代码
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')
相关推荐
陈皮话梅糖@5 小时前
FFmpeg + OpenGL ES 美颜相机教程大纲
数码相机·ffmpeg
SimpleForest5 小时前
ffmpeg -codecs
ffmpeg
云雨歇5 小时前
嵌入式音视频开发(零)移植ffmpeg及推流测试
ffmpeg·音视频
SimpleForest5 小时前
ffmpeg -demuxers
ffmpeg
美丽的欣情5 小时前
Qt通过FFmpeg打开RTSP并截图一帧作为背景
开发语言·qt·ffmpeg
SimpleForest10 小时前
ffmpeg -devices
ffmpeg
SimpleForest10 小时前
ffmpeg基本用法
ffmpeg
放飞自我的Coder2 天前
【非 root 用户下全局使用静态编译的 FFmpeg】
linux·ffmpeg
沐风_ZTL2 天前
RK3568上使用C++结合V4L2拉流,并RKMPP硬件编解码,并保存为MP4文件
开发语言·c++·ffmpeg·rkmpp·v4l2