h264格式的flv和mkv無損轉換成mp4的方法


現在很多flv和mkv視頻都是采用的h264封裝,移動設備往往並不支持這些格式的文件,但卻對h264封裝的mp4支持良好。因此,為了視頻能在電腦和移動設備間共享,我通常會將其轉換成h264封裝的mp4文件。

由於視頻轉碼非常耗時間和cpu,如果flv和mkv本來就是采用的h264封裝,完全不需要轉碼,只需要把h264視頻和音頻文件分離出來,重新混流一次即可,十幾秒內即可完成,非常快速,並且由於沒有轉碼操作,也避免了轉碼過程的畫面損失。

下面我就介紹幾種將h264格式的flv和mkv無損轉換為mp4的方法。

一、通過ffmpeg轉換mkv文件

ffmpge(點擊下載)可以非常快速的實現h264視頻的分離和混流,並且是命令行的操作,也沒有什么參數需要設置,非常適合批量轉換:

    ffmpeg.exe -i input.mkv -y -vcodec copy -acodec copy output.mp4

要實現批量轉換,可以直接用這個批處理文件:

    for %%i in (*.mkv) do ffmpeg.exe -i "%%i" -vcodec copy -acodec copy "%%~ni.mp4"

二、通過FlvExtract + mp4box轉換mkv文件

這個方法本身也支持轉換flv文件,但是ffmpeg貌似對flv的支持不夠好,很容易轉換失敗。對於flv文件,往往采用下面所述的方法。

  1. 通過FlvExtract把flv文件分離為視頻和音頻文件
  2. 通過mp4box將視頻和音頻文封裝起來。

命令行如下:

    FLVExtractCL.exe -a -v input.flv
    mp4box -add input.264 -add input.aac -new output.mp4

另外,mkv的轉換其實也可以先分離出視頻和音頻,然后調用mp4box封裝,但是我試過一下,不僅較為麻煩,並且fps等參數控制不好時容易聲音不同步,因此不推薦。

三、通過mp4box無損連接mp4文件

很多時候,當我們從視頻網站上下載的視頻是分成好幾段的,這個時候就需要將轉換后的視頻文件連接成一個完整的視頻,可以通過mp4box實現這一功能。

    mp4box -cat a.mp4 -cat b.mp4 -new total.mp4

其實這個和上面的mp4混流命令的用法是一樣的。

需要注意的是,這個方法只適用於同樣的大小、碼率的視頻。不滿足這個要求的視頻需要轉碼為一致的才能順利合並。

四、通過mp4box無損截取視頻片段

有的時候,我們往往需要剪輯視頻中的一部分片段(如op等)保留下來,mp4box同樣可以實現這個功能。

    mp4box -splitx 9:31.5 -out output.mp4 input.mp4

這個命令一共需要傳入四個參數:1. 輸入視頻文件 2.開始時間 3.結束時間 4. 輸出文件。其中開始時間和結束時間以秒為單位,支持小數。如果不指定輸出文則自動重命名。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM