播放器 pysrt 和 vlc 的 Python 字幕内部
Posted
技术标签:
【中文标题】播放器 pysrt 和 vlc 的 Python 字幕内部【英文标题】:Inside Python subtitles to player pysrt and vlc 【发布时间】:2017-10-21 15:48:38 【问题描述】:我正在尝试制作一个 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】: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
这样的伪文件。
【讨论】:
以上是关于播放器 pysrt 和 vlc 的 Python 字幕内部的主要内容,如果未能解决你的问题,请参考以下文章
播放、打开和暂停从 Python 脚本执行的 VLC 命令行
python+vlc 实现视频播放 ,需要安装这个vlc这个模块,使用pip install vlc安装,出现无法找到模块错误解决方法