如今不少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. 输出文件。其中开始时间和结束时间以秒为单位,支持小数。若是不指定输出文则自动重命名。