FileNotFoundError: [Errno 2] No such file or directory: 'ffmpeg'
时间: 2023-10-21 20:23:56 浏览: 375
ffmpeg
这个错误通常是因为系统无法找到 FFmpeg 可执行文件导致的。您需要确保已经正确安装了 FFmpeg 并将其添加到系统的 PATH 环境变量中。
如果您已经安装了 FFmpeg 但仍然遇到此错误,可以尝试在代码中指定 FFmpeg 可执行文件的路径。例如,假设您已经将 FFmpeg 安装在 `C:\ffmpeg\bin` 目录下,您可以使用以下代码来指定 FFmpeg 的路径:
```python
import os
import cv2
import subprocess
# 指定 FFmpeg 可执行文件的路径
ffmpeg_path = "C:/ffmpeg/bin/ffmpeg.exe"
if not os.path.isfile(ffmpeg_path):
raise FileNotFoundError("FFmpeg not found at: " + ffmpeg_path)
# 打开 RTMP 推流进程
rtmp_url = "rtmp://your_rtmp_server_url"
command = [ffmpeg_path,
'-y',
'-f', 'rawvideo',
'-pix_fmt', 'bgr24',
'-s', '640x480',
'-i', '-',
'-c:v', 'libx264',
'-pix_fmt', 'yuv420p',
'-preset', 'ultrafast',
'-f', 'flv',
rtmp_url]
proc = subprocess.Popen(command, stdin=subprocess.PIPE)
# 打开摄像头并捕获实时视频流
cap = cv2.VideoCapture(0)
while True:
ret, frame = cap.read()
if not ret:
break
# 将视频帧写入 RTMP 推流进程
proc.stdin.write(frame.tostring())
# 显示视频帧
cv2.imshow('frame', frame)
if cv2.waitKey(1) & 0xFF == ord('q'):
break
# 关闭摄像头和 RTMP 推流进程
cap.release()
cv2.destroyAllWindows()
proc.stdin.close()
proc.wait()
```
在上面的代码中,我们添加了一个 `ffmpeg_path` 变量来指定 FFmpeg 可执行文件的路径。然后,我们检查该文件是否存在,并在启动 FFmpeg 进程时使用该路径。
阅读全文