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')
相关推荐
小鹿研究点东西1 天前
直播带货长视频AI自动剪辑开播:一场直播如何反复利用?
ffmpeg·自动化·音视频·语音识别
luoyayun3611 天前
Qt + FFmpeg 实战:获取音视频文件基础属性、流信息和元数据
qt·ffmpeg·音视频·元数据·获取音视频文件属性
Rudon滨海渔村1 天前
ffmpeg裁剪视频黑屏、不准时等处理方式 - ffmpeg基本操作
ffmpeg·音视频
The Sheep 20232 天前
ffmpeg速成
ffmpeg
街灯L2 天前
【Ubuntu】使用ffmpeg解析m3u8网页视频
ubuntu·ffmpeg·音视频
烟雨江南7853 天前
特高压输电线路带电作业直升机吊篮与强电磁感应放电:基于“灵声智库”空间自适应滤波与声纹授权的离线语音控制指令方案
人工智能·ffmpeg·webrtc·语音识别·ai质检
AJi3 天前
H264码率控制
ffmpeg
换个昵称都难4 天前
webrtc voice engine 介绍(新版webrtc)
ffmpeg·音视频·webrtc
小鹿软件办公5 天前
巧用 Adobe Audition 中置声道提取,轻松分离人声与背景音乐
adobe·ffmpeg·简鹿人声分离
2023自学中7 天前
imx6ull开发板 移植 ffmpeg 4.2.11 + x264 视频编码库
linux·ffmpeg·音视频·嵌入式·开发板