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 Cannot find aproper format for codec_id 0, pix_fmt -1”錯誤,但找不到任何一致的內容。

答案1

這個問題已經解決了堆疊溢位

總結一下答案,這是提問者程式碼的問題,他在嘗試記錄輸出的同時在螢幕上顯示輸出,這導致了衝突。

答案2

您可以調用子流程模組參數shell=True

subprocess.Popen(command, shell=True)

但是,我們無法在這裡測試這是否可以解決您的編解碼器問題。

相關內容