V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tuoxie007
V2EX  ›  FFmpeg

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

  •  1
     
  •   tuoxie007 · 2013-12-16 20:03:20 +08:00 · 5614 次点击
    这是一个创建于 3775 天前的主题,其中的信息可能已经有所发展或是发生改变。
    ➢ 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


    就说这些,希望电影带给你的愉快,可以弥补学习这些枯燥的命令行吧~
    如果你有其他场景和需求的,我们再一起探讨之。
    第 1 条附言  ·  2013-12-16 21:03:05 +08:00
    想补充两点

    如果原文件的流都需要的话,可以不用写-map n:m

    如果想指定音频和字幕语言的话,可以加上
    -metadata:s:a:0 language=eng #s就是stream,a就是音频,0就是第0个音轨
    -metadata:s:s:0 language=eng #第二个s是subtitle
    11 条回复    2016-12-21 02:02:15 +08:00
    allenforrest
        1
    allenforrest  
       2013-12-16 20:38:48 +08:00 via iPhone
    学习了,话说N多linux下视频软件都在用ffmpeg的库
    loading
        2
    loading  
       2013-12-16 20:45:20 +08:00 via iPhone
    这点电费够买个好播放器了
    tuoxie007
        3
    tuoxie007  
    OP
       2013-12-16 20:58:26 +08:00
    @loading 多数情况是不需要转编码的,就是硬盘拷贝了,何况这为的是方便,电费,不值一提吧。。。当然各算各的,都有道理
    mahone3297
        4
    mahone3297  
       2013-12-16 21:09:51 +08:00
    学习了,好帖!
    tititake
        5
    tititake  
       2013-12-17 19:58:50 +08:00
    装个mplayer/mpv随便放啊,一般用不着直接调用ffmpeg啊?
    kosenpai
        6
    kosenpai  
       2013-12-18 00:02:28 +08:00
    其实主要是转换一下封装格式?这样用h264和acc编码的mkv就可以在很短的时间内转成itunes支持的mp4格式了。是这样用的吗?
    tuoxie007
        7
    tuoxie007  
    OP
       2013-12-18 11:09:29 +08:00
    @kosenpai 是的!
    @tititake 问题很多,比如你想用家庭共享,或者Airplay等等
    tititake
        8
    tititake  
       2013-12-18 17:01:32 +08:00
    @tuoxie007 问题是ffmpeg也不是解决家庭共享的工具。没理解错的话,ffmpeg其实是解决的你共享视频文件的时候,播放器无法播放字幕的问题,或者是无法播放AC3/DTS音频的问题。我还没看明白你是具体拿什么设备看得,但是我觉得你更应该换掉你的播放器软件。要是每个视频都这么弄,要活活累死了。
    tuoxie007
        9
    tuoxie007  
    OP
       2013-12-18 18:34:25 +08:00   ❤️ 1
    @tititake 哦,你理解错了,我说的家庭共享是特质iTunes的家庭共享,不是微软的那种
    tititake
        10
    tititake  
       2013-12-18 20:23:55 +08:00
    @tuoxie007 我的意思就是你应该丢掉itunes。。。
    glogo
        11
    glogo  
       2016-12-21 02:02:14 +08:00
    哈哈,最近也在折腾 ffmpeg , LZ 还用过它做了什么好玩儿的事情吗?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   5321 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 08:49 · PVG 16:49 · LAX 01:49 · JFK 04:49
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.