【问题标题】:ffmpeg rtsp does not terminate from Python subprocessffmpeg rtsp 不会从 Python 子进程终止
【发布时间】:2021-05-14 17:36:09
【问题描述】:

我正在尝试从 POE 流式摄像头读取数据并写入文件。我使用以下命令从命令行运行它:

ffmpeg -y -i rtsp://admin:admin@192.168.1.200 -acodec copy -vcodec copy out.mp4

当我按下 Ctrl+C 时,它会退出:

Exiting normally, received signal 2.

我可以查看保存的文件。

我需要用 Python 包装它。从在线阅读来看,使用 subprocess 库似乎是最好的。这是最基本的代码:

import ffmpeg
from subprocess import Popen
import signal
import time


handle = Popen("ffmpeg -y -i rtsp://admin:ambi1234@192.168.1.200 -acodec copy -vcodec copy out.mp4",shell=True)
time.sleep(5)
handle.kill()
# handle.send_signal(signal.SIGINT) # This doesn't work either

我看到的行为是5s后脚本退出了,但是ffmpeg还在工作。无论我发送多少次 ctrl+C,它都会继续。关闭终端会停止它,但文件无法播放。

如何彻底终止进程?

【问题讨论】:

标签: python ffmpeg


【解决方案1】:

这是有效的:

import os
os.killpg(os.getpgid(handle.pid), signal.SIGINT)```

【讨论】:

  • 我有一个问题.. 这是在指定的超时期限后手动终止子进程的示例。但是如果ffmpeg在超时期限之前遇到连接丢失会发生什么?子进程会自动终止还是只是冻结?
猜你喜欢
  • 2014-10-25
  • 2013-09-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-16
  • 2013-11-08
  • 2018-03-11
  • 1970-01-01
相关资源
最近更新 更多