Python/FFMPEG 命令行问题

Python/FFMPEG 命令行问题

我在 Python 脚本中运行 FFMPEG 命令时遇到问题。当我从终端运行以下命令时,我可以从连接的网络摄像头 (Logitech C310) 流式传输视频和音频,并输出到文件“out.avi”,没有任何错误。

ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi

当我在下面的 Python 脚本中运行相同的命令时,

def call_command(command):
    subprocess.Popen(command.split(' '))

call_command("ffmpeg -f alsa -i default -itsoffset 00:00:00 -f video4linux2 -s 1280x720 -r 25 -i /dev/video0 out.avi")

它给了我这个错误:

Input #0, alsa, from 'default':
  Duration: N/A, start: 1317762562.695397, bitrate: N/A
  Stream #0.0: Audio: pcm_s16le, 44100 Hz, 1 channels, s16, 705 kb/s
[video4linux2 @ 0x165eb10]Cannot find a proper format for codec_id 0, pix_fmt -1.
/dev/video0: Input/output error

有人能解释一下这里可能发生了什么吗?我尝试使用 os.system() 以及 subprocess.call(),但都给出了相同的错误。我不确定从哪里开始说这里可能出了什么问题。我尝试搜索“video4linux2 无法找到 codec_id 0、pix_fmt -1 的正确格式”错误,但找不到任何一致的东西。

答案1

此问题已在堆栈溢出

总结一下答案,这是提问者代码的问题,他在尝试记录输出的同时还在屏幕上显示输出,这导致了冲突。

答案2

你可以调用子进程带参数的模块shell=True

subprocess.Popen(command, shell=True)

然而,我们无法在这里测试这是否能解决您的编解码器问题。

相关内容