设为首页 收藏本站
查看: 960|回复: 0

[经验分享] 使用ffmpeg将ASS字幕打进视频流中

[复制链接]
累计签到:77 天
连续签到:1 天
发表于 2014-8-14 09:45:45 | 显示全部楼层 |阅读模式


在某些视频格式标准中(也就是容器中)是不支持字幕的,例如将mkv文件转码成为ts文件或者mp4文件后,有时候会发现字幕不翼而飞了,这对有些英语不是很好,需要看到字幕的人就不那么顺利了。不过没关系,在转码的时候,可以将字幕打入视频流中,这样就可以在播视频时,将字幕输出出来了,具体方法如下:


首先要了解字幕又很多种,例如srt,例如txt,还有其他的格式,不过这里主要分享的时ASS的

    首先要使用已经支持ass的ffmpeg,怎么才能确定ffmpeg是否已经支持ass了呢:

可以通过ffmpeg -codecs参数来查看




    [StevenLiu@localhost ffmpeg]$ ffmpeg -codecs|grep ass
    ffmpeg version N-65018-gad91bf8 Copyright (c) 2000-2014 the FFmpeg developers
      built on Jul 27 2014 20:36:24 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
      configuration: --enable-opengl --enable-libx265 --enable-libx264 --enable-libmp3lame --enable-gpl --enable-libfaac --enable-nonfree --prefix=/usr/ --enable-libfreetype --enable-libass
      libavutil 52. 92.101 / 52. 92.101
      libavcodec 55. 69.100 / 55. 69.100
      libavformat 55. 49.100 / 55. 49.100
      libavdevice 55. 13.102 / 55. 13.102
      libavfilter 4. 11.102 / 4. 11.102
      libswscale 2. 6.100 / 2. 6.100
      libswresample 0. 19.100 / 0. 19.100
      libpostproc 52. 3.100 / 52. 3.100
     DES... ass ASS (Advanced SSA) subtitle
    [StevenLiu@localhost ffmpeg]$


从上面的倒数第二行中可以看到,已经支持了ASS的解码,编码;

可以找到ass的字幕文件,文件内容大致如下:




    [StevenLiu@localhost ffmpeg]$ head -n 30 ~/Downloads/a.ass
    [Script Info]
    Title: AMV For Dreamers Subtitle
    ScriptType: v4.00+
    WrapStyle: 0
    ScaledBorderAndShadow: yes
    Collisions: Normal
    Scroll Position: 37
    Active Line: 38
    Video Zoom Percent: 0.5
    PlayResX: 720
    PlayResY: 480
    Last Style Storage: Default
    Video Aspect Ratio: c1.5
    Video Position: 5818
    YCbCr Matrix: TV.601

    [V4+ Styles]
    Format: Name, Fontname, Fontsize, PrimaryColour, SecondaryColour, OutlineColour, BackColour, Bold, Italic, Underline, StrikeOut, ScaleX, ScaleY, Spacing, Angle, BorderStyle, Outline, Shadow, Alignment, MarginL, MarginR, MarginV, Encoding
    Style: Default,Arial,20,&H00FFFFFF,&H000000FF,&H00000000,&H00000000,0,0,0,0,100,100,0,0,1,2,2,2,10,10,10,1
    Style: Lyric,Adobe 黑体 Std R,24,&H14FFFFFF,&H000000FF,&H326A31DE,&H32272732,-1,0,0,0,100,100,0,0,1,1.5,1,1,20,20,16,1

    [Events]
    Format: Layer, Start, End, Style, Name, MarginL, MarginR, MarginV, Effect, Text
    Dialogue: 0,0:00:01.36,0:00:23.21,Lyric,,0,0,0,,敬启 读着这封信的你
    Dialogue: 0,0:00:23.21,0:00:29.22,Lyric,,0,0,0,,你在哪里 做些什么呢?
    Dialogue: 0,0:00:30.69,0:00:34.63,Lyric,,0,0,0,,十五岁的我
    Dialogue: 0,0:00:34.63,0:00:44.49,Lyric,,0,0,0,,有着无法向任何人诉说的烦恼
    Dialogue: 0,0:00:46.05,0:00:53.69,Lyric,,0,0,0,,如果是写给未来的自己的信的话
    Dialogue: 0,0:00:53.69,0:00:59.95,Lyric,,0,0,0,,想必一定能坦率地说出口吧
    Dialogue: 0,0:01:00.65,0:01:04.62,Lyric,,0,0,0,,此刻 快要认输 快要落泪
    [StevenLiu@localhost ffmpeg]$


