0%

软硬字幕的提取方法

软字幕

mkvtoolnix 好多人推荐这个,试了一下感觉没有什么过人之处
1
2
3
choco install gmkvextractgui

choco install mkvtoolnix
ffmpeg
1
2
3
4
5
6
ffmpeg -i input.mkv -map 0:s:0 out.ass

使用0:s:1导出第二轨道,0:s:2导出第三轨道,依次

字幕格式可以自定义srt或者ass

测试输出

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
PS D:\> ffmpeg -i .\[喜剧之王].King.of.Comedy.1999.WEB-DL.1080P.H264.AAC.国粤双语.内封简繁-OPS.mkv -map 0:s:0 out.ass
ffmpeg version 4.3.2-2021-02-20-essentials_build-www.gyan.dev Copyright (c) 2000-2021 the FFmpeg developers
built with gcc 10.2.0 (Rev6, Built by MSYS2 project)
configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads --disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 --enable-gmp --enable-lzma --enable-zlib --enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-sdl2 --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-libaom --enable-libopenjpeg --enable-libvpx --enable-libass --enable-libfreetype --enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf --enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va --enable-dxva2 --enable-libmfx --enable-libgme --enable-libopenmpt --enable-libopencore-amrwb --enable-libmp3lame --enable-libtheora --enable-libvo-amrwbenc --enable-libgsm --enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-librubberband
libavutil 56. 51.100 / 56. 51.100
libavcodec 58. 91.100 / 58. 91.100
libavformat 58. 45.100 / 58. 45.100
libavdevice 58. 10.100 / 58. 10.100
libavfilter 7. 85.100 / 7. 85.100
libswscale 5. 7.100 / 5. 7.100
libswresample 3. 7.100 / 3. 7.100
libpostproc 55. 7.100 / 55. 7.100
Input #0, matroska,webm, from '.\[喜剧之王].King.of.Comedy.1999.WEB-DL.1080P.H264.AAC.国粤双语.内封简繁-OPS.mkv':
Metadata:
title : 电影烧包
encoder : libebml v1.3.4 + libmatroska v1.4.5
creation_time : 2019-01-30T18:31:54.000000Z
Duration: 01:28:28.01, start: 0.000000, bitrate: 8696 kb/s
Stream #0:0(chi): Video: h264 (Constrained Baseline), yuv420p(progressive), 1920x1080, SAR 1:1 DAR 16:9, 24 fps, 24 tbr, 1k tbn, 48 tbc (default) (forced)
Metadata:
title : 喜剧之王.电影烧包@老幺
BPS : 8234109
BPS-eng : 8234109
DURATION : 01:28:28.008000000
DURATION-eng : 01:28:28.008000000
NUMBER_OF_FRAMES: 106166
NUMBER_OF_FRAMES-eng: 106166
NUMBER_OF_BYTES : 5463340171
NUMBER_OF_BYTES-eng: 5463340171
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:1(chi): Audio: aac (LC), 44100 Hz, stereo, fltp (default) (forced)
Metadata:
title : Mandarin
BPS : 228924
BPS-eng : 228924
DURATION : 01:28:27.942000000
DURATION-eng : 01:28:27.942000000
NUMBER_OF_FRAMES: 228594
NUMBER_OF_FRAMES-eng: 228594
NUMBER_OF_BYTES : 151889909
NUMBER_OF_BYTES-eng: 151889909
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:2(chi): Audio: aac (LC), 44100 Hz, stereo, fltp
Metadata:
title : Cantonese
BPS : 229270
BPS-eng : 229270
DURATION : 01:28:27.872000000
DURATION-eng : 01:28:27.872000000
NUMBER_OF_FRAMES: 228591
NUMBER_OF_FRAMES-eng: 228591
NUMBER_OF_BYTES : 152117547
NUMBER_OF_BYTES-eng: 152117547
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:3(chi): Subtitle: ass (default) (forced)
Metadata:
title : ASS中简
BPS : 101
BPS-eng : 101
DURATION : 01:26:18.360000000
DURATION-eng : 01:26:18.360000000
NUMBER_OF_FRAMES: 1386
NUMBER_OF_FRAMES-eng: 1386
NUMBER_OF_BYTES : 65992
NUMBER_OF_BYTES-eng: 65992
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:4(chi): Subtitle: ass
Metadata:
title : ASS中繁
BPS : 101
BPS-eng : 101
DURATION : 01:26:18.360000000
DURATION-eng : 01:26:18.360000000
NUMBER_OF_FRAMES: 1386
NUMBER_OF_FRAMES-eng: 1386
NUMBER_OF_BYTES : 65992
NUMBER_OF_BYTES-eng: 65992
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
Stream #0:5: Video: mjpeg (Baseline), yuvj444p(pc, bt470bg/unknown/unknown), 728x1080 [SAR 1:1 DAR 91:135], 90k tbr, 90k tbn, 90k tbc (attached pic)
Metadata:
filename : cover x.jpg
mimetype : image/jpeg
Output #0, ass, to 'out.ass':
Metadata:
title : 电影烧包
encoder : Lavf58.45.100
Stream #0:0(chi): Subtitle: ass (ssa) (default) (forced)
Metadata:
title : ASS中简
BPS : 101
BPS-eng : 101
DURATION : 01:26:18.360000000
DURATION-eng : 01:26:18.360000000
NUMBER_OF_FRAMES: 1386
NUMBER_OF_FRAMES-eng: 1386
NUMBER_OF_BYTES : 65992
NUMBER_OF_BYTES-eng: 65992
_STATISTICS_WRITING_APP: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_APP-eng: mkvmerge v9.4.0 ('Knurl') 64bit
_STATISTICS_WRITING_DATE_UTC: 2019-01-30 18:31:54
_STATISTICS_WRITING_DATE_UTC-eng: 2019-01-30 18:31:54
_STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
_STATISTICS_TAGS-eng: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
encoder : Lavc58.91.100 ssa
Stream mapping:
Stream #0:3 -> #0:0 (ass (ssa) -> ass (ssa))
Press [q] to stop, [?] for help
size= 106kB time=01:26:18.09 bitrate= 0.2kbits/s speed=5.17e+03x
video:0kB audio:0kB subtitle:64kB other streams:0kB global headers:1kB muxing overhead: 64.182022%

potplayer也可以, 不过试了一下,是边播放边导出~~~

硬字幕

videocor
1
2
3
4
5
6
7
8
9
10
11
12
13
14
# 先安装ocr识别引擎
https://github.com/UB-Mannheim/tesseract/wiki

# 再安装
pip install videocr

# 安装python-Levenshtein 会报错 error: Microsoft Visual C++ 14.0 is required. Get it with "Build Tools for Visual Studio": https://visualstudio.microsoft.com/downloads/

手动安装库(推荐) https://www.lfd.uci.edu/~gohlke/pythonlibs/
自动安装库
https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/
http://go.microsoft.com/fwlink/?LinkId=691126

# 只提供了命令行运行,基本指定好视频文件位置,就能用了,过程中消耗大量的cpu,并且需要在线识别,所以有流量走动
subtitle edit

不具体写了, 如下图

需要注意的是,videocor 这个软件会被自带杀毒软件扫描,杀毒软件会占用大量cpu,所以建议关闭windows defender 自动扫描

至于效果嘛, 如果是sub图像字幕, 识别率还可以, 后面手动调整一下, 不是的话, 就很感人, 建议还是能找字幕, 就找字幕吧.