亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

無法執行 ffprobe 命令

無法執行 ffprobe 命令

Go
天涯盡頭無女友 2023-08-07 10:04:39
我嘗試使用 ffprobe 獲取視頻文件持續時間。當我運行此代碼時,出現錯誤:退出狀態1:var out bytes.Buffervar stderr bytes.BuffercmdArgs := []string{"-i", "bunny.mp4", "-show_entries", "format=duration", "-v", "quiet", "-of", `csv="p=0"`}cmd := exec.Command("ffprobe", cmdArguments...)cmd.Stdout = &outcmd.Stderr = &stderrif err := cmd.Run(); err != nil {    fmt.Println(fmt.Sprint(err) + ": " + stderr.String())}fmt.Printf("command output: %q\n", out.String())但是當我傳遞參數時沒有-of csv="p=0"這樣:cmdArgs := []string{"-i", "bunny.mp4", "-show_entries", "format=duration", "-v", "quiet"}它可以工作并返回結果(但格式錯誤):命令輸出:“[FORMAT]\nduration=3.008000\n[/FORMAT]\n”那么問題是什么以及如何解決呢?
查看完整描述

1 回答

?
蝴蝶刀刀

TA貢獻1801條經驗 獲得超8個贊

嘗試像這樣格式化參數(對字符串使用雙引號而不是反引號并刪除內部雙引號):

cmdArgs?:=?[]string{...,?"csv=p=0"}

Goexec包不會調用系統 shell 來處理參數,因此在指定它們時不需要采取相同的預防措施。在這種情況下,無需將第一個“=”后面的部分用引號引起來。

從包文檔中:

與 C 和其他語言的“系統”庫調用不同,os/exec 包有意不調用系統 shell,也不擴展任何 glob 模式或處理通常由 shell 完成的其他擴展、管道或重定向。該包的行為更像是 C 的“exec”函數系列。要擴展 glob 模式,請直接調用 shell,注意轉義任何危險輸入,或使用 path/filepath 包的 Glob 函數。要擴展環境變量,請使用 os 包的 ExpandEnv。


查看完整回答
反對 回復 2023-08-07
  • 1 回答
  • 0 關注
  • 264 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號