播放器 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 不会播放音频?

python+vlc 实现视频播放 ,需要安装这个vlc这个模块,使用pip install vlc安装,出现无法找到模块错误解决方法

python-vlc 在启动之间切换播放媒体

使用 python-vlc 和 pafy 的 python 脚本出错

如何使用Python创建一个自定义视频播放器