当前位置: 首页 > article >正文

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

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'])/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、转换视频格式

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')


http://www.kler.cn/a/537528.html

相关文章:

  • RestTemplate Https 证书访问错误
  • std::memory_order
  • npm安装electron安装报错
  • GaussDB对象权限的注意事项
  • 【Linux网络编程】之守护进程
  • 胜任力冰山模型:深入探索职业能力的多维结构
  • 人工智能A*算法 代价函数中加入时间因素和能耗因素
  • Spring Boot 的问题:“由于无须配置,报错时很难定位”,该怎么解决?
  • vue3+vite+eslint|prettier+elementplus+国际化+axios封装+pinia
  • 23.PPT:校摄影社团-摄影比赛作品【5】
  • 设计模式-责任链模式:让请求像流水线一样自由流转
  • 19 角度操作模块(angle.rs)
  • 在 Open WebUI+Ollama 上运行 DeepSeek-R1-70B 实现调用
  • Unity项目接入xLua的一种流程
  • Java 中的 List 接口有哪些实现类?
  • c/c++蓝桥杯经典编程题100道(9)数组排序
  • 金和OA C6 DownLoadBgImage任意文件读取漏洞
  • Spinrg Security 浅谈
  • 后盾人JS -- 类类的
  • AtCoder Beginner Contest 391(A~E题题解)
  • MySQL InnoDB锁机制深度解析及高并发场景调优实践
  • Ubuntu20.4软件应用打不开
  • DeepSeek 实现原理探析
  • Windows安装cwgo,一直安装的是linux平台的
  • 【Redis】redis 存储的列表如何分页和检索
  • 【机器学习】超参数的选择,以kNN算法为例