我正在尝试创建一个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)
答案 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
这样的伪文件。