金刚 - 舰队collection

[技术讨论] 1秒钟将FLV无损转换成MP4,FFmpeg的“copy”Function

发表于 2015-3-5 04:37:37 | 查看: 10928| 回复: 10
本帖最后由 kami1217 于 2015-3-5 15:25 编辑

大家经常看视频,遇到喜欢的视频总是想下载下来,不管你是从浏览器的临时储存文档里面掏出来的也好,或者是用其他什么方法下载下来的也好,通常都是一个.FLV文件。这个FLV文件虽然大多数播放器都支持她,但很多手机/游戏机却无法识别。好了,这时候大家一般的做法都是通过转码软件,把这个FLV转换成MP4,但却不知其实很多时候你的转码行为确实多此一举,不仅增加了体积,反而还越来越lossy,因为你根本就在同一个码上转换。
举个例子吧:比如我在某视频网站上传了一个视频,上传的是mp4,下载下来却是flv,我就奇怪了,明明码率,采样都没变,难道服务器还动用珍贵的资源转码不成?明明体积也没变的说。于是查了下这个flv的真实面目,一下恍然大悟,哦~原来如此。
拿小苹果为例吧,当你把这个.FLV文件用你的播放器打开(这里用得是QQ的播放器),然后点击文件属性查看播放文件详情:
Capture.PNG (视频为H.264|720p|23FPS; 音频为AAC(MPEG4)|~192KBPS)
H.264/MPEG-4 AVC (点击了解更多关于AVC-Advanced Video Coding)
如果我们把视频流和音频流当成水,把封装格式当成一个容器,水是一样的,杯子不一样而已,但就因为杯子不一样,你的手机播放器放不了,你的视频编辑软件也打开不了,因为这些软件都以为茶杯就是喝茶的,碗是用来吃饭的,他们连内容都不看就直接下定论了,殊不知古代用碗喝茶天经地义啊。

说了这么多,该主角上场了,他的名字叫FFmpeg,相信有过视频编辑经验的同学都对它不陌生,很多多媒体软件多多少少都会用到它,那么它是什么东东呢,容我从维基百科和百度百科抄一段:
Capture.PNG (一般现代软件能用汇编语言(assembly)写的基本都是核心中的核心,因为它不需要compilar再次转换,且可以按自己的想法优化asm。如果再运用AVX/Cuda等并行运算技术,这种软件绝对是大师级中的大师)。

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多codec都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,现在由Michael Niedermayer维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。

这段话里面其他的不重要,关键就几个
1. 它是开源的(免费的)
2. 它是多平台的(各大系统都能用)
3. libavcodec里很多codec
4. 原来FF代表fast Forward,不是代表Final Fantasy,里面没雷霆!
这里的第三条我们待会儿会用到

接下来baidu还介绍了一些常用的指令,哦对了,这个软件和上次介绍的packJPG一样,都是没有gui的(当然第三方的有很多,感谢L补充),所以得用命令来操作。其实对很多人来说还更方便了,双击bat就了事,还不用先打开.exe,然后去点击menu里面的file,file里面的open,选好之后还得yes,还有一大堆的ok,yes,next,最后还得保存。
ffmpeg 命令集举例
1.获取视频的信息
ffmpeg -i video.avi
2.将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等...)合并成video.mpg
3.将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg. image2.jpg. ...
支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SG
4.为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
...bla bla bla bla...
想要更多可以去看官方document,那才是最详细的:https://ffmpeg.org/ffmpeg.html

基本格式就是这样:
  1. ffmpeg -i input.mp4 output.avi
复制代码

但上面的命令都是转码用的,而我们需要的只是把水倒到另一个容器里面,水的质量不变,体积也不变(如果发现两个文件大小不一样,那是因为容器不一样,虽然都是一口水,你用罐装,我用缸装,当然有差距,但实际上非常接近)。

好了,那怎么办呢?我们需要用到一个非常常用且简单的动作——copy,这个copy正是之前提到的codec里面的一个。

话不多说,直接给一条最懒的命令——
  1. for %%A IN (*.flv) DO ffmpeg -i "%%A" -c copy -copyts "%%A.mp4"
