如今不少flv和mkv視頻都是採用的h264封裝,移動設備每每並不支持這些格式的文件,但卻對h264封裝的mp4支持良好。所以,爲了視頻能在電腦和移動設備間共享,我一般會將其轉換成h264封裝的mp4文件。web
因爲視頻轉碼很是耗時間和cpu,若是flv和mkv原本就是採用的h264封裝,徹底不須要轉碼,只須要把h264視頻和音頻文件分離出來,從新混流一次便可,十幾秒內便可完成,很是快速,而且因爲沒有轉碼操做,也避免了轉碼過程的畫面損失。網站
下面我就介紹幾種將h264格式的flv和mkv無損轉換爲mp4的方法。spa
ffmpge(點擊下載)能夠很是快速的實現h264視頻的分離和混流,而且是命令行的操做,也沒有什麼參數須要設置,很是適合批量轉換:.net
ffmpeg.exe -i input.mkv -y -vcodec copy -acodec copy output.mp4命令行
要實現批量轉換,能夠直接用這個批處理文件:code
for %%i in (*.mkv) do ffmpeg.exe -i "%%i" -vcodec copy -acodec copy "%%~ni.mp4"orm
這個方法自己也支持轉換flv文件,可是ffmpeg貌似對flv的支持不夠好,很容易轉換失敗。對於flv文件,每每採用下面所述的方法。視頻
經過FlvExtract把flv文件分離爲視頻和音頻文件get
經過mp4box將視頻和音頻文封裝起來。input
命令行以下:
FLVExtractCL.exe -a -v input.flv
mp4box -add input.264 -add input.aac -new output.mp4
另外,mkv的轉換其實也能夠先分離出視頻和音頻,而後調用mp4box封裝,可是我試過一下,不只較爲麻煩,而且fps等參數控制很差時容易聲音不一樣步,所以不推薦。
不少時候,當咱們從視頻網站上下載的視頻是分紅好幾段的,這個時候就須要將轉換後的視頻文件鏈接成一個完整的視頻,能夠經過mp4box實現這一功能。
mp4box -cat a.mp4 -cat b.mp4 -new total.mp4
其實這個和上面的mp4混流命令的用法是同樣的。
須要注意的是,這個方法只適用於一樣的大小、碼率的視頻。不知足這個要求的視頻須要轉碼爲一致的才能順利合併。
有的時候,咱們每每須要剪輯視頻中的一部分片斷(如op等)保留下來,mp4box一樣能夠實現這個功能。
mp4box -splitx 9:31.5 -out output.mp4 input.mp4
這個命令一共須要傳入四個參數:1. 輸入視頻文件 2.開始時間 3.結束時間 4. 輸出文件。其中開始時間和結束時間以秒爲單位,支持小數。若是不指定輸出文則自動重命名。