筆記-YouTube影片轉MP3(批次作業版)

不久前才知道有個馬拉松迷專屬的網路廣播節目 -- 跑步吧! 人生,主持人飛小魚每週邀請馬拉松界的聞人漫談跑馬點滴,分享訓練成長心得,以及踏上慢跑不歸路的心路歷程... 等。節目表上的來賓,幾乎網羅了我在賽道見過的各大社團名稱及名人: 百信建材、土慢、警愛跑、愛跑部、康軒、拖鞋俠、紅衣女郎... 簡直是一本台灣馬場百科全書。

可惜節目只能透過YouTube收聽,未提供MP3檔下載,沒辦法實現丟進運動MP3邊跑邊聽的夢想。之前我曾找過YouTube轉MP3的方法,但其針對情境為單一YouTube影片轉檔,但這次我面對的節目內容前後共72集,每集約4段影片,故共有288段影片要轉檔,轉完還得四個MP3檔合併成一個...

身為程式魔人,若是認命地手工輸入URL、等待轉檔完成再選檔合併... 傳到江湖肯定被人耻笑,一定要寫程式搞定才是王道呀!! 花了點時間,找到自動化生產的方法: (全都要感謝Open Source社群的無私分享)

  1. 由網頁抓回各集各段影片的YouTube連結,這部分可靠WebClient + RegularExpression解決
  2. 找到一份很棒的說明(Grabbing Your Music from YouTube: Do It Your Way),教你使用三個Open Source命令列工具完成YouTube轉MP3的程序,分別是:
    * youtube-dl 取回指定YouTube連結影片的FLV檔案 
       (Windows版下載: youtube-dl under Windows)
    * ffmpeg 可由FLV擷取WAV檔案 (Windows版下載: Zeranoe FFmpeg Builds)
    * lame 將WAV轉成MP3 (Windows版下載: RAREWARES LAME Bundle)
  3. 最後一塊拼圖: 由於一集節目分成3-4個MP3,合併成一集一檔使用起來比較方便。理論上應可找到合用的併檔命令列工具,但我發現了更有趣的東西,一個可以編輯MP3檔案的Open Source .NET元件 – NAudio,有現成的併檔範例可參考,我還假掰順手加上ID3v2 Tag標示標題跟作者(當然是飛小魚啦! 不是我)。學會這顆元件,以後要使用.NET產生MP3檔時就可派上用場。

嘗試了邊聽跑步廣播邊跑步,果然十分對味! 未來兩三個月跑LSD應該都不會無聊囉~

歡迎推文分享:
Published 24 November 2012 09:41 PM 由 Jeffrey
Filed under: ,



意見

# Mr.D said on 25 November, 2012 06:48 AM

想請教一個問題,為何有些國外CDN的網站,

在引用 Script src 都少http 用意何在?

# Jeffrey said on 25 November, 2012 09:42 PM

to Mr.D, 我猜是為了配合能在http:及https:間切換而不產生安全警告。可參考保哥文章(blog.miniasp.com/.../URL-URI-Description-and-usage-tips.aspx)

"技巧 4:僅忽略 scheme 的部分"一節

# E1 said on 26 November, 2012 02:31 AM

感謝黑暗大的分享, 實在好用. 小弟不才無法作出一氣呵成的程式,

但也想分享昨天應用的批次檔. 此批次檔雖無法合併檔案, 但仍可快速將 Youtube 直接轉成 MP3 服用.

操作方式

1. 參考黑暗大本文, 下載 3 支程式

2. 開新的文字檔

3. copy 以下內容至文字檔

4. 配合下載完的 3 支程式, 修改以下內容的 5, 6, 7 行的路徑

5. 儲存文字檔, 副檔名需存為 *.bat

6. 執行此批次檔 (*.bat), 出現 "Youtube URL:" 時輸入 Youtube 網址

7. 完成

@echo off

rem ===================================

rem 請先修改以下 3 支程式路徑 youtube-dl, ffmpeg, lame

rem ===================================

set youtube-dl=d:\temp\youtube-dl.exe

set ffmpeg=d:\temp\ffmpeg\bin\ffmpeg.exe

set lame=d:\temp\lame\lame.exe

rem ===================================

set /p varURL=Youtube URL:

for /F "DELIMS=" %%A IN ('%youtube-dl% --get-title "%varURL%"') DO (SET YoutubeTitle=%%A)

echo ==============================================================

echo Youtube 名稱: %YoutubeTitle%

echo ==============================================================

%youtube-dl% "%varURL%" -o "%YoutubeTitle%.flv"

%ffmpeg% -i "%YoutubeTitle%.flv" "%YoutubeTitle%.wav"

%lame% "%YoutubeTitle%.wav"  "%YoutubeTitle%.mp3"

if exist ".\%YoutubeTitle%.mp3" del "%YoutubeTitle%.flv"

if exist ".\%YoutubeTitle%.mp3" del "%YoutubeTitle%.wav"

if exist ".\%YoutubeTitle%.mp3" echo ==============================================================

if exist ".\%YoutubeTitle%.mp3" echo %YoutubeTitle%.mp3 檔案已產生

if exist ".\%YoutubeTitle%.mp3" echo ==============================================================

你的看法呢?

(必要的) 
(必要的) 
(選擇性的)
(必要的) 
(提醒: 因快取機制,您的留言幾分鐘後才會顯示在網站,請耐心稍候)

5 + 3 =

搜尋

Go

<November 2012>
SunMonTueWedThuFriSat
28293031123
45678910
11121314151617
18192021222324
2526272829301
2345678
 
RSS
【工商服務】
OrcsWeb: Windows Server Hosting
twMVC

Tags 分類檢視
關於作者

一個醉心技術又酷愛分享的Coding魔人,十年的IT職場生涯,寫過系統、管過專案, 也帶過團隊,最後還是無怨無悔地選擇了技術鑽研這條路,近年來則以做一個"有為的中年人"自許。

文章典藏
其他功能

這個部落格


Syndication