1
我試圖通過從python子進程庫調用ffmpeg來創建一個循環視頻文件。這裏是一個的給我的問題的一部分:在Popen Python中的Bash進程替換
import subprocess as sp
sp.Popen(['ffmpeg', '-f', 'concat', '-i', "<(for f in ~/Desktop/*.mp4; do echo \"file \'$f\'\"; done)", "-c", "copy", "~/Desktop/sample3.mp4"])
與上面的代碼,我發現了以下錯誤:
<(for f in /home/delta/Desktop/*.mp4; do echo "file '$f'"; done): No such file or directory
我沒有找到一個類似的措辭問題here。但我不確定該解決方案如何適用於解決我的問題。
編輯: 感謝您的幫助!繼評論和其他地方的意見後,我最終改變了代碼:
sp.Popen("ffmpeg -f concat -i <(for f in ~/Desktop/*.mp4; do echo \"file \'$f\'\"; done) -c copy ~/Desktop/sample3.mp4", shell=True, executable="/bin/bash")
- 哪些工作正常。
您正在運行'ffmpeg',但重定向是shell的一項功能。使用'shell = True'參數來強制'Popen'將它傳遞給shell。還要考慮不傳遞一組命令和參數,而是一個字符串。閱讀更多[here](https://docs.python.org/2/library/subprocess.html#popen-constructor) – Amadan 2014-10-08 02:10:05
如果使用'shell = True',參數需要作爲字符串傳遞,而不是列表。 – dano 2014-10-08 02:11:19
+1阿馬丹和達諾所說的。您可能還需要明確指出您希望'/ bin/bash'而不是'Popen'的默認'/ bin/sh'。 – 2014-10-08 02:12:16