说说自己平常怎样用ffmpeg方便看电影的,希望能给你的生活一点帮助

2013-12-16 20:03:20 +08:00
 tuoxie007
➢ ffmpeg是什么,懂的大侠跳过。。。
一款开源的跨平台的命令行软件,同时也是一套程序库,处理视频、音频的神器。。。
命令行?听起来好像很难用,咱看电影不就娱个乐嘛,折腾啥呢?
其实按我说的来用,真心很简单,咱也不说那些高端的,就说点简单实用的。
另外,怎么说,折腾其实是生活态度的问题,娱乐也不仅仅是打发时间,也是生命的一部分,不多说了。。。

➢ 我用ffmpeg干什么?
★ 转换格式
为什么要转格式呢?因为希望用系统播放器。
这里有软解码和硬解码的问题、Airplay的问题、AC3支持的问题、iTunes家庭共享的问题、收藏的问题,等等吧,就不展开说了。


★ 嵌字幕
iTunes不支持外挂字幕,这个确实很蛋疼。

➢ 下面开始演示,重点啊!
★ 我这有部《肖生克的救赎》,视频和字幕已经通过合法途径获取:
The.Shawshank.Redemption.1994.Bluray.x264.anoXmous.mkv
The.Shawshank.Redemption.1994.Bluray.x264.anoXmous_eng.srt

★ 那我就这样
$ ffmpeg -i The.Shawshank.Redemption.1994.Bluray.x264.anoXmous.mkv \
-i The.Shawshank.Redemption.1994.Bluray.x264.anoXmous_eng.srt \
-map 0:0 -map 0:1 -map 1:0 \
-vcodec copy -acodec copy -scodec mov_text \
-y The.Shawshank.Redemption.1994.Bluray.x264.anoXmous.mp4

★ 下面解释一下参数
-i 原视频文件.mkv #这个好理解吧
-i 原字幕文件.srt #这个也好理解了吧
-map n:m #这个是说,我要其中第n个输入文件的第m个流,这里mkv就是n=0,srt就是n=1,等下再说m
-vcodec copy #这是说视频编码格式不变
-acodec copy #同上,音频
-scodec mov_text #指定字幕的编码格式
-y 目标文件.mp4 #直接覆盖,不询问

★ 没看明白的,往下读。。。
流(或者叫“轨”吧)是怎么回事?
你输入这个命令
$ ffmpeg -i 视频文件.mkv
注意找下输出里类似这样的内容:
Stream #0:0(und): Video: h264 ......
Stream #0:1(eng): Audio: aac ......
Stream #0:2: Subtitle: mov_text ......
他们分别是视频的、音频的和字幕的,三种类型的流。有的时候可能没有字幕流,有的时候可能不止一个音频流,因为有不同语言,这都很正常。
重要的是你要先通过这个命令来看看有哪些流,然后挑选你要的,所以这个m,你知道该怎么填了吧。

★ 再说codec
因为这里原始文件就是h264和aac,系统默认支持,所以就不需要转成别的编码,这样就避免了重编码(一些转码软件脑残至极啊!h264转h264啊!慢到死的节奏啊!)。
所以你直接写copy,就是直接硬盘复制的节奏啦!当然你需要的话,可以转成其他的编码,比如音频转成mp3编码,就是“-acodec mp3”,不过那样就不是复制的节奏了,会慢好些哦。。。
字幕,因为是外挂的,所以就需要指定编码格式了,我只用过mov_text,其他不了解了。

★ 既然视频和音频编码都没有改变,那转个什么劲?
其实重要的是转封装,简单说就是视频文件的格式吧,.mkv文件,iTunes就不认得,.mp4谁都认得。

➢ 最后外挂一下,ffmpeg软件如何获取,Mac下推荐用Homebrew,相当方便!
Windows好像可以直接下载编译好的.exe,Linux下用apt-get什么的更爽了。
安装Homebrew:
$ ruby -e "$(curl -fsSL https://raw.github.com/Homebrew/homebrew/go/install)"
安装ffmpeg:
$ brew install ffmpeg


就说这些,希望电影带给你的愉快,可以弥补学习这些枯燥的命令行吧~
如果你有其他场景和需求的,我们再一起探讨之。
5626 次点击
所在节点    FFmpeg
11 条回复
allenforrest
2013-12-16 20:38:48 +08:00
学习了,话说N多linux下视频软件都在用ffmpeg的库
loading
2013-12-16 20:45:20 +08:00
这点电费够买个好播放器了
tuoxie007
2013-12-16 20:58:26 +08:00
@loading 多数情况是不需要转编码的,就是硬盘拷贝了,何况这为的是方便,电费,不值一提吧。。。当然各算各的,都有道理
mahone3297
2013-12-16 21:09:51 +08:00
学习了,好帖!
tititake
2013-12-17 19:58:50 +08:00
装个mplayer/mpv随便放啊,一般用不着直接调用ffmpeg啊?
kosenpai
2013-12-18 00:02:28 +08:00
其实主要是转换一下封装格式?这样用h264和acc编码的mkv就可以在很短的时间内转成itunes支持的mp4格式了。是这样用的吗?
tuoxie007
2013-12-18 11:09:29 +08:00
@kosenpai 是的!
@tititake 问题很多,比如你想用家庭共享,或者Airplay等等
tititake
2013-12-18 17:01:32 +08:00
@tuoxie007 问题是ffmpeg也不是解决家庭共享的工具。没理解错的话,ffmpeg其实是解决的你共享视频文件的时候,播放器无法播放字幕的问题,或者是无法播放AC3/DTS音频的问题。我还没看明白你是具体拿什么设备看得,但是我觉得你更应该换掉你的播放器软件。要是每个视频都这么弄,要活活累死了。
tuoxie007
2013-12-18 18:34:25 +08:00
@tititake 哦,你理解错了,我说的家庭共享是特质iTunes的家庭共享,不是微软的那种
tititake
2013-12-18 20:23:55 +08:00
@tuoxie007 我的意思就是你应该丢掉itunes。。。
glogo
2016-12-21 02:02:14 +08:00
哈哈,最近也在折腾 ffmpeg , LZ 还用过它做了什么好玩儿的事情吗?

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/93405

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX