2016-02-19 35 views
0

我試圖使用youtube-dl來獲取某些視頻的網址,然後將生成的網址通過管道輸入到我的輸入中腳本。所以在我的終端我使用ffmpeg將youtube-dl輸出到腳本的輸出看起來不錯,但執行時會返回錯誤

youtube-dl --ignore-config -iga ~/Desktop/youtube/videolist.txt | myscript.sh 

在我的劇本,我定義事情

command='ffmpeg'   
inputArgs='-i'    
outputArgs='-c:v libx264 -preset ultrafast -qp 0'  
directory="${HOME}/Desktop/Videos/" 
output="video${count}"  
extension='mp4'   

echo測試,以確保一切都出現在正確的順序。

echo "${command}" "${inputArgs}" "${input}" "${outputArgs}" \ 
"${directory}""${output}${count}"."${extension}" 

而且看起來正確的輸出。但是,當我嘗試不前echo命令運行同樣的事情,即

"${command}" "${inputArgs}" "${input}" "${outputArgs}" \ 
"${directory}""${output}${count}"."${extension}" 

我得到,說必須指定

至少一個輸出文件的錯誤消息。

因此,對我來說,在嘗試執行操作時出現錯誤似乎很明顯。

我曾嘗試:

  • 引述整條生產線的整體
  • 引用不同的部分一起
  • 眼前的一切使用exec命令

不管我做什麼,在此過程中的某個時刻發生錯誤。我知道這很簡單,我做錯了。請有人指教我可能是什麼?

我非常強烈地認爲.不應該只是在這樣的一切中間,但我真的不知道。

再說一遍,當我在Shell參數串之前運行echo時,一切看起來都應該如此。

如果需要更多的腳本來理解我在說什麼,那不是問題。

+0

在腳本中..你如何調用命令。你也管這個youtube-dl --ignore-config -iga〜/ Desktop/youtube/videolist.txt | myscript.sh ...或者你在做youtube-dl --ignore-config -iga〜/ Desktop/youtube/videolist.txt | ./myscript。sh – Varun

+0

那麼我打電話是錯誤的,但我現在稱它爲''$ command「$ inputArgs」$ input「$ outputArgs」$ directory $ output $ count。$ extension「'你在問什麼?就管道而言,我一直在做'youtube-dl --ignore-config -iga〜/ Desktop/youtube/videolist.txt | myscript.sh'我已經看到了對youtube-dl --thingsandstuff |的引用./myscript.sh方法之前,但我不清楚兩者之間的差異。 –

回答

0

問題是因爲你把它放在引號中"${outputArgs}"被擴展爲單個參數。它不會被拆分成單獨的參數,所以ffmpeg只會將它看作一個具有非常長的流說明符的單個-c選項。下一個參數,輸出文件被解釋爲編解碼器。

要解決的問題簡單地去掉引號:

"$command" $inputArgs "$input" $outputArgs "$directory$output$count.$extension" 

我刪除了花括號({})只是爲了節省空間。如果您願意,使用它們沒有任何問題。