https://youtu.be/D-h6MoF7HLA

但最後卻仍是 160 bps opus 為最佳儲存格式
用 youtube-dl -F https://youtu.be/D-h6MoF7HLA 查看所有格式

故一些 app 強調可以抓取 youtube 上的音樂,並以 flac 或是 wav 格式儲存, 其實只是將 opus 再轉成 flac或wav 而已, 它已不再是無損音樂, 只是充胖子而已, 所以若要抓取 youtube 上最高音質的音樂,就只有 160kbps opus。
正文開始, 想知道方法的直接跳到 5F 有完整的程式可以參考
我是分隔線===============
小弟想寫個shell script抓取youtube上的音樂(opus格式).
youtube-dl -f bestaudio -o %'(title)s%(ext)s' ${1} -x --audio-format "opus" --audio-quality 0
運作的很好,可是畢竟認識 .opus的手機app不多.故想透過ffmpeg進行變换封裝格式但不重新編碼(recode),避免因recode音質再次變差
ffmepg -i a.opus -codec copy a.ogg可以完美的運行,可是就必須分成兩個動作.
動作一:透過youtube-dl抓取opus音樂並存入硬碟.
動作二:透過ffmpeg至硬碟抓取.opus檔進行轉檔成.ogg
在linux or Dos shell下有一些很好用的指令,例如pipe,下面的例子是利用
youtube-dl將影片抓取後直接(不需存到硬碟)透過pipe以及stdin, stdout將輸出餵給vlc做播放動作
youtube-dl -o - "$url" ¦ vic -
所以我也想透過pipe以及stdin, stdout的方式,重寫shell script.
方法一:(不成功).
youtube-dl -f bestaudio ${1} -o - ¦ ffmpeg -i pipe:0 -codec copy pipe:1 ¦ cat > out.ogg
錯誤訊息: fixed output name but more than one file to download.
方法二:(不成功).
youtube-dl -f bestaudio ${1} -o - ¦ ffmpeg -i pipe:0 -codec copy pipe:1
錯誤訊息: fixed output name but more than one file to download.
看起來無論指不指定輸出檔都會得到相同的錯誤,也分段測試過 ¦前的動作確定只會抓一個檔案
測試了很久始終無法解決,在此請教熟悉linux shell command的前輩能提點一二,感謝!
                    


































































































