XSPF playlist & unicode paths issue

For questions and discussion that is NOT (I repeat NOT) specific to a certain Operating System.
Synac
New Cone
New Cone
Posts: 7
Joined: 02 Mar 2011 13:36
VLC version: 1.2.0
Operating System: Ubuntu 10.10
Location: Russian Federation

XSPF playlist & unicode paths issue

Postby Synac » 02 Mar 2011 14:17

The problem is VLC can't open files by XSPF playlist that contain unicode chars in path. For example I'm opening:

Code: Select all

<?xml version="1.0" encoding="UTF-8"?> <playlist version="1" xmlns="http://xspf.org/ns/0/" xmlns:vlc="http://www.videolan.org/vlc/playlist/ns/0/"> <title>Radio Record</title> <trackList> <track> <trackNum>1</trackNum> <creator>CA2K</creator> <title>Не моли небо</title> <location>file:///muz/radio_record/ar01476/не_моли_небо.mp3</location> </track><track> <trackNum>2</trackNum> <creator>CA2K</creator> <title>Nitroroller</title> <location>file:///muz/radio_record/ar01476/nitroroller.mp3</location> </track><track> <trackNum>3</trackNum> <creator>CA2K</creator> <title>Milk shake</title> <location>file:///muz/radio_record/ar01476/milk_shake.mp3</location> </track> </trackList> </playlist>
and got the error:

Code: Select all

File reading failed: VLC could not open the file "/muz/radio_record/ar01476/????_????????_????????.mp3". Your input can't be opened: VLC is unable to open the MRL 'file:///muz/radio_record/ar01476/не_моли_небо.mp3'. Check the log for details.
Full Messages window log:

Code: Select all

