什么是有效的 gstreamer 歌曲名称?
What are valid gstreamer song names?
我想了解我可以在基于 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
。
请参阅以下 SO 答案:[Solved]gstreamer uri format on windows
特别是 'file:' + urllib.pathname2url(filepath)
部分。
虽然这不能回答您更一般的问题,但它确实允许您播放包含某些字符的文件,例如 %
Rolf 的回答很好,但我想补充一点,如果您的 songs_names 和我的一样使用 unicode,那么 pathname2url
将失败并返回 KeyError
。所以我用另一种方式做了,另请注意 Convert a filename to a file:// URL。
此函数是 Player
class 的一部分。 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 并且包含任何奇怪的符号。
我想了解我可以在基于 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
。
请参阅以下 SO 答案:[Solved]gstreamer uri format on windows
特别是 'file:' + urllib.pathname2url(filepath)
部分。
虽然这不能回答您更一般的问题,但它确实允许您播放包含某些字符的文件,例如 %
Rolf 的回答很好,但我想补充一点,如果您的 songs_names 和我的一样使用 unicode,那么 pathname2url
将失败并返回 KeyError
。所以我用另一种方式做了,另请注意 Convert a filename to a file:// URL。
此函数是 Player
class 的一部分。 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 并且包含任何奇怪的符号。