【问题标题】:How to solve connection error when trying to stream a video from YouTube?尝试从 YouTube 流式传输视频时如何解决连接错误?
【发布时间】:2019-06-12 11:08:40
【问题描述】:

我正在尝试使用 PyQt5、python-vlc 和 pafy 模块在 GUI 应用程序中从 YouTube 流式传输视频,但 vlc 给了我一些连接错误:

[0000025466dc7340] main tls client error: connection error: Interrupted function call
[0000025466df9f00] access stream error: HTTP connection failure
[0000025466dc7430] gnutls tls client error: TLS handshake error: Error in the push function.
[0000025466dc7430] main tls client error: TLS session handshake error
[0000025466dc7430] main tls client error: connection error: Interrupted function call
[0000025466dfa080] access stream error: HTTP connection failure

当我用 tkinter 模块做同样的事情时,它可以正常工作。我该如何解决这些错误?

def OnYT(self):
    text = self.textbox.text()
    url = self.Search(text) #this function returns the first result url from a search on YouTube 
    self.textbox.setText("")
    video = pafy.new(url)
    best = video.getbest()
    self.mediaplayer.set_mrl(best.url)

    if sys.platform.startswith('linux'):
        self.mediaplayer.set_xwindow(self.videoframe.winId())
    elif sys.platform == "win32":
        self.mediaplayer.set_hwnd(self.videoframe.winId())
    elif sys.platform == "darwin":
        self.mediaplayer.set_nsobject(int(self.videoframe.winId()))

    self.mediaplayer.play()

【问题讨论】:

  • 你更新youtube-dlpafy了吗?
  • 我不认为问题出在这些模块上,因为当我获取 pafy 返回的流链接并在浏览器中键入它时,它可以工作,但 vlc 无法连接到该流。附:我也更新了这些模块

标签: python-3.x pyqt5 pafy python-vlc


【解决方案1】:

有一个解决方法,您可以使用参数vlc.Instance("prefer-insecure") 配置 VLC 以使用 http 连接到 URL

或者您可以尝试使用证书更新和提供 VLC:

 sudo update-ca-certificates --fresh --verbose
 mkdir -p ~/.local/share/vlc/certs/
 cat /usr/share/ca-certificates/mozilla/* | tee ~/.local/share/vlc/certs/ca-certifcates.crt

您可以找到更多信息here

GNUtls 选项:

 --gnutls-system-trust, --no-gnutls-system-trust 
                             Use system trust database
                             (default enabled)
      Trust the root certificates of Certificate Authorities stored in the
      operating system trust database to authenticate TLS sessions.
  --gnutls-dir-trust <string> 
                             Trust directory
      Trust directory
  --gnutls-priorities {PERFORMANCE,NORMAL,SECURE128,SECURE256,EXPORT} 
                             TLS cipher priorities
      Ciphers, key exchange methods, hash functions and compression methods
      can be selected. Refer to GNU TLS documentation for detailed syntax.

您可以使用 --gnutls-dir-trus 指向我认为的 Firefox 证书

【讨论】:

  • 我试过这个:vlc.Instance(['--prefer-insecure']) 但它给了我这个错误:vlc: unknown option or missing mandatory argument `--prefer-insecure' Try `vlc --help' for more information.
  • 非常感谢!带http的部分解决了,但是你知道怎么解决这些错误吗? :) [000001faa4616170] main tls client error: connection error: Interrupted function call [000001faa7ff4d90] mkv demux error: unable to read KaxCluster during seek, giving up [000001faa7ff4d90] mkv demux error: unable to read KaxCluster during seek, giving up [000001faa4616da0] main tls client error: connection error: Interrupted function call
  • 你能告诉我如何解决这个问题吗?我在窗口上遇到了同样的问题。
猜你喜欢
  • 2010-11-03
  • 2021-11-11
  • 2016-05-17
  • 1970-01-01
  • 2022-01-07
  • 2019-10-16
  • 1970-01-01
  • 2017-09-04
  • 1970-01-01
相关资源
最近更新 更多