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')
相关推荐
daidaidaiyu14 小时前
FFmpeg 关键的结构体
c++·ffmpeg
扶尔魔ocy1 天前
【QT window】ffmpeg实现录音功能之无损格式--PCM
ffmpeg·pcm
止礼1 天前
FFmpeg8.0.1 源代码的深入分析
ffmpeg
小曾同学.com1 天前
音视频中的“透传”与“DTS音频”
ffmpeg·音视频·透传·dts
vivo互联网技术1 天前
数字人动画云端渲染方案
前端·ffmpeg·puppeteer·web3d
止礼1 天前
FFmpeg8.0.1 编解码流程
ffmpeg
qs70161 天前
c直接调用FFmpeg命令无法执行问题
c语言·开发语言·ffmpeg
止礼1 天前
FFmpeg8.0.1 Mac环境 CMake本地调试配置
macos·ffmpeg
简鹿视频2 天前
视频转mp4格式具体作步骤
ffmpeg·php·音视频·实时音视频