Python程序使用了Ffmpeg,结束程序后,文件夹中仍然生成音频、视频文件

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自Mplay项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。

解决方法

首先我们得先查询后台是否有ffmpeg进程

bash 复制代码
ps -aux

根据pid定位到所运行的ffmpeg进程,如果ffmpeg不结束,那么就会一直生成音视频文件。

找到包括指定rstp视频流的ffmpeg进程。

python 复制代码
rint("出问题的id为======================================",device_id)
                rtsp_url = device_info['rtsp']
                rtsp_lower = rtsp_url.lower()
                for proc in psutil.process_iter(['pid', 'name', 'cmdline']):
                    try:
                        proc_name = proc.name().lower()
                        proc_cmd = ' '.join(proc.cmdline()).lower() if proc.cmdline() else ''
                        is_ffmpeg_proc = 'ffmpeg' in proc_name or 'ffmpeg' in proc_cmd
                        
                        if not is_ffmpeg_proc:
                            continue  # 不是FFmpeg进程,直接跳过
                        # 3.2 再判断是否包含当前设备的RTSP地址(确保是该设备对应的进程)
                        if rtsp_lower in proc_cmd:
                            logger.info(f"找到设备 {device_id} 对应的FFmpeg进程(PID: {proc.pid}),开始终止")
                            # 尝试正常终止,3秒超时后强制终止
                            proc.terminate()
                            # try:
                            #     proc.wait(timeout=3)
                            #     logger.info(f"FFmpeg进程(PID: {proc.pid})已正常终止")
                            # except psutil.TimeoutExpired:
                            proc.kill()
相关推荐
火车叼位4 分钟前
脚本伪装:让 Python 与 Node.js 像原生 Shell 命令一样运行
运维·javascript·python
孤狼warrior14 分钟前
YOLO目标检测 一千字解析yolo最初的摸样 模型下载,数据集构建及模型训练代码
人工智能·python·深度学习·算法·yolo·目标检测·目标跟踪
Sheep Shaun17 分钟前
揭开Linux的隐藏约定:你的第一个文件描述符为什么是3?
linux·服务器·ubuntu·文件系统·缓冲区
Katecat9966324 分钟前
YOLO11分割算法实现甲状腺超声病灶自动检测与定位_DWR方法应用
python
生活很暖很治愈34 分钟前
Linux——环境变量PATH
linux·ubuntu
玩大数据的龙威1 小时前
农经权二轮延包—各种地块示意图
python·arcgis
ZH15455891311 小时前
Flutter for OpenHarmony Python学习助手实战:数据库操作与管理的实现
python·学习·flutter
belldeep1 小时前
python:用 Flask 3 , mistune 2 和 mermaid.min.js 10.9 来实现 Markdown 中 mermaid 图表的渲染
javascript·python·flask
喵手1 小时前
Python爬虫实战:电商价格监控系统 - 从定时任务到历史趋势分析的完整实战(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·电商价格监控系统·从定时任务到历史趋势分析·采集结果sqlite存储
喵手1 小时前
Python爬虫实战:京东/淘宝搜索多页爬虫实战 - 从反爬对抗到数据入库的完整工程化方案(附CSV导出 + SQLite持久化存储)!
爬虫·python·爬虫实战·零基础python爬虫教学·京东淘宝页面数据采集·反爬对抗到数据入库·采集结果csv导出