本文来自依云's Blog,转载请注明。
都是《冰雪奇缘》惹的祸,不仅画面美仑美奂,音乐激荡人心,而且还玩多语言版本的主题曲。
而 you-get 竟助纣为虐,把歌词给下回来了!只叹 soimort 没有好人做到底,留一个语义不详的 JSON 让我情何以堪。
好在 muzuiget 才识不凡,有码略释其义,遂如我光影、声音、文字三位一体之愿!
编成代码数十行,只为女王歌一曲:
#!/usr/bin/env python3 import json import sys def cmtjson_reader(f): data = json.load(f) for o in data: c = o['c'].split(',') m = o['m'] # see # https://github.com/muzuiget/niconvert/blob/master/niconvert/libsite/acfun.py start = float(c[0]) yield start, m def format_time(t): s, ms = divmod(t, 1) s = int(s) ms = int(ms * 1000) m, s = divmod(s, 60) h, m = divmod(m, 60) return '%d:%02d:%02d,%03d' % (h, m, s, ms) def crt_writer(f): i = 0 fmt = '%d\n%s --> %s\n%s\n\n' try: while True: t, m = yield ts = format_time(t) if i != 0: f.write(fmt % (i, format_time(old_t), ts, old_m)) i += 1 old_t = t old_m = m except GeneratorExit: f.write(fmt % ( i+1, format_time(t), format_time(t+2), m)) def main(): w = crt_writer(sys.stdout) w.send(None) old_d0 = 0 for d in cmtjson_reader(sys.stdin): if d[0] < old_d0: break w.send(d) old_d0 = d[0] if __name__ == '__main__': main()
mplayer 君虽识得 UTF-8 之码,却不通 fontconfig 之术,部分文字沦为了下划线。又及。
Mar 03, 2014 11:19:43 PM
This config works for me:
# Turn on SSA/ASS subtitle rendering.
ass=on
# Specify the subtitle codepage.
subcp=enca:zh:UTF-8
# Tells MPlayer to handle the subtitle file as unicode.
unicode=yes
# Enables the usage of fontconfig managed fonts.
fontconfig=yes
# Determines the Fontconfig font pattern.
font="Sans Serif"
Mar 04, 2014 02:39:25 AM
师长好文笔,妙!
只是行文中这 CRT 三字,看着似曾相识,却又透些许点违和之感。
在下左思右想,这三字应与黑色家电无关,那又是何物。
忽觉派绅字里码间透着股 SubRip 之味,不知其与 SRT 有无瓜葛?
Mar 04, 2014 10:15:49 AM
楼上均好文采, 让我乡野小子无地自容, 虽发粪涂墙, 仍不及楼上十之一二. 故, 不敢终日晃晃, 无所事事, 每思至此, 中华大地,人才鸡鸡, 我楚国 物华天宝,岂能无人焉, 遂 日后两耳不问墙外事, 一心只为大Python
Mar 04, 2014 02:29:33 PM
原来配置一个选项就可以了呀,回去了试试 :-)
Mar 04, 2014 10:03:14 PM
叫你不看我Danmaku2ASS程序的源代码……
为了A站的JSON格式我研究了多少文档(包括高级弹幕)……
Mar 04, 2014 10:17:28 PM
当然是因为没有 Google 到啦…………
Mar 04, 2014 10:24:10 PM
乃竟然不订阅我的blog……真让我桑心……
Mar 04, 2014 10:27:10 PM
我的Danmaku2ASS可以直接转换特效弹幕。如果歌词是用特效弹幕做的可以直接转。
Mar 04, 2014 10:48:37 PM
我有订阅的啊。可是都三个多月了,忘记啦……
Mar 05, 2014 12:06:27 AM
我用了 fontconfig 选项,为什么泰语字符还是显示不出来呀……
Mar 05, 2014 12:11:58 AM
试过 ass 了,效果不错,但不是我想要的。我只要正常的字幕,不要到处飞的那种……
另外,有些字符还是不能显示 :-(
Mar 05, 2014 12:28:58 AM
好像是要加 -ass 选项的?
Mar 05, 2014 12:38:58 AM
Acfun的UP主设置的保护区弹幕是分开在 .lock.json 文件中的。
只转换那个文件就OK啦。
Mar 05, 2014 12:41:12 AM
使用 libass 的时候,怎么指定默认样式呢?我希望让 libass 的默认样式和不使用 libass 时的一样,但是字幕文件可以覆盖掉。
Mar 05, 2014 12:50:00 PM
我那个格式意义也是抄来的哈哈。
Mar 05, 2014 12:58:39 PM
mplayer 使用 srt 格式得字幕的样式真是好难搞的,直接上 libass 吧。可以用 smplayer,用 GUI 配置样式,其实它也是自动把 srt 转换成 ass 来处理的。样式头是文件是 ~/.config/smplayer/style.ass 所以你在 smplayer 里用 libass,并调整好样式。然后再把 srt 转成 ass,接着手动修改样式头就能在 mplayer 里播放了(奇怪的用法)。不过我现在熟悉 ass 格式,所以都直接修改了。
Mar 05, 2014 03:53:00 PM
用FFmpeg转换字幕格式:ffmpeg -i input.srt output.ass
MPlayer控制ASS样式相关选项参考SMPlayer。