2017-10-21 20 views
0

映画を見るたびにランダムな字幕を作成するPythonプログラムを作ろうとしています.vlc.py 2.2とpysrtを使用します。私はファイルを作成し、それをロードする必要なしに作成された字幕を渡したい。Pythonの中で、プレーヤーのpysrtとvlcへの字幕

pysrt.SubRipItemsはinspect.getargspec()関数は、私を与えると、クラスのようなリストです:

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

とタイプ():

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

プリントは()私与えます:

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の派手なオブジェクトを渡すことはできません。

はここで、今までに私のコードです。

字幕は、ファイルパスでのみ追加できます。このためにはvideo_set_subtitle_fileではなくadd_optionsメディアを使用する必要があります。 vlcコマンドが受け入れるオプションのいくつか(vlc --help --longhelp --full-helpで利用可能)を設定できますが、オプション名とその値の間に二重ダッシュと等号記号はありません。

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

あなたが最初にディスクにあなたの字幕ファイルを保存する必要がありますので、あなたはそれが後に削除されますことを確認するために、コンテキストマネージャとしてtempfile.NamedTemporaryFile使用することができます。もちろん、io.FileIOのような疑似ファイルを使用することはできません。

関連する問題