This is what I get if I run your code:
07-Boabdil, Bulerías.ogg
07-Boabdil, Bulerías.ogg
Traceback (most recent call last):
File "C:\Users\Bo\Projekt\eclipse workspace\Bo\nametest.py", line 16,
in <module>
pygame.mixer.music.load(open(file_path))
pygame.error: Not an Ogg Vorbis audio stream
and if I remove open() I get this
07-Boabdil, Bulerías.ogg
07-Boabdil, Bulerías.ogg
Traceback (most recent call last):
File "C:\Users\Bo\Projekt\eclipse workspace\Bo\nametest.py", line 16,
in <module>
pygame.mixer.music.load(file_path)
pygame.error: Couldn't open '07-Boabdil, Buler�as.ogg'
I will use ordinary python os calls to copy the file and renaming the copy
as a workaround, as I don't see another way around this problem.
Thanks for trying to help.
Bo)
Gino Ingras skrev den 2015-02-14 11:57:
see also https://www.python.org/dev/peps/pep-0263/
i'd got a similar problem between windows, dos, and linux filesnames,
ascii files.
i'd try your exacte copy "07-Boabdil, Bulerías.ogg".
exact code is:
#!/usr/bin/env python
# -*- coding: utf8 -*-
import os
import pygame
from pygame.locals import *
pygame.init()
pygame.mixer.set_num_channels(3)
pygame.mixer.init()
file_path = "07-Boabdil, Bulerías.ogg"
print file_path
file_path = file_path.decode('utf8')
print file_path
pygame.mixer.music.load(open(file_path))
pygame.mixer.music.play(1)
pygame.mixer.music.set_volume(0.5)
2015-02-14 11:46 GMT+01:00 Gino Ingras <ginoing...@gmail.com
<mailto:ginoing...@gmail.com>>:
you should learn about codecs strings inputs/output.
ensure you always work with the same, utf8.
most of python modules are based on, and python3 assume by default
as in python2 you got
from __future__ import unicode_literals
see (in french, sorry) a good link:
http://sametmax.com/lencoding-en-python-une-bonne-fois-pour-toute/
2015-02-14 11:21 GMT+01:00 Bo Jangeborg <b...@softwave.se
<mailto:b...@softwave.se>>:
Greg Ewing skrev den 2015-02-14 02:00:
Bo Jangeborg wrote:
file_path = "07-Boabdil, Bulerías.ogg"
fi = open(file_path, 'rb').read()
pygame.mixer.music.load(fi)
But that gets me the Error:
"File path 'OggS' contains null characters"
music.load() expects to be passed the name of a file,
not the contents of the file. Just do this:
file_path = "07-Boabdil, Bulerías.ogg"
pygame.mixer.music.load(file_path)
The reason I tried the object passing was because just
passing the name didn't work. So I am looking for
a workaround. According to the documentation
one should be able to pass an object as a parameter
but I am not sure if I am doing it the right way.
pygame.mixer.music.load()
Load a music file for playback
load(filename) -> None
load(object) -> None
This will load a music filename/file object and prepare it for
playback.