ffmpeg介绍,安装
FFmpeg 是一款开源软件,用于生成处理多媒体数据的各类库和程序。
FFmpeg可以转码、处理视频和图片(调整视频、图片大小,去噪等)、打包、传输及播放视频。

简单来说,ffmpeg就是一个音视频处理软件,
跨平台的音视频处理方案,可以在Linux,Windows,mac系统下运行
ffmpeg应用场景
播放:迅雷看看、qq音影、暴风影音
剪辑:剪映
转换:格式工厂
都是基于ffmpeg进行二次开发的。
ffmpeg框架
FFmpeg(Fastforword mpeg,音视频转换器)是一个开源免费跨平台的视频和音频流方案,它提供了录制/音视频编解码、转换以及流化音视频的完整解决方案。ffmpeg源码目录结构如下:


FFmpeg框架中还提供了几个用于执行命令行完成音视频数据处理工具,包括fplay、ffprobe、ffserver,
具体解释如下:
ffplay Fast forword play,用ffmpeg实现的播放器
ffserver Fast forword server,用ffmpeg实现的rtsp服务器
ffprobe Fast forword probe,用来输入分析输入流
总体来说,
FFmpeg框架主要的作用在于对多媒体数据进行解协议、解封装、解码以及转码等操作。
FFmpeg中有很多比较重要的结构体,比如与输入输出(1/O)有关的结构体AVIOContext、URLContext、URLProtocol,
与封装格式有关的结构体AVFormatContext、AVInputFormat、AVOutputFormat,
与编解码有关的结构体AVCodec、AVCodecContext,
以及与音视频数据有关的结构体AVStream、AVPacket、AVFrame等等
ffmpeg有什么用途
FFmpeg在不停添加新的用例、工具和特性,这可以将FFmpeg扩展出无数个用途,比如:
1、视频处理
2、视频压缩
3、支持视频打包
4、支持音频、视频容器格式(几乎市面上的格式,全都支持)
5、ffprobe:
FFmpeg 还可用于了解视频结构并对其进行分析。
FFmpeg库构建了一个名为 ffprobe 的命令行,可用于查看和分析视频文件。
你可以使用 ffprobe 从视频中提取各种元数据、计算帧数、査找 IDR 帧的位置等等。
6、ffplay:
FFmpeg中还有一个播放视频的命令行工具fplay,无需任何花哨的视频播放软件,直接使用它就可以了。
ffmpeg安装
首先去官网:https://ffmpeg.org/
1,点击download

2,点击下方windows,选择第二个,如下图

3,点击后,会跳转到git中,点击下图红框中的zip进行下载。

4,下载成功后,解压到自己本地目录;然后打开bin目录,复制路径,添加到环境变量中去。

5,环境变量配置
我的电脑-属性-高级系统设置-环境变量-系统变量-path-新建-把bin目录路径添加进去

6,然后win键+r键,打开cmd命令窗口,输入:ffmpeg -version 查看是否安装成功

至此,介绍和安装完毕。
然后可以通过help命令查看使用命令:ffmpeg -help 或者 ffmpeg -h,会打印出所有的使用帮助。

常用的一些命令,可以在网上搜,有人整理过,比如下面我随便找了几个:
https://developer.baidu.com/article/details/3304927
https://baijiahao.baidu.com/s?id=1816114967992754157&wfr=spider&for=pc
https://blog.csdn.net/weixin_61503529/article/details/141828622
如果觉得命令使用麻烦的话,可以看B站上这位小姐姐的视频讲解,比如把命令保存到txt文件中,然后把txt修改成bat文件类型,然后点击即可。
其它更多关于ffmpeg相关知识,可自行网上学习。
ps更新:
踩到的第一个坑,通过命令或脚本,开始录制视频。录制结束后生成mp4结尾文件,打开文件提示该文件使用中,然后发现该文件持续在写入,内存在变大。
问题原因
-
FFmpeg 进程未正确终止
-
Python 脚本退出时,子进程可能仍在运行
-
-
资源未释放
-
文件句柄/管道未关闭导致系统认为文件仍在使用
-
-
缓冲区未刷新
-
FFmpeg 的写入缓冲区未完全写入磁盘
-
原因是FFmpeg 进程在脚本结束后仍在后台运行,导致视频文件被锁定且持续写入。
可以通过命令结束掉这个进程。
1. Windows 系统
方法1:通过任务管理器(cmd命令窗口):taskkill /f /im ffmpeg.exe
方法2:通过进程PID(需提前记录PID):taskkill /f /pid <进程PID>
方法3:结束所有视频相关进程:taskkill /f /im ffmpeg.exe /im vlc.exe /im mpv.exe
2. Linux/macOS 系统
方法1:通过进程名(bash):pkill -f ffmpeg
方法2:通过进程PID:kill -9 <进程PID>
方法3:结束所有相关进程:killall ffmpeg vlc mpv
然后写脚本的时候,可以在在代码中添加进程清理逻辑。

浙公网安备 33010602011771号