2017-10-21 105 views
0

我想制作一个python程序,每次看到movie.I使用vlc.py 2.2和pysrt创建随机字幕。我想传递创建的字幕,而不需要创建文件,然后加载它。Python内的字幕播放器pysrt和vlc

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

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

打印()给我:

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) 

回答

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这样的伪文件。