main debug: deleting item `milk_shake.mp3' main info: stopping playback main debug: deleting item `Nitroroller' main debug: deleting item `????_????????_????????.mp3' main debug: rebuilding array of current - root Playlist main debug: rebuild done - 0 items, index -1 main debug: adding item `radio_record.xspf' ( file:///muz/radio_record.xspf ) qt4 debug: Adding a new MRL to recent ones: /muz/radio_record.xspf main debug: rebuilding array of current - root Playlist main debug: rebuild done - 1 items, index -1 main debug: processing request item radio_record.xspf node Playlist skip 0 main debug: resyncing on radio_record.xspf main debug: radio_record.xspf is at 0 main debug: starting new item main debug: creating new input thread main debug: Creating an input for 'radio_record.xspf' main debug: thread (input) created at priority 10 (input/input.c:214) main debug: thread started main debug: TIMER input launching for 'nitroroller.mp3' : 29.676 ms - Total 29.676 ms / 1 intvls (Avg 29.676 ms) main debug: using timeshift granularity of 50 MiB main debug: using timeshift path '/tmp' main debug: `file:///muz/radio_record.xspf' gives access `file' demux `' path `/muz/radio_record.xspf' main debug: creating demux: access='file' demux='' path='/muz/radio_record.xspf' main debug: looking for access_demux module: 2 candidates main debug: no access_demux module matching "file" could be loaded main debug: TIMER module_need() : 0.318 ms - Total 0.318 ms / 1 intvls (Avg 0.318 ms) main debug: creating access 'file' path='/muz/radio_record.xspf' main debug: looking for access module: 2 candidates filesystem debug: opening file `/muz/radio_record.xspf' main debug: using access module "filesystem" main debug: TIMER module_need() : 0.185 ms - Total 0.185 ms / 1 intvls (Avg 0.185 ms) main debug: Using AStream*Stream main debug: pre buffering main debug: received first data after 0 ms main debug: pre-buffering done 759 bytes in 0s - 41178 KiB/s main debug: looking for stream_filter module: 5 candidates main debug: no stream_filter module matching "any" could be loaded main debug: TIMER module_need() : 0.146 ms - Total 0.146 ms / 1 intvls (Avg 0.146 ms) main debug: looking for stream_filter module: 1 candidate main debug: using stream_filter module "stream_filter_record" main debug: TIMER module_need() : 0.174 ms - Total 0.174 ms / 1 intvls (Avg 0.174 ms) main debug: creating demux: access='file' demux='' path='/muz/radio_record.xspf' main debug: looking for demux module: 52 candidates playlist debug: using XSPF playlist reader main debug: using demux module "playlist" main debug: TIMER module_need() : 0.288 ms - Total 0.288 ms / 1 intvls (Avg 0.288 ms) main debug: looking for a subtitle file in /muz/ main debug: looking for a subtitle file in /muz/./subtitles/ main debug: looking for meta reader module: 2 candidates lua debug: Trying Lua scripts in /home/user/.local/share/vlc/lua/meta/reader lua debug: Trying Lua scripts in /usr/lib/vlc/lua/meta/reader lua debug: Trying Lua playlist script /usr/lib/vlc/lua/meta/reader/filename.luac lua debug: Trying Lua scripts in /usr/share/vlc/lua/meta/reader main debug: no meta reader module matching "any" could be loaded main debug: TIMER module_need() : 1.280 ms - Total 1.280 ms / 1 intvls (Avg 1.280 ms) main debug: `file:///muz/radio_record.xspf' successfully opened main debug: looking for xml module: 2 candidates main debug: using xml module "xml" main debug: TIMER module_need() : 0.164 ms - Total 0.164 ms / 1 intvls (Avg 0.164 ms) playlist debug: parsed 3 tracks successfully main debug: incoming request - stopping current input main debug: removing module "xml" main debug: EOF reached main debug: dying input main debug: dying input main debug: removing module "playlist" main debug: removing module "stream_filter_record" main debug: removing module "filesystem" main debug: thread ended main debug: dead input main debug: processing request item ????_????????_????????.mp3 node Playlist skip 0 main debug: rebuilding array of current - root Playlist main debug: rebuild done - 3 items, index 0 main debug: starting new item main debug: creating new input thread main debug: Creating an input for '????_????????_????????.mp3' main debug: thread (input) created at priority 10 (input/input.c:214) main debug: TIMER input launching for 'radio_record.xspf' : 3.848 ms - Total 3.848 ms / 1 intvls (Avg 3.848 ms) main debug: thread started main debug: using timeshift granularity of 50 MiB main debug: using timeshift path '/tmp' main debug: `file:///muz/radio_record/ar01476/не_моли_небо.mp3' gives access `file' demux `' path `/muz/radio_record/ar01476/????_????????_????????.mp3' main debug: creating demux: access='file' demux='' path='/muz/radio_record/ar01476/????_????????_????????.mp3' main debug: looking for access_demux module: 2 candidates dvdnav warning: cannot open DVD (/muz/radio_record/ar01476/????_????????_????????.mp3) main debug: no access_demux module matching "file" could be loaded main debug: TIMER module_need() : 0.846 ms - Total 0.846 ms / 1 intvls (Avg 0.846 ms) main debug: creating access 'file' path='/muz/radio_record/ar01476/????_????????_????????.mp3' main debug: looking for access module: 2 candidates filesystem debug: opening file `/muz/radio_record/ar01476/????_????????_????????.mp3' filesystem error: cannot open file /muz/radio_record/ar01476/????_????????_????????.mp3 (No such file or directory) main debug: no access module matching "file" could be loaded main debug: TIMER module_need() : 0.350 ms - Total 0.350 ms / 1 intvls (Avg 0.350 ms) main error: open of `file:///muz/radio_record/ar01476/не_моли_небо.mp3' failed: (null) main debug: thread ended main debug: dead input main debug: changing item without a request (current 0/3) main debug: using item 1 main debug: starting new item main debug: creating new input thread main debug: Creating an input for 'nitroroller.mp3' main debug: thread (input) created at priority 10 (input/input.c:214) main debug: thread started main debug: TIMER input launching for '????_????????_????????.mp3' : 2.475 ms - Total 2.475 ms / 1 intvls (Avg 2.475 ms) main debug: using timeshift granularity of 50 MiB main debug: using timeshift path '/tmp' main debug: `file:///muz/radio_record/ar01476/nitroroller.mp3' gives access `file' demux `' path `/muz/radio_record/ar01476/nitroroller.mp3' main debug: creating demux: access='file' demux='' path='/muz/radio_record/ar01476/nitroroller.mp3' main debug: looking for access_demux module: 2 candidates main debug: no access_demux module matching "file" could be loaded main debug: TIMER module_need() : 0.261 ms - Total 0.261 ms / 1 intvls (Avg 0.261 ms) main debug: creating access 'file' path='/muz/radio_record/ar01476/nitroroller.mp3' main debug: looking for access module: 2 candidates filesystem debug: opening file `/muz/radio_record/ar01476/nitroroller.mp3' main debug: using access module "filesystem" main debug: TIMER module_need() : 0.192 ms - Total 0.192 ms / 1 intvls (Avg 0.192 ms) main debug: Using AStream*Stream main debug: pre buffering main debug: received first data after 0 ms main debug: pre-buffering done 1024 bytes in 0s - 55555 KiB/s main debug: looking for stream_filter module: 5 candidates main debug: no stream_filter module matching "any" could be loaded main debug: TIMER module_need() : 0.219 ms - Total 0.219 ms / 1 intvls (Avg 0.219 ms) main debug: looking for stream_filter module: 1 candidate main debug: using stream_filter module "stream_filter_record" main debug: TIMER module_need() : 0.178 ms - Total 0.178 ms / 1 intvls (Avg 0.178 ms) main debug: creating demux: access='file' demux='' path='/muz/radio_record/ar01476/nitroroller.mp3' main debug: ID3v2.3 revision 0 tag found, skipping 4096 bytes main debug: looking for demux module: 52 candidates es debug: xing vbr value present (77) es debug: xing frames&bytes value present (5788067 bytes, 9503 frames, 1152 samples/frame) es debug: detected format mpga main debug: looking for packetizer module: 21 candidates main debug: using packetizer module "mpeg_audio" main debug: TIMER module_need() : 0.160 ms - Total 0.160 ms / 1 intvls (Avg 0.160 ms) main debug: using demux module "es" main debug: TIMER module_need() : 0.455 ms - Total 0.455 ms / 1 intvls (Avg 0.455 ms) main debug: looking for a subtitle file in /muz/radio_record/ar01476/ main debug: looking for meta reader module: 2 candidates main debug: using meta reader module "taglib" main debug: TIMER module_need() : 0.814 ms - Total 0.814 ms / 1 intvls (Avg 0.814 ms) main debug: removing module "taglib" main debug: `file:///muz/radio_record/ar01476/nitroroller.mp3' successfully opened mpeg_audio debug: MPGA channels:2 samplerate:44100 bitrate:128 main debug: selecting program id=0 main debug: looking for decoder module: 30 candidates main debug: using decoder module "mpeg_audio" main debug: TIMER module_need() : 0.315 ms - Total 0.315 ms / 1 intvls (Avg 0.315 ms) main debug: thread (decoder) created at priority 5 (input/decoder.c:301) main debug: thread started main debug: Buffering 0% qt4 debug: IM: Setting an input main debug: Buffering 8% mpeg_audio debug: MPGA channels:2 samplerate:44100 bitrate:128 main debug: Buffering 17% main debug: reusing aout main debug: Buffering 26% main debug: Buffering 34% main debug: Buffering 43% main debug: Buffering 52% main debug: Buffering 60% main debug: Buffering 69% main debug: looking for audio output module: 4 candidates main debug: Buffering 78% pulse debug: 2 audio channels main debug: Buffering 87% main debug: Buffering 95% main debug: Stream buffering done (313 ms in 0 ms) pulse debug: Pulse mainloop started pulse debug: Pulse stream connected pulse debug: Pulse initialized successfully pulse debug: Buffer metrics: maxlength=141120, tlength=42336, prebuf=35280, minreq=7056 pulse debug: Using sample spec 'float32le 2ch 44100Hz', channel map 'front-left,front-right'. pulse debug: Connected to device alsa_output.pci-0000_00_14.2.analog-stereo (0, not suspended). main debug: using audio output module "pulse" main debug: TIMER module_need() : 22.424 ms - Total 22.424 ms / 1 intvls (Avg 22.424 ms) main debug: output 'f32l' 44100 Hz Stereo frame=1 samples/8 bytes main debug: mixer 'f32l' 44100 Hz Stereo frame=1 samples/8 bytes main debug: no need for any filter main debug: looking for audio mixer module: 3 candidates main debug: using audio mixer module "float32_mixer" main debug: TIMER module_need() : 0.113 ms - Total 0.113 ms / 1 intvls (Avg 0.113 ms) main debug: input 'mpga' 44100 Hz Stereo frame=1152 samples/1053 bytes main debug: looking for audio filter module: 1 candidate scaletempo debug: format: 44100 rate, 2 nch, 4 bps, fl32 scaletempo debug: params: 30 stride, 0.200 overlap, 14 search scaletempo debug: 1.000 scale, 1323.000 stride_in, 1323 stride_out, 1059 standing, 264 overlap, 617 search, 2204 queue, fl32 mode main debug: using audio filter module "scaletempo" main debug: TIMER module_need() : 0.112 ms - Total 0.112 ms / 1 intvls (Avg 0.112 ms) main debug: filter(s) 'mpga'->'f32l' 44100 Hz->44100 Hz Stereo->Stereo main debug: looking for audio filter module: 14 candidates mpgatofixed32 debug: mpga->f32l, bits per sample: 0 main debug: using audio filter module "mpgatofixed32" main debug: TIMER module_need() : 0.061 ms - Total 0.061 ms / 1 intvls (Avg 0.061 ms) main debug: found a filter for the whole conversion main debug: looking for audio filter module: 1 candidate equalizer debug: equalizer loaded for 44100 Hz with 10 bands 1 pass equalizer debug: 60 Hz -> factor:0.047126 alpha:0.003013 beta:0.993973 gamma:1.993901 equalizer debug: 170 Hz -> factor:0.030505 alpha:0.008490 beta:0.983019 gamma:1.982437 equalizer debug: 310 Hz -> factor:0.000000 alpha:0.015374 beta:0.969252 gamma:1.967331 equalizer debug: 600 Hz -> factor:0.064731 alpha:0.029328 beta:0.941343 gamma:1.934254 equalizer debug: 1000 Hz -> factor:0.103134 alpha:0.047918 beta:0.904163 gamma:1.884869 equalizer debug: 3000 Hz -> factor:0.124059 alpha:0.130408 beta:0.739184 gamma:1.582718 equalizer debug: 6000 Hz -> factor:0.103134 alpha:0.226555 beta:0.546889 gamma:1.015267 equalizer debug: 12000 Hz -> factor:0.047126 alpha:0.344937 beta:0.310127 gamma:-0.181410 equalizer debug: 14000 Hz -> factor:0.030505 alpha:0.366438 beta:0.267123 gamma:-0.521151 equalizer debug: 16000 Hz -> factor:0.014813 alpha:0.379009 beta:0.241981 gamma:-0.808451 main debug: using audio filter module "equalizer" main debug: TIMER module_need() : 0.134 ms - Total 0.134 ms / 1 intvls (Avg 0.134 ms) main debug: filter(s) 'f32l'->'f32l' 48510 Hz->44100 Hz Stereo->Stereo main debug: looking for audio filter module: 14 candidates bandlimited_resampler debug: f32l/48510KHz/2->f32l/44100KHz/2 main debug: using audio filter module "bandlimited_resampler" main debug: TIMER module_need() : 0.067 ms - Total 0.067 ms / 1 intvls (Avg 0.067 ms) main debug: found a filter for the whole conversion main debug: End of audio preroll main debug: Decoder buffering done in 23 ms main warning: PTS is out of range (-9804), dropping buffer main warning: PTS is out of range (-35751), dropping buffer mpgatofixed32 debug: libmad error: bad main_data_begin pointer pulse debug: Pulse stream started main warning: output date isn't PTS date, requesting resampling (136281) main warning: audio drift is too big (136280), dropping buffer mpgatofixed32 debug: libmad error: bad main_data_begin pointer main warning: buffer is 110157 late, triggering upsampling
But same playlist in M3U format opening without problems:

