我有一個小型的python程序,能夠非常好地從fcmpeg中使用子過程在linux中捕獲網絡攝像機中的短視頻(至少對於內置網絡攝像頭的筆記本電腦) 。如何在windows中使用ffmpeg抓取筆記本電腦的網絡攝像頭視頻
現在我試圖編寫相同的程序來捕獲Windows中的網絡攝像頭,我知道我不能使用在Linux中工作得很好的通用「/ dev/video0」,但我認爲像命名它「集成攝像頭」應該足夠了,但是失敗了。
這裏是我的Linux代碼(即工作):
import sys
from subprocess import call
from datetime import datetime
def record_webcam(seconds):
cam = '/dev/video0'
timestamp = datetime.now().strftime('%Y%m%d-%H%M%S')
filename = timestamp + 'something.mkv' #generated with more complexity in the actual code, but that isn't important
ffmpeg_cmd = 'ffmpeg -t {} -an -i {} -c:v libx264 -preset veryslow -crf 25 {}'.format(seconds, cam, filename).split()
p = call(ffmpeg_cmd)
return filename if p == 0 else False
if __name__ == '__main__':
record_webcam(sys.argv[1])
我已經看過了ffmpeg的文檔,並試圖尋找解決方案,但到目前爲止,我迷路了......
我知道「集成相機」僅適用於某些筆記本電腦,而不適用於其他筆記本電腦,並且不會捕獲其他連接的相機,但對於我的使用情況來說已足夠了......但如果您想要挑戰我也想知道如何不管它叫什麼,都可以用相機將它應用到任何windows-pc上。
此外,是更容易或更建議做我在這裏只用python工具,像OpenCV一樣嘗試?
在此先感謝! 編輯:如果有人有興趣根據@Mulvya的評論回答我自己的問題,但如果任何人仍然可以向我解釋關於OpenCV的部分,我仍然希望聽到它...
跟進的問題在這裏:ffmpeg through python subprocess fails to find camera
在Windows上,你將不得不使用要麼[DSHOW](https://ffmpeg.org/ffmpeg- devices.html#dshow)或[gdigrab](https://ffmpeg.org/ffmpeg-devices.html#gdigrab)輸入設備。 – Mulvya
嘗試過,但它沒有找到「集成相機」,我認爲它也有一個與libx264編碼混合的問題,但也許我錯了。你能舉出一個適用於任何攝像頭的命令嗎?或者至少*大多數*集成的? –
沒有通用命令。閱讀鏈接文檔中的[示例](https://ffmpeg.org/ffmpeg-devices.html#Examples-2)。首先,您必須檢查可用設備的列表,然後選擇一個並捕獲。使用x264編碼沒有問題。加入'-preset ultrafast -tune zerolatency'。 – Mulvya