想提取嵌入视频文件的字幕流么?一条命令帮你解决|脚本工具系列
linux-dash
A beautiful web dashboard for Linux
项目地址:https://gitcode.com/gh_mirrors/li/linux-dash
免费下载资源
·
快捷工具脚本系列
提示:Linux系统中,最大的灵活度就是你可以自己开发你需要的工具来解决你的问题,你的事情你做主,还能学到新鲜的东西。
说明
当我们下载了一部带有内嵌字幕流的电影文件后,想要提取出字幕流中字幕并生成文件,怎么办?
似乎 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
成功导出了所有字幕轨中的字幕文件。
总结
本文利用了一条awk
命令搞定了ffmpeg
字幕流信息的处理,提取了嵌入到视频文件中的所有字幕流
。
GitHub 加速计划 / li / linux-dash
10.39 K
1.2 K
下载
A beautiful web dashboard for Linux
最近提交(Master分支:2 个月前 )
186a802e
added ecosystem file for PM2 4 年前
5def40a3
Add host customization support for the NodeJS version 4 年前
更多推荐
已为社区贡献1条内容
所有评论(0)