复制代码
请把这条命令copy到笔记本里面,然后按另存为 FLV_to_MP4.bat 到解压下来的FFmpeg/bin目录里面(确保里面有ffmpeg.exe)。
另外这条命令意思是把当前目录下所有的.flv转换成.mp4(同样名字)。

然后把需要转换的FLV放到bin目录中,运行FLV_to_MP4.bat
Capture.PNG
由于copy太快,还得设个pause来截图。

之后,你会发现MP4的小苹果且windows media player也能播放(无解码包)。

Capture.PNG

Capture.PNG

这种换壳子的办法只能在视频编码都是相同情况下换,至少我所遇到的flv/mkv基本都是H.264都能转。当然有些编码不同的就是另外一种情况了,就必须用百度教的方法来。也就是正常的encoding。

FFmpeg windows最新版:点我下载
推荐一个平民级的第三方FFmpeg GUI —— http://www.avanti.arrozcru.org/
另外推荐一个土豪级的Mac平台的FFmpeg GUI —— http://www.iffmpeg.com/ (说实话,的确好看)
最后推荐一个本人相当喜欢的一个多媒体转换软件叫 Any Video Convert (支持Cuda/OpenCLl的GPU加速)

PS:另外很多人估计会需要这一条,把Flac转成mp3,这个不是lossless,这个是实实在在转换成320k的mp3,降质!
  1. for %%A IN (*.flac) DO ffmpeg -i "%%A" -ab 320k -ac 2 -ar 44100 "%%A.mp3"
复制代码




回复

使用道具 举报

12
阿良良木 月火 - 物语系列响 - 舰队collection赫斯提亚 - 地下城邂逅夜夜 - 机巧少女不会受伤栗山未来 - 境界线的彼方小豆梓 - 小豆梓川内 - 舰队collection忍野 忍 - 物语系列小埋 - 干物妹小埋不明真相的吃瓜⑨ - 东方Project雪风 - 舰队collection碧翠丝 - Re:从零开始的异世界生活
发表于 2015-3-5 10:14:02
神奇
这里有个正在跳天使体操的绘麻小天使
什么你没有看到?
我的小天使怎么能随便让你们看
回复

使用道具 举报

金刚 - 舰队collection百鬼夜行 - Ssuika1周年纪念勋章 - 论坛1岁纪念勋章时崎狂三 - 约会大作战香草 - Sayori博丽 灵梦 - Reimu丝芭露 - 放学后的昴星团
发表于 2015-3-5 11:34:11
@kami1217 谢谢你,刚好可以补全Drawpile那边WIN需要FFmpeg的问题。看来我以后要写短一些,如果我写FFmpeg的教程,肯定又会写成说明书那种形式,不过那玩意的参数多到吓人,FFmpeg的GUI有不少,但是会做成小丸工具箱之类的东西。也会被各种软件当后端用。

我以后还是写Getting Start那种文本来水技术宅好了。
不要再问我要ID,我都已经多次告诉过你们怎么找图了,去画师自己的页面去看才叫原汁原味,才叫最大的尊重。
回复

使用道具 举报

金刚 - 舰队collection
发表于 2015-3-5 11:50:04 自豪地使用爪机中
对大家有帮助就好。
回复

使用道具 举报

发表于 2015-3-5 18:22:11
好神奇,但是光看就眼瞎啊
回复

使用道具 举报

发表于 2015-3-18 23:44:47
一般嘛,我是真用不上得啦
回复

使用道具 举报

发表于 2015-4-24 21:47:47
一般都是直接在电脑看的,不然就是用格式工厂,也没想到再找简便的。。

恶海弥砂幸运的捡到了 10 枚 星币

回复

使用道具 举报

发表于 2015-6-9 17:55:43
新手问下,GUI是已经弄好界面的?
回复

使用道具 举报

发表于 2015-6-9 18:55:07
刚刚试了~~有个问题,为何一个多小时的视频转了就只有30分钟左右了。。
回复

使用道具 举报

发表于 2015-7-2 19:29:53
看的我眼花缭乱,但是我要顶
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则