#波导的效率私房# 10 最强MKV,FLV转MP4方法

波导终结者 波导终结者 2021-05-14 08:17

大家好,我是波导终结者。

最近又老是被推送到一堆MKV、FLV格式视频的问题,无外乎就是设备不兼容无法播放、非线编软件(VEGAS、PR等)无法支持或者支持不完美之类的,今天就来跟大家聊一聊MKV(FLV同)转MP4的无敌方法。

MKV和FLV之所以不受支持,核心原因还是格式特殊,要不然谁不想支持。太过技术核心的东西不想在这里聊,简单来说,FLV为流媒体而优化,与非线编的需求有点冲突;而MKV从结构上更类似于压缩包,这个就走得更远了。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

由于容器结构本质的不同,播放器倒还好,能兼容的越来越多,而非线编软件基本就是再见的节奏。VEGAS在最近几个版本中引入了MKV Reader,可以直接使用MKV文件,但是本质上,“压缩包”要使用里面的内容是必须要解压的,这个功能只是在后台先把MKV解包,再生成一个临时文件检索,不仅卡,而且有时候音画不同步,所以意义不大。原则上,把MKV重封装成MP4还是最好的办法。

之前《FFmpeg高级技巧》一文里,跟大家分享过把多音轨、多字幕的MKV文件,精简到单音轨并重封装进MP4的方法,但是看起来有点复杂。这次再来一个实例,重封装MKV文件。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

事情的起因是这样的:武林外传被爱奇艺买断,之前京东充PLUS会员绑了几年爱奇艺会员,想看的时候都还能看到。但是上个月,会员到期了,我也不打算再续会员,原因大家都懂的:VIP会员还有四五种广告轮番轰炸,那我要你这个会员干什么呢?找客服,客服说:“这不是广告,这是VIP专属推荐。”哦,我还得谢谢你给我推荐各种XX玩意了?!是不是看了“专属推荐”还要倒贴给你钱啊?谢谢你全家哦。

解决办法也不难,自己找源下载到本地看呗。下载完我又被恶心了一遍:这视频里竟然夹广告的。

这时候,无非两种情况:第一,这广告是压制到了视频上面去的,这种情况只能另找源,或者强忍恶心。第二,这广告是字幕文件,那就简单了,去掉即可。

初步判断,情况二的可能性比较大。原因也很简单:压到视频上需要重编码,极其耗时,而字幕文件只需要重封装,快得很。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

判断的方法很简单:视频播放器取消字幕显示,立马可见。还好,这次这家伙比较懒,用的是重封装的形式,省得我重新下载了。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

知道了字幕文件可以剔除之后,我们便可以将字幕文件反选,然后再输出新的MKV文件即可。不过,MKVTool好像并不支持简单的批量操作(得一个一个手动选,添加队列,再批量处理),还是稍微有点麻烦。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

用MKVExtract可以把里面的东西单独提取出来(楼上那个MKVTool也能提,但是外面还会有一层MKV容器,因为本质上它是用来把东西封进MKV里的)。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

提取出来的srt文件如上,哈哈,小样儿,你也就这两行的志气。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

上脚本,80集一共28G,光是复制就要花不少时间了,处理起来效果如何呢?

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

同盘输入输出,291倍速,不过由于是在机械硬盘里操作,感觉严重受到了机械硬盘性能的限制。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

看一下任务管理器的性能监控,确实是这样,D盘占用已经吃满,而CPU基本闲着。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

这次我手动设置目录,把D盘的源文件处理之后,输出到C盘里,C盘是块NVME盘,性能肯定高出不少。这次的速度升到了717倍,个人感觉还是被机械盘拖了后腿。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

看看性能,果然还是。HDD读取基本满载,CPU单核(脚本也只能跑单核)跑了差不多一半,而nvme盘时不时的写入,基本也是闲着。HDD的曲线和SSD不一样,一直是顶满的,说明文件刚读完,CPU处理完马上写入SSD然后就又开始读下个文件了,可怜的机械盘都没闲过。

如果用两个SSD一进一出的话,速度估计还能翻个倍(受限于单核CPU性能)。反正现在这样也只花了3分多钟就全部处理完了。

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

好了,大家最关心的脚本来了,跟上次处理多音轨文件其实差不多,这里加了一些改进。按照123的顺序来跟大家简单讲解一下。

语法顺序是先输入源,再定义输出。所以红线处1指向的是MKV文件的0轨也即视频,后面的copy就是不重新编码,只复制流。蓝线2处指向的是MKV文件的1轨也即音频。3处的~ni表示只取文件名的前缀(只写i的话会把.mkv也算进去)。

有的朋友可能要问了,为什么还要把前缀和后缀分开呢?那当然不是多此一举。

FFmpeg很智能的,你后缀是什么,就给你用什么封装。假设现在,你想把MKV文件封装成MP4文件,只要把set hz=.mkv,改成mp4即可,这样输出的就是与原文件名一样的.mp4文件。如果不分开的话,后缀会变成.mkv.mp4……

同理,如果想把FLV封装成mp4,这个脚本只要把(*.mkv)改成(*.flv),前面后缀改成.mp4即可,表示只读取文件夹内所有FLV文件。

这个方法只要文件有规律,来多少都是一个脚本的事儿,然后就坐着等就行。只要音频和视频流的格式受支持,想从什么容器转成另一种容器都没有问题,只需要按需求改一下脚本细节即可。MKV转MP4,FLV转MP4,或者随便互转都不是问题。

老是有小伙伴问说有没有一键工具,但我一直希望分享解决思路给大家,因为需求各不相同,怎么可能有不付出任何劳动,不做任何操作就能实现所有需求的方法呢?换个壁纸还得点几下不是?

#波导的效率私房# 10 最强MKV,FLV转MP4方法_新浪众测

感谢大家观看,如果对你有用,点个关注赞三连呗。如果还想了解其他内容,也不妨评论交流。我们下期再见。

(声明: 本文著作权归作者本人和新浪众测共同所有,未经许可不得转载。本文仅代表作者观点,不代表新浪众测立场。)
0 0
分享 商务合作 返回
微博 QQ空间 微信