Code: Select all

#EXTM3U #EXTINF:0,CA2K - не_моли_небо.mp3 /muz/radio_record/ar01476/не_моли_небо.mp3 #EXTINF:0,CA2K - nitroroller.mp3 /muz/radio_record/ar01476/nitroroller.mp3 #EXTINF:0,CA2K - milk_shake.mp3 /muz/radio_record/ar01476/milk_shake.mp3
Both playlists encoded in UTF-8, VLC 1.1.7.

Rémi Denis-Courmont
Developer
Developer
Posts: 15326
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: XSPF playlist & unicode paths issue

Postby Rémi Denis-Courmont » 02 Mar 2011 18:02

I expect you would see the same problem if you used file URIs rather than local path in the M3U file. URIs are not supposed to contain non-ASCII characters as far as I know. See RFC3986 §2.4 and §2.5.
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

Synac
New Cone
New Cone
Posts: 7
Joined: 02 Mar 2011 13:36
VLC version: 1.2.0
Operating System: Ubuntu 10.10
Location: Russian Federation

Re: XSPF playlist & unicode paths issue

Postby Synac » 03 Mar 2011 05:55

Thanks, using local path (without file://) solved the problem! I just not perceived these paths in XSPF as actually URIs:)
However I think in this case it would be better to use percent-encoding for non-ASCII chars.

Rémi Denis-Courmont
Developer
Developer
Posts: 15326
Joined: 07 Jun 2004 16:01
VLC version: master
Operating System: Linux
Contact:

Re: XSPF playlist & unicode paths issue

Postby Rémi Denis-Courmont » 03 Mar 2011 16:23

Sure, the correct solution would be to percent-encode the non-ASCII bytes. Where does the file come from?
Rémi Denis-Courmont
https://www.remlab.net/
Private messages soliciting support will be systematically discarded

Synac
New Cone
New Cone
Posts: 7
Joined: 02 Mar 2011 13:36
VLC version: 1.2.0
Operating System: Ubuntu 10.10
Location: Russian Federation

Re: XSPF playlist & unicode paths issue

Postby Synac » 03 Mar 2011 16:39

It was crafted manually by me


Return to “General VLC media player Troubleshooting”

Who is online

Users browsing this forum: No registered users and 40 guests