【问题标题】:What are valid gstreamer song names?什么是有效的 gstreamer 歌曲名称?
【发布时间】:2017-01-13 16:07:38
【问题描述】:

我正在尝试了解我可以在基于 gstreamer python 的音频播放器中使用哪些歌曲名称。找不到任何关于它的文档。例如名称为test%.mp3 的歌曲会产生错误:

Error: [<GError at 0x7f8a8c001620>, 'gstgiosrc.c(324): gst_gio_src_get_stream (): /GstPlayBin:playbin0/GstGioSrc:source:\nCould not open location file:///home/austinnikov/work/daemon_player/program_root/test%.mp3 for reading: Operation not supported'], 

播放没有% 的歌曲。当然,我在该目录的硬盘驱动器上有test%.mp3

【问题讨论】:

    标签: python gstreamer


    【解决方案1】:

    请参阅以下 SO 答案:[Solved]gstreamer uri format on windows
    特别是'file:' + urllib.pathname2url(filepath) 部分。
    虽然这不能回答您更普遍的问题,但它确实允许您播放包含某些字符的文件,例如 %

    【讨论】:

      【解决方案2】:

      Rolf 的回答很棒,但我想补充一点,如果您的 song_names 与我的一样,则 pathname2url 将失败并显示为 KeyError。所以我用另一种方式做了,还要注意Convert a filename to a file:// URL。 这个函数是Player 类的一部分。 Player 实例有player 变量self.player = gst.element_factory_make("playbin")

      def set_song(self, song_name):
          song_name = song_name.encode('utf8')
          path = urlparse.urljoin("file://", urllib.pathname2url(song_name))
          path = path.decode('utf8')
          self.player.set_property("uri", path))
      

      现在我很高兴,因为我的歌曲名称可以是 unicode 格式并包含任何奇怪的符号。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-04-29
        • 1970-01-01
        • 1970-01-01
        • 2022-11-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多