2010/01/24

[note] justin.tv 的flv檔案轉換,為了上傳到Youtube做準備。

Justin.tv的實況flv並無法直接上傳到youtube上,而我錄一大票影片想上傳到youtube上,該怎辦咧?
於是我去找了很多網站,但是很不幸的我的格式似乎不是那麼好支援?

##ReadMore##

有損的辛苦歷程

我試過AviSynth的DirectShowSource,無奈我寫好avs
LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\DirectShowSource.dll")
DirectShowSource("highlight_2457073.flv")
丟給VirtualDub吃後,VirtualDub就自爆惹。

後來也試過去moitah.net找一個FLV Input Plugin v1.1.0,可惜裝好丟下去VirtualDub跟我說沒有影像訊息/x\。


之後才找到這個FFMpegSource的Plugin,裝好後配合avs
LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
FFmpegSource2("highlight_2457073.flv")
終於可以在VirtualDub看到我錄製的影片了/x\,但是聲音還是死掉的Orz,FFMpegSource2不讀聲音嗎,囧。


接著,我使用FLV Extract出來的aac檔,把avs改成
LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\ffms2.dll")
LoadPlugin("D:\Program Files\AviSynth 2.5\plugins\DirectShowSource.dll")
v = FFmpegSource2("highlight_2457073.flv")
a = DirectShowSource("highlight_2457073.aac")
audiodub(v, a)
可以讀是可以讀,但是這次換影像的時間音軌不配合Orz。最後的解決方法:Video Frame Rate > Change Frame so video and audio durations match。啦啦啦,這次好像影音有同步,希望不會再有問題惹Orz。


但是又來一個新問題:這樣是有損壓縮(倒地)。用AVISynth讀進來的同時等於是放棄他原本就已經壓好的串流,要重新全部重壓一次。

包成MKV

感謝PTT AVEncode板 web2312 提供了一個方法,使用mkvmerge此程式,把檔案包在一起。方法如下:
1.FLV Extract解出264與aac。
2.mkvmerge把264與aac包進去,需要手動設定fps。
還好youtube吃mkv…

包成avi

因為個人對mkv有偏見,所以又去找了另外的方法。目前我手邊能找到能無損包264與aac的方法很少,能無損包264的只有avc2avi,無損包aac的是AVI-Mux_GUI,最後我弄出無損avi步驟如下:
1.使用FLV Extract分離出264與AAC
2.使用avc2avi把264包進avi內
3.使用AVI-Mux_GUI把aac包進avi內
4.使用VirtualDub調整framerate

其中avc2avi我寫了一個batch檔,只要把264檔拖到該batch上,他就會自動把他包成avi。
(Windows XP以上適用,須與avc2avi.exe放在同資料夾)avc2avi_batch.bat:
echo off
echo This is a batch file of avc2avi.
echo Now is processing:
echo "%1"
echo It would be saved to:
echo "%~dpn1.avi"
echo avc2avi message:
echo --
"%~dp0\avc2avi.exe" -i "%1" -o "%~dpn1.avi"
echo --
echo Processing done.
pause
echo on

雖然avc2avi的參數之中可以調整fps,但是我討厭每次都要手動key,搞不好會key錯,所以才會多第四步用VirtualDub調整fps。另外,AVI-Mux_GUI在Win7/Vista下必須要開相容性模式才會工作,且他的拖曳功能會失效,算是缺點…,或許我該找能在命令列工作的AVI-MUX來寫更簡單的batch檔來用。



結果還是沒搞懂為何別人的AVISynth能夠讀.264我的不行…。



我的軟硬體條件:
Win7 x32
K-lite Mega Codec Pack 5.61
VirtualDub 1.9.5
AviSynth 2.58

使用的檔案:
之前錄的瑪奇實況影片
http://zh-tw.justin.tv/clip/25b4ff703f8aee52




軟體
FFMpegSource
  http://code.google.com/p/ffmpegsource/downloads/list

FLV Extract
  http://moitah.net/

AVC2AVI
  http://sourceforge.net/projects/avc2avi/

MKVToolnix
  http://www.bunkus.org/videotools/mkvtoolnix/downloads.html#windows

AVI_MUX_GUI
  http://www.alexander-noe.com/video/amg/



參考
http://www.pcdvd.com.tw/showthread.php?t=770301
http://forum.doom9.org/showthread.php?t=127037
http://www.ptt.cc/bbs/AVEncode/M.1264337633.A.9F0.html


沒在用的或是沒幫助但是有點參考價值的
http://forum.doom9.org/archive/index.php/t-112883.html
http://www.pcdvd.com.tw/showthread.php?t=766134
http://www.mobile01.com/topicdetail.php?f=129&t=69376&p=20
http://www.videohelp.com/forum/archive/opening-flv-in-virtualdub-t334278.html
http://www.videohelp.com/forum/archive/virtualdub-shows-h-264-as-black-screen-t377590.html
http://bbs.ouryvonne.org/redirect.php?fid=28&tid=313&goto=nextnewset