【问题标题】:vlc mac python bindings video output and location of vlc.pyvlc mac python绑定视频输出和vlc.py的位置
【发布时间】:2015-03-10 22:04:02
【问题描述】:

我希望有人可以帮助解决 Python 绑定输出问题(使用 vlc.py)

我有一个使用 vlc.py 的基本测试脚本,它运行但不播放视频。

import vlc

def setup_player(filename):
    vlc_instance = vlc.Instance('--no-audio', '--fullscreen')
    player = vlc_instance.media_player_new()
    media = vlc_instance.media_new(filename)
    player.set_media(media)
    print media.get_mrl() # File location to get title 
    print player.get_length() #Time duration of file -1 means there is no   media
    print player.get_state() #Player's state
    player.play()

setup_player('foo.mp4')

这个输出

file:///Users/admin/Sites/pythontest/foo.mp4
-1
State.NothingSpecial

我不确定在哪里安装 vlc.py 模块,希望有人能提供帮助。我在 MacOs、VLC 2.0.9、Python 2.7.3 上。通过终端运行 python。

目前,我的 vlc.py 模块与我的测试脚本位于同一目录中 - 并且在 VLC.app 目录之外,尽管脚本执行没有错误,但它没有播放视频或返回任何关于指定的 mp4 文件。

为一个平庸的问题道歉!非常感激地收到任何帮助。

【问题讨论】:

    标签: python macos python-2.7 vlc


    【解决方案1】:

    看来player.play()函数并没有阻塞,而是立即返回。

    如果 Python 脚本随后终止,则播放器在创建后立即被销毁。

    如果您查看example player in vlc.py,它的最后有一个while True 循环,基本上一遍又一遍地读取按键以实现简单的用户界面。

    所以如果你只是添加

    while True:
        pass
    

    在你的函数结束时,它应该继续播放(用 CTRL+C 终止,直到你实现某种用户输入处理)。

    至于“安装”脚本:不幸的是,他们提供的 vlc.py 模块只是一个简单的独立 Python 模块。它没有打包为 setuptools 发行版,您可以像大多数其他 Python 模块一样使用 pipeasy_install 进行安装。这意味着您可以(或者说必须)将其放到您自己位于sys.path 的位置。

    您从中启动脚本的当前工作目录适用于此,但如果您想要一个更永久的位置,您可以将其放入 Python 的site-packages(例如,如果您使用的是标准 OS X,则为/Users/<your-username>/Library/Python/2.7/lib/python/site-packages框架 Python)。

    【讨论】:

    • 感谢有关安装 vlc.py 的建议。使用 while True: 循环强制视频文件尝试播放,但它输出了 corrupt module: .. VLC.app/Contents/MacOS/lib/../plugins/libmacosx_plugin.dylib ,所以我正在重新安装 vlc。
    • 看来,为了简单地测试 vlc.py 模块,您可以使用它的内置播放器和 $ python vlc.py /path/to/file.mp4 有用地记录在 here
    • @rod 完全是 - 我假设你的脚本实际上是基于 :)
    • @rod 我在这里得到了同样的结果——损坏的库,即使 VLC 本身工作正常(VLC 2.1.4,OS X 10.9.5)。使用 Python 绑定的视频播放目前对我不起作用,但音频工作正常。
    • 重新安装 vlc 无效,而且根据this 帖子,似乎 vlc.py 还没有为 64 位架构构建。
    【解决方案2】:

    由于 API 调用成功,这意味着绑定工作正常。这里的问题是 macos x 视频输出模块无法实例化自己的窗口。它必须嵌入到原生 Cocoa 小部件中。 您可以使用 vlc 存储库中的qt example 或使用 x11 视频输出模块,结合 MacOS X X11 服务器(必须为最新版本的 MacOS X 安装)。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-30
      • 1970-01-01
      • 2013-04-26
      • 2016-11-02
      • 1970-01-01
      • 2011-06-27
      • 2023-01-02
      • 1970-01-01
      相关资源
      最近更新 更多