2017-10-21 175 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這樣的僞文件。