找到了对应的文件以后,可以考虑将该文件的字幕打入到对应的视频文件中,下面聚一个例子:




    [StevenLiu@localhost ffmpeg]$ ffmpeg -i ~/Movies/objectC/facebook.mp4 -i ~/Downloads/a.ass -vf ass=~/Downloads/a.ass a.ts
    ffmpeg version N-65018-gad91bf8 Copyright (c) 2000-2014 the FFmpeg developers
      built on Jul 27 2014 20:36:24 with Apple LLVM version 5.1 (clang-503.0.40) (based on LLVM 3.4svn)
      configuration: --enable-opengl --enable-libx265 --enable-libx264 --enable-libmp3lame --enable-gpl --enable-libfaac --enable-nonfree --prefix=/usr/ --enable-libfreetype --enable-libass
      libavutil 52. 92.101 / 52. 92.101
      libavcodec 55. 69.100 / 55. 69.100
      libavformat 55. 49.100 / 55. 49.100
      libavdevice 55. 13.102 / 55. 13.102
      libavfilter 4. 11.102 / 4. 11.102
      libswscale 2. 6.100 / 2. 6.100
      libswresample 0. 19.100 / 0. 19.100
      libpostproc 52. 3.100 / 52. 3.100
    Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/Users/StevenLiu/Movies/objectC/facebook.mp4':
      Metadata:
        major_brand : isom
        minor_version : 512
        compatible_brands: isomiso2avc1mp41
        encoder : bbs.chinaffmpeg.com 孙悟空
        description : This File is Created by Easy RealMedia Tools@!
      Duration: 02:00:27.85, start: 0.000000, bitrate: 893 kb/s
        Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 640x480, 797 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
        Metadata:
          handler_name : VideoHandler
        Stream #0:1(und): Audio: aac (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 87 kb/s (default)
        Metadata:
          handler_name : SoundHandler
    Input #1, ass, from '/Users/StevenLiu/Downloads/a.ass':
      Duration: N/A, bitrate: N/A
        Stream #1:0: Subtitle: ssa
    [Parsed_ass_0 @ 0x7fad1b40c5e0] Added subtitle file: '/Users/StevenLiu/Downloads/a.ass' (3 styles, 51 events)
    Output #0, mpegts, to 'a.ts':
      Metadata:
        major_brand : isom
        minor_version : 512
        compatible_brands: isomiso2avc1mp41
        description : This File is Created by Easy RealMedia Tools@!
        encoder : bbs.chinaffmpeg.com 孙悟空
        Stream #0:0(und): Video: mpeg2video, yuv420p, 640x480, q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc (default)
        Metadata:
          handler_name : VideoHandler
          encoder : Lavc55.69.100 mpeg2video
        Stream #0:1(und): Audio: mp2, 44100 Hz, stereo, s16, 384 kb/s (default)
        Metadata:
          handler_name : SoundHandler
          encoder : Lavc55.69.100 mp2
    Stream mapping:
      Stream #0:0 -> #0:0 (h264 (native) -> mpeg2video (native))
      Stream #0:1 -> #0:1 (aac (native) -> mp2 (native))
    Press [q] to stop, [?] for help
    Fontconfig warning: ignoring UTF-8: not a valid region tag
    [Parsed_ass_0 @ 0x7fad1b40c5e0] fontconfig: cannot find font 'Adobe 黑体 Std R', falling back to 'Verdana106 Negreta'
    [Parsed_ass_0 @ 0x7fad1b40c5e0] Glyph 0x656C not found, selecting one more font for (Adobe 黑体 Std R, 200, 0)
    [Parsed_ass_0 @ 0x7fad1b40c5e0] fontconfig: cannot find glyph U+656C in font 'Adobe 黑体 Std R', falling back to 'MS Gothic'
    [Parsed_ass_0 @ 0x7fad1b40c5e0] Glyph 0x8BFB not found, selecting one more font for (Adobe 黑体 Std R, 200, 0)
    [Parsed_ass_0 @ 0x7fad1b40c5e0] fontconfig: cannot find glyph U+8BFB in font 'Adobe 黑体 Std R', falling back to 'SimSun'
    frame= 3163 fps=461 q=31.0 Lsize= 11136kB time=00:02:06.64 bitrate= 720.3kbits/s
    video:3877kB audio:5935kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 13.490704%



根据上面的内容可以看到,在输入的内容中,有音频流,视频流,还有字幕流,但是输出的内容中,只有视频流,音频流,并且输出的文件为ts,接下来看一下效果:
11344913_1406476288pzYJ.jpg


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-23755-1-1.html 上篇帖子: linux操作系统下RAR的安装和使用 下篇帖子: 命令行创建硬Raid
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表