身邊有一些音樂檔想放上雲端,隨時想聽就可以聽,
本來想用Google雲端備份,但Google雲端空間只有15G,
音樂檔太多很容易就塞滿了....又不想花錢買額外空間
後來腦筋就動到Youtube來啦~
不過...Yotube只可以上傳影片檔,聲音檔無法耶...怎麼辦?
只要將音樂檔 加上圖片做成影片檔,這樣不就可以上傳到Youtube了!
要怎麼把音樂檔合併圖片為影片檔呢?
網路上有一些Online Convert,只要上傳音樂檔案 + 圖片檔就可以幫你轉換成影片檔了,
還有整批批次幫你製作的功能咧~
不過...要我把一些私藏的音樂傳到別人的伺服器,感覺就像是把檔案送他一樣,這種事我無法接受...
( 雖然上傳到youtube也是有同樣的隱憂,但是至少人家是大公司,對於資料的保護上會比較完善。)
所以最好的方式是單機版的方式囉!
找了一下解決方案,很多單機版都是要錢錢的....恩...這年頭萬事都要省...
後來找到 FFmpeg
Wiki: FFmpeg 是一個自由軟體,可以執行音訊和視訊多種格式的錄影、轉檔、串流功能。
嗯!不錯耶,就用這個吧,只不過這須要以下指令的方式跑,感覺比較不"友善"一點
不過,沒關系,把要用的指令找出來後,以後就依樣畫葫蘆,也不會麻煩到哪裡。
因為是要備份音樂CD中的檔案,搭配 excel 可以簡單的做到多筆檔案的批次轉換的功能,也不用花時間自已寫一個小工具。
有須要的可以 下載我做的範例檔 批次mp3轉mp4範例.7z 來參考
照著以下步驟做就可以順利轉檔囉
(1)備好一張圖檔 (圖檔必須是2的倍數,不然轉檔會失敗唷!)
範例中是 img.jpg
(2)要轉檔的音樂檔( 多筆的話請批次命名讓檔名是以序號結尾,方便excel公式套用)
範例中用 music 01.mp3, music 02.mp3 二個檔案來示範
如果檔名是不規則的,可以透過 dir指命把檔名匯出,指命如下
dir *.mp3 /b > filename.txt
(3)開啟"產生指令.xls" 把所須的資訊填入
如下黃色區塊,把你的圖檔、音樂檔及要輸出的檔名等資訊填一,
最後在 I 欄 會依公式串出 所須的指令,再將這些指令複制起來
(4)用"筆記本"開啟 convert.bat 將步驟(3)的指令複制起來貼上後存檔
(5)在DOS 命令列上執行 convert.bat 開始進行轉檔
(6)轉檔結束後在目錄中會出現二個 mp4的檔案,打開來看看是不是成功轉檔啦~
這邊使用到的FFmpeg指令範例說明如下:
ffmpeg -loop 1 -i "img.jpg" -i "sound.mp3" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "result.mp4"
使用到的指令參數說明如下:( 更多詳細的參數選項可參考ffmpeg官網文件 )
- -i 輸入的檔名
我們有 圖片檔 、音樂檔 這二個輸入 img.jpg, sound.mp3
- -loop 是否重覆,0/1 表示 否/是
我們使用一張圖檔,所以設定 -loop 1,讓這張圖每分每秒都重複加上
- -pix_fmts 顯示可用的像素格式 RGB, YUV ...等
這邊我們使用的是 yuv420p
- -shortest 當最短的輸入串流結束後立即完成編碼
因為有設 -loop 1,會一直無限的循環,所以使用這個參數,當音樂檔串流結束,就完成編碼,否則會一直編碼下去,永遠都出不出啦..........
聲音相關參數
- -b:a 設定每Channel的流量
我們設定為 192kbps
- -c:a 設定聲音編解碼器
我們使用aac
影像相關參數
- -c:v 設定影像影像編解碼器
- -tune FFmpeg X264的參數,主要配合影像類型和視覺優化的參數,stillimage 表示靜態圖編碼時使用
補充:
如果聲音檔太長,也可以用ffmpeg 剪短一點,語法範例如下:
ffmpeg -ss 3 -t 60 -i inputfile.mp3 -acodec copy outputfile.mp3
-ss : 表示從第幾秒開始
-t: 表示最終剪裁完後的長度(例如 60秒)