说说自己平常怎样用ffmpeg方便看电影的,希望能给你的生活一点帮助 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tuoxie007
V2EX    FFmpeg

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

  •  1
     
  •   tuoxie007 2013-12-16 20:03:20 +08:00 6104 次点击
    这是一个创建于 4324 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 还用过它做了什么好玩儿的事情吗?
    关于     帮助文档     自助推广系统     博客 &nsp;   API     FAQ     Solana     2505 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 29ms UTC 05:46 PVG 13:46 LAX 22:46 JFK 01:46
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86