内部Python字幕播放器pysrt和vlc

时间:2017-10-21 15:48:38

标签: video libvlc subtitle

我正在尝试创建一个python程序,每次看到电影时都会创建随机字幕。我使用vlc.py 2.2和pysrt。我想传递创建的字幕而不需要创建文件然后加载它。

pysrt.SubRipItems是类的列表,inspect.getargspec()函数给我:

ArgSpec(args=['self', 'index', 'start', 'end', 'text', 'position'], varargs=None, keywords=None, defaults=(0, None, None, '', ''))

print()给了我:

1
00:00:00,100 --> 00:02:18,828
Hello World!

和类型():

class 'str'

但没有字幕出现,也没有错误。

以下是我的代码:

import vlc
import pysrt
import inspect


file = pysrt.SubRipFile(encoding='utf-8')
sub = pysrt.SubRipItem(1, start='00:00:0,100', end='00:02:18,828', text="Hello World!")
file.append(sub)

SubString=str(file[0])

print(SubString)
print (type(SubString))
print (inspect.getargspec(pysrt.SubRipItem))

Instance = vlc.Instance()
player = Instance.media_player_new()
Media = Instance.media_new('Test.avi')
player.set_media(Media)
player.play()
player.video_set_subtitle_file(SubString)

1 个答案:

答案 0 :(得分:0)

python-vlc包是VLC C库的包装器,因此您无法将Python花式对象传递给它。

您只能按文件路径添加字幕。为此,您应使用媒体add_options方法,而不是video_set_subtitle_file。您可以设置vlc命令接受的几个选项(vlc --help --longhelp --full-help可用),但没有双短划线和选项名称及其值之间的等号。

Media.add_options("sub-file={}".format("path/to/your/subtitle/file"))

由于您应首先将字幕文件保存到磁盘,因此可以使用tempfile.NamedTemporaryFile作为上下文管理器,以确保在之后将其删除。当然,您不能使用像io.FileIO这样的伪文件。