想提取嵌入视频文件的字幕流么?一条命令帮你解决|脚本工具系列

快捷工具脚本系列

提示:Linux系统中,最大的灵活度就是你可以自己开发你需要的工具来解决你的问题,你的事情你做主,还能学到新鲜的东西。


文章目录

  • 快捷工具脚本系列
  • 说明
  • 一、安装ffmpeg
  • 二、编写脚本工具
    • 1. ffmpeg提取字幕流命令
    • 2.脚本内容
    • 3.执行方法
    • 示例效果
  • 总结


说明

当我们下载了一部带有内嵌字幕流的电影文件后,想要提取出字幕流中字幕并生成文件,怎么办?

似乎 VLC播放器只提供了导入字幕功能,并没有提供导出字幕流功能,还是自己动手来解决这个问题吧。


一、安装ffmpeg

我们需要用到的工具是 ffmpeg命令,怎么安装应该不成问题吧?
例如 Ubuntu 直接使用 apt-get install ffmpeg即可安装了。

二、编写脚本工具

1. ffmpeg提取字幕流命令

手工使用ffmpeg命令提取字幕流的方法如下:

$ ffmpeg -i 电影.mp4 -map "0:2" subtitle.chi.srt -map "0:3" subtitle.eng.srt

执行成功后,我们会提取输出了两个srt字幕文件。

2.脚本内容

脚本文件split_srt代码如下:

#!/bin/bash

eval `ffmpeg -i $1 2>&1| awk -v fn=$1 'BEGIN{printf("ffmpeg -i %s ",fn);}/Subtitle: subrip/{ split(substr($2,2),arr,/\(|\)/); printf(" -map \"%s\" subtitle.%s.%s.srt", arr[1], substr(arr[1],3),arr[2]); }'`

这里简单的讲解下, ffmpeg -i默认输出字幕流信息到标准错误中,使用2>&1将标准错误重定向输出到了标准输出,然后通过管道将输出内容丢给 awk命令处理,最后输出了 ffmpeg提取字幕流的命令行,通过eval执行这个命令。

3.执行方法

代码如下:

$ chmod +x ./split_srt
$ ./split_srt  电影.mp4

脚本会自动将视频文件中的字幕流根据语言导出到不同的srt文件中。

示例效果

执行命令:

$ split_srt  the.year.earth.changed.2021.hdr.2160p.web.h265-naisu.mkv

想提取嵌入视频文件的字幕流么?一条命令帮你解决|脚本工具系列_第1张图片

成功导出了所有字幕轨中的字幕文件。


总结

本文利用了一条awk命令搞定了ffmpeg字幕流信息的处理,提取了嵌入到视频文件中的所有字幕流

你可能感兴趣的:(Linux,linux,bash,ubuntu)