mpv-player / mpv

🎥 Command line video player
https://mpv.io
Other
28.82k stars 2.93k forks source link

Support for non-UTF-8 M3U playlists #10911

Closed low-batt closed 1 year ago

low-batt commented 2 years ago

Important Information

Provide following Information:

Reproduction steps

This problem was reported against IINA in issue https://github.com/iina/iina/issues/4091

Put the attached files in a directory and try and play the M3U playlist, mpv will fail to open the file listed in the playlist:

low-batt@gag ~$ /Applications/mpv.app/Contents/MacOS/mpv --no-config --log-file=mpv.log Music/IINA-issue-4091/album.m3u 

Playing: Music/IINA-issue-4091/Molv?r.mp3
[file] Cannot open file 'Music/IINA-issue-4091/Molv?r.mp3': No such file or directory
Failed to open Music/IINA-issue-4091/Molv?r.mp3.

Exiting... (Some errors happened)

Expected behavior

mpv plays the file in the playlist like VLC does:

low-batt@gag ~$ /Applications/VLC.app/Contents/MacOS/VLC Music/IINA-issue-4091/album.m3u 
VLC media player 3.0.17.3 Vetinari (revision 3.0.17.3-0-g426513d88e)
[000000013cf05920] main libvlc: Running vlc with the default interface. Use 'cvlc' to use vlc without interface.
^C

Actual behavior

mpv searches for the wrong filename as shown above and fails to find and play the file.

If I convert the M3U to a M3U8:

low-batt@gag ~$ file Music/IINA-issue-4091/album.m3u 
Music/IINA-issue-4091/album.m3u: M3U playlist text, ISO-8859 text, with CRLF line terminators
low-batt@gag ~$ iconv -f ISO-8859-1 -t UTF-8 Music/IINA-issue-4091/album.m3u > Music/IINA-issue-4091/album.m3u8

Then mpv properly reads the playlist and finds and plays the file:

low-batt@gag ~$ /Applications/mpv.app/Contents/MacOS/mpv --no-config Music/IINA-issue-4091/album.m3u8 

Playing: Music/IINA-issue-4091/Molvær.mp3
 (+) Audio --aid=1 (mp3 2ch 44100Hz)
AO: [coreaudio] 44100Hz stereo 2ch floatp
A: 00:00:01 / 00:00:19 (10%)

Exiting... (Quit)

Log file

mpv.log: ```text [ 0.002][v][cplayer] mpv 0.35.0 Copyright ¬© 2000-2022 mpv/MPlayer/mplayer2 projects [ 0.003][v][cplayer] built on Sat Nov 12 21:24:01 CET 2022 [ 0.003][v][cplayer] FFmpeg library versions: [ 0.003][v][cplayer] libavutil 57.28.100 [ 0.003][v][cplayer] libavcodec 59.37.100 [ 0.003][v][cplayer] libavformat 59.27.100 [ 0.003][v][cplayer] libswscale 6.7.100 [ 0.003][v][cplayer] libavfilter 8.44.100 [ 0.003][v][cplayer] libswresample 4.7.100 [ 0.003][v][cplayer] FFmpeg version: 5.1.2 [ 0.003][v][cplayer] [ 0.003][v][cplayer] Configuration: waf configure --prefix=/Users/djinn/makeeuropegreatagain/build-0.35.0 --confloaddir=/usr/local/etc/mpv --enable-manpage-build --enable-html-build --disable-android --disable-tvos --disable-egl-android --disable-macos-media-player --lua=51deb [ 0.003][v][cplayer] List of enabled features: 51deb asm av-channel-layout bsd-fstatfs build-date cocoa coreaudio cplayer cplugins debug-build ffmpeg gl gl-cocoa glob glob-posix gpl iconv javascript jpegxl lcms2 libarchive libass libavdevice libdl libm lua macos-10-11-features macos-10-12-2-features macos-10-14-features macos-cocoa-cb macos-touchbar optimize osx-thread-name posix posix-or-mingw pthreads rubberband rubberband-3 stdatomic swift uchardet vector videotoolbox-gl videotoolbox-hwaccel zimg zlib [ 0.003][v][cplayer] Command line options: '--no-config' '--log-file=mpv.log' 'Music/IINA-issue-4091/album.m3u' [ 0.003][v][cplayer] mpv 0.35.0 Copyright ¬© 2000-2022 mpv/MPlayer/mplayer2 projects [ 0.003][v][cplayer] built on Sat Nov 12 21:24:01 CET 2022 [ 0.003][v][cplayer] FFmpeg library versions: [ 0.003][v][cplayer] libavutil 57.28.100 [ 0.003][v][cplayer] libavcodec 59.37.100 [ 0.003][v][cplayer] libavformat 59.27.100 [ 0.003][v][cplayer] libswscale 6.7.100 [ 0.003][v][cplayer] libavfilter 8.44.100 [ 0.003][v][cplayer] libswresample 4.7.100 [ 0.003][v][cplayer] FFmpeg version: 5.1.2 [ 0.003][v][cplayer] [ 0.003][v][cplayer] Configuration: waf configure --prefix=/Users/djinn/makeeuropegreatagain/build-0.35.0 --confloaddir=/usr/local/etc/mpv --enable-manpage-build --enable-html-build --disable-android --disable-tvos --disable-egl-android --disable-macos-media-player --lua=51deb [ 0.003][v][cplayer] List of enabled features: 51deb asm av-channel-layout bsd-fstatfs build-date cocoa coreaudio cplayer cplugins debug-build ffmpeg gl gl-cocoa glob glob-posix gpl iconv javascript jpegxl lcms2 libarchive libass libavdevice libdl libm lua macos-10-11-features macos-10-12-2-features macos-10-14-features macos-cocoa-cb macos-touchbar optimize osx-thread-name posix posix-or-mingw pthreads rubberband rubberband-3 stdatomic swift uchardet vector videotoolbox-gl videotoolbox-hwaccel zimg zlib [ 0.003][d][global] config path: '' -> '-' [ 0.003][d][global] user path: '~~home/' -> '' [ 0.003][d][global] user path: '~~old_home/' -> '' [ 0.003][v][cplayer] Setting option 'config' = 'no' (flags = 8) [ 0.003][v][cplayer] Setting option 'log-file' = 'mpv.log' (flags = 8) [ 0.003][d][global] user path: 'mpv.log' -> 'mpv.log' [ 0.004][d][osc] Loading lua script @osc.lua... [ 0.004][d][ytdl_hook] Loading lua script @ytdl_hook.lua... [ 0.004][d][stats] Loading lua script @stats.lua... [ 0.004][d][console] Loading lua script @console.lua... [ 0.004][d][auto_profiles] Loading lua script @auto_profiles.lua... [ 0.004][d][osc] loading mp.defaults [ 0.004][d][ytdl_hook] loading mp.defaults [ 0.004][d][stats] loading mp.defaults [ 0.004][d][console] loading mp.defaults [ 0.004][d][auto_profiles] loading mp.defaults [ 0.005][d][console] loading @console.lua [ 0.005][d][auto_profiles] loading @auto_profiles.lua [ 0.005][d][stats] loading @stats.lua [ 0.005][d][ytdl_hook] loading @ytdl_hook.lua [ 0.005][d][osc] loading @osc.lua [ 0.006][d][ytdl_hook] reading options for ytdl_hook [ 0.006][d][ytdl_hook] script-opts/ytdl_hook.conf not found. [ 0.006][d][ytdl_hook] lua-settings/ytdl_hook.conf not found. [ 0.006][d][stats] reading options for stats [ 0.006][d][stats] script-opts/stats.conf not found. [ 0.006][d][stats] lua-settings/stats.conf not found. [ 0.007][d][osc] reading options for osc [ 0.007][d][osc] script-opts/osc.conf not found. [ 0.007][d][osc] lua-settings/osc.conf not found. [ 0.030][v][osx/cocoacb] Created CGL pixel format with attributes: kCGLPFAOpenGLProfile, kCGLOGLPVersion_3_2_Core, kCGLPFAAccelerated, kCGLPFADoubleBuffer, kCGLPFAColorSize, 64, kCGLPFAColorFloat, kCGLPFABackingStore, kCGLPFAAllowOfflineRenderers, kCGLPFASupportsAutomaticGraphicsSwitching, 0 [ 0.033][v][libmpv_render] GL_VERSION='4.1 Metal - 83' [ 0.033][v][libmpv_render] Detected desktop OpenGL 4.1. [ 0.033][v][libmpv_render] GL_VENDOR='Apple' [ 0.033][v][libmpv_render] GL_RENDERER='Apple M1 Max' [ 0.033][v][libmpv_render] GL_SHADING_LANGUAGE_VERSION='4.10' [ 0.033][d][libmpv_render] Combined OpenGL extensions string: [ 0.033][d][libmpv_render] GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_NV_texture_barrier [ 0.034][v][libmpv_render] Loaded extension GL_APPLE_rgb_422. [ 0.034][v][libmpv_render] GL_*_swap_control extension missing. [ 0.034][d][libmpv_render] Texture formats: [ 0.034][d][libmpv_render] NAME COMP*TYPE SIZE DEPTH PER COMP. [ 0.034][d][libmpv_render] r8 1*unorm 1B LF CR ST {8} [ 0.034][d][libmpv_render] rg8 2*unorm 2B LF CR ST {8 8} [ 0.034][d][libmpv_render] rgb8 3*unorm 3B LF CR ST {8 8 8} [ 0.034][d][libmpv_render] rgba8 4*unorm 4B LF CR ST {8 8 8 8} [ 0.034][d][libmpv_render] r16 1*unorm 2B LF CR ST {16} [ 0.034][d][libmpv_render] rg16 2*unorm 4B LF CR ST {16 16} [ 0.034][d][libmpv_render] rgb16 3*unorm 6B LF CR ST {16 16 16} [ 0.034][d][libmpv_render] rgba16 4*unorm 8B LF CR ST {16 16 16 16} [ 0.034][d][libmpv_render] r8ui 1*uint 1B CR ST {8} [ 0.034][d][libmpv_render] rg8ui 2*uint 2B CR ST {8 8} [ 0.034][d][libmpv_render] rgb8ui 3*uint 3B ST {8 8 8} [ 0.034][d][libmpv_render] rgba8ui 4*uint 4B CR ST {8 8 8 8} [ 0.034][d][libmpv_render] r16ui 1*uint 2B CR ST {16} [ 0.034][d][libmpv_render] rg16ui 2*uint 4B CR ST {16 16} [ 0.034][d][libmpv_render] rgb16ui 3*uint 6B ST {16 16 16} [ 0.034][d][libmpv_render] rgba16ui 4*uint 8B CR ST {16 16 16 16} [ 0.034][d][libmpv_render] r16f 1*float 4B LF CR ST {32/16} [ 0.034][d][libmpv_render] rg16f 2*float 8B LF CR ST {32/16 32/16} [ 0.034][d][libmpv_render] rgb16f 3*float 12B LF CR ST {32/16 32/16 32/16} [ 0.034][d][libmpv_render] rgba16f 4*float 16B LF CR ST {32/16 32/16 32/16 32/16} [ 0.034][d][libmpv_render] r32f 1*float 4B LF CR ST {32} [ 0.034][d][libmpv_render] rg32f 2*float 8B LF CR ST {32 32} [ 0.034][d][libmpv_render] rgb32f 3*float 12B LF CR ST {32 32 32} [ 0.034][d][libmpv_render] rgba32f 4*float 16B LF CR ST {32 32 32 32} [ 0.034][d][libmpv_render] rgb10_a2 4*unorm 4B LF CR ST {0/10 0/10 0/10 0/2} [ 0.034][d][libmpv_render] rgba12 4*unorm 8B LF CR ST {16/12 16/12 16/12 16/12} [ 0.034][d][libmpv_render] rgb10 3*unorm 6B LF CR ST {16/10 16/10 16/10} [ 0.034][d][libmpv_render] rgb565 3*unorm 2B LF ST {0/8 0/8 0/8} [ 0.034][d][libmpv_render] appleyp 0*unorm 2B LF ST {} [ 0.034][d][libmpv_render] LA = LUMINANCE_ALPHA hack format [ 0.034][d][libmpv_render] LF = linear filterable [ 0.034][d][libmpv_render] CR = can be used for render targets [ 0.034][d][libmpv_render] ST = can be used for storable images [ 0.034][d][libmpv_render] Image formats: [ 0.034][d][libmpv_render] yuv444p => 3 planes 1x1 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuv420p => 3 planes 2x2 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] gray => 1 planes 1x1 8/0 [r8] (r) [unorm] [ 0.034][d][libmpv_render] gray16 => 1 planes 1x1 16/0 [r16] (r) [unorm] [ 0.034][d][libmpv_render] uyvy422 => 1 planes 1x1 0/0 [appleyp] (brg) [unknown] [ 0.034][d][libmpv_render] nv12 => 2 planes 2x2 8/0 [r8/rg8] (r/gb) [unorm] [ 0.034][d][libmpv_render] p010 => 2 planes 2x2 16/6 [r16/rg16] (r/gb) [unorm] [ 0.034][d][libmpv_render] argb => 1 planes 1x1 8/0 [rgba8] (argb) [unorm] [ 0.034][d][libmpv_render] bgra => 1 planes 1x1 8/0 [rgba8] (bgra) [unorm] [ 0.034][d][libmpv_render] abgr => 1 planes 1x1 8/0 [rgba8] (abgr) [unorm] [ 0.034][d][libmpv_render] rgba => 1 planes 1x1 8/0 [rgba8] (rgba) [unorm] [ 0.034][d][libmpv_render] bgr24 => 1 planes 1x1 8/0 [rgb8] (bgr) [unorm] [ 0.034][d][libmpv_render] rgb24 => 1 planes 1x1 8/0 [rgb8] (rgb) [unorm] [ 0.034][d][libmpv_render] 0rgb => 1 planes 1x1 8/0 [rgba8] (_rgb) [unorm] [ 0.034][d][libmpv_render] bgr0 => 1 planes 1x1 8/0 [rgba8] (bgr) [unorm] [ 0.034][d][libmpv_render] 0bgr => 1 planes 1x1 8/0 [rgba8] (_bgr) [unorm] [ 0.034][d][libmpv_render] rgb0 => 1 planes 1x1 8/0 [rgba8] (rgb) [unorm] [ 0.034][d][libmpv_render] rgba64 => 1 planes 1x1 16/0 [rgba16] (rgba) [unorm] [ 0.034][d][libmpv_render] rgb565 => 1 planes 1x1 0/0 [rgb565] (rgb) [unknown] [ 0.034][d][libmpv_render] pal8 [ 0.034][d][libmpv_render] vdpau [ 0.034][d][libmpv_render] d3d11 [ 0.034][d][libmpv_render] dxva2_vld [ 0.034][d][libmpv_render] mmal [ 0.034][d][libmpv_render] mediacodec [ 0.034][d][libmpv_render] cuda [ 0.034][d][libmpv_render] yap8 => 2 planes 1x1 8/0 [r8/r8] (r/a) [unorm] [ 0.034][d][libmpv_render] yap16 => 2 planes 1x1 16/0 [r16/r16] (r/a) [unorm] [ 0.034][d][libmpv_render] grayaf32 => 2 planes 1x1 32/0 [r16f/r16f] (r/a) [float] [ 0.034][d][libmpv_render] yuv444pf => 3 planes 1x1 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva444pf => 4 planes 1x1 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] yuv420pf => 3 planes 2x2 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva420pf => 4 planes 2x2 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] yuv422pf => 3 planes 2x1 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva422pf => 4 planes 2x1 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] yuv440pf => 3 planes 1x2 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva440pf => 4 planes 1x2 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] yuv410pf => 3 planes 4x4 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva410pf => 4 planes 4x4 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] yuv411pf => 3 planes 4x1 32/0 [r16f/r16f/r16f] (r/g/b) [float] [ 0.034][d][libmpv_render] yuva411pf => 4 planes 4x1 32/0 [r16f/r16f/r16f/r16f] (r/g/b/a) [float] [ 0.034][d][libmpv_render] rgb30 => 1 planes 1x1 10/0 [rgb10_a2] (bgr) [unknown] [ 0.034][d][libmpv_render] y1 => 1 planes 1x1 8/-7 [r8] (r) [unorm] [ 0.034][d][libmpv_render] gbrp1 => 3 planes 1x1 8/-7 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] gbrp2 => 3 planes 1x1 8/-6 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] gbrp3 => 3 planes 1x1 8/-5 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] gbrp4 => 3 planes 1x1 8/-4 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] gbrp5 => 3 planes 1x1 8/-3 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] gbrp6 => 3 planes 1x1 8/-2 [r8/r8/r8] (g/b/r) [unorm] [ 0.034][d][libmpv_render] vdpau_output [ 0.034][d][libmpv_render] vaapi [ 0.034][d][libmpv_render] videotoolbox [ 0.034][d][libmpv_render] drm_prime [ 0.034][d][libmpv_render] yuyv422 [ 0.034][d][libmpv_render] yuv422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuv410p => 3 planes 4x4 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuv411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] monow [ 0.034][d][libmpv_render] monob [ 0.034][d][libmpv_render] yuvj422p => 3 planes 2x1 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] uyyvyy411 [ 0.034][d][libmpv_render] bgr8 [ 0.034][d][libmpv_render] bgr4 [ 0.034][d][libmpv_render] bgr4_byte [ 0.034][d][libmpv_render] rgb8 [ 0.034][d][libmpv_render] rgb4 [ 0.034][d][libmpv_render] rgb4_byte [ 0.034][d][libmpv_render] nv21 => 2 planes 2x2 8/0 [r8/rg8] (r/bg) [unorm] [ 0.034][d][libmpv_render] gray16be [ 0.034][d][libmpv_render] yuv440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuvj440p => 3 planes 1x2 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuva420p => 4 planes 2x2 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm] [ 0.034][d][libmpv_render] rgb48be [ 0.034][d][libmpv_render] rgb48 => 1 planes 1x1 16/0 [rgb16] (rgb) [unorm] [ 0.034][d][libmpv_render] rgb565be [ 0.034][d][libmpv_render] rgb555be [ 0.034][d][libmpv_render] rgb555 [ 0.034][d][libmpv_render] bgr565be [ 0.034][d][libmpv_render] bgr565 [ 0.034][d][libmpv_render] bgr555be [ 0.034][d][libmpv_render] bgr555 [ 0.034][d][libmpv_render] yuv420p16 => 3 planes 2x2 16/0 [r16/r16/r16] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuv420p16be [ 0.034][d][libmpv_render] yuv422p16 => 3 planes 2x1 16/0 [r16/r16/r16] (r/g/b) [unorm] [ 0.034][d][libmpv_render] yuv422p16be [ 0.035][d][libmpv_render] yuv444p16 => 3 planes 1x1 16/0 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv444p16be [ 0.035][d][libmpv_render] rgb444 [ 0.035][d][libmpv_render] rgb444be [ 0.035][d][libmpv_render] bgr444 [ 0.035][d][libmpv_render] bgr444be [ 0.035][d][libmpv_render] ya8 => 1 planes 1x1 8/0 [rg8] (ra) [unorm] [ 0.035][d][libmpv_render] bgr48be [ 0.035][d][libmpv_render] bgr48 => 1 planes 1x1 16/0 [rgb16] (bgr) [unorm] [ 0.035][d][libmpv_render] yuv420p9be [ 0.035][d][libmpv_render] yuv420p9 => 3 planes 2x2 16/-7 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv420p10be [ 0.035][d][libmpv_render] yuv420p10 => 3 planes 2x2 16/-6 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv422p10be [ 0.035][d][libmpv_render] yuv422p10 => 3 planes 2x1 16/-6 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv444p9be [ 0.035][d][libmpv_render] yuv444p9 => 3 planes 1x1 16/-7 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv444p10be [ 0.035][d][libmpv_render] yuv444p10 => 3 planes 1x1 16/-6 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv422p9be [ 0.035][d][libmpv_render] yuv422p9 => 3 planes 2x1 16/-7 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] gbrp => 3 planes 1x1 8/0 [r8/r8/r8] (g/b/r) [unorm] [ 0.035][d][libmpv_render] gbrp9be [ 0.035][d][libmpv_render] gbrp9 => 3 planes 1x1 16/-7 [r16/r16/r16] (g/b/r) [unorm] [ 0.035][d][libmpv_render] gbrp10be [ 0.035][d][libmpv_render] gbrp10 => 3 planes 1x1 16/-6 [r16/r16/r16] (g/b/r) [unorm] [ 0.035][d][libmpv_render] gbrp16be [ 0.035][d][libmpv_render] gbrp16 => 3 planes 1x1 16/0 [r16/r16/r16] (g/b/r) [unorm] [ 0.035][d][libmpv_render] yuva422p => 4 planes 2x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva444p => 4 planes 1x1 8/0 [r8/r8/r8/r8] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva420p9be [ 0.035][d][libmpv_render] yuva420p9 => 4 planes 2x2 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva422p9be [ 0.035][d][libmpv_render] yuva422p9 => 4 planes 2x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva444p9be [ 0.035][d][libmpv_render] yuva444p9 => 4 planes 1x1 16/-7 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva420p10be [ 0.035][d][libmpv_render] yuva420p10 => 4 planes 2x2 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva422p10be [ 0.035][d][libmpv_render] yuva422p10 => 4 planes 2x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva444p10be [ 0.035][d][libmpv_render] yuva444p10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva420p16be [ 0.035][d][libmpv_render] yuva420p16 => 4 planes 2x2 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva422p16be [ 0.035][d][libmpv_render] yuva422p16 => 4 planes 2x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva444p16be [ 0.035][d][libmpv_render] yuva444p16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] xyz12 => 1 planes 1x1 16/4 [rgb16] (rgb) [unorm] [ 0.035][d][libmpv_render] xyz12be [ 0.035][d][libmpv_render] nv16 => 2 planes 2x1 8/0 [r8/rg8] (r/gb) [unorm] [ 0.035][d][libmpv_render] nv20 => 2 planes 2x1 16/-6 [r16/rg16] (r/gb) [unorm] [ 0.035][d][libmpv_render] nv20be [ 0.035][d][libmpv_render] rgba64be [ 0.035][d][libmpv_render] bgra64be [ 0.035][d][libmpv_render] bgra64 => 1 planes 1x1 16/0 [rgba16] (bgra) [unorm] [ 0.035][d][libmpv_render] yvyu422 [ 0.035][d][libmpv_render] ya16be [ 0.035][d][libmpv_render] ya16 => 1 planes 1x1 16/0 [rg16] (ra) [unorm] [ 0.035][d][libmpv_render] gbrap => 4 planes 1x1 8/0 [r8/r8/r8/r8] (g/b/r/a) [unorm] [ 0.035][d][libmpv_render] gbrap16be [ 0.035][d][libmpv_render] gbrap16 => 4 planes 1x1 16/0 [r16/r16/r16/r16] (g/b/r/a) [unorm] [ 0.035][d][libmpv_render] qsv [ 0.035][d][libmpv_render] d3d11va_vld [ 0.035][d][libmpv_render] yuv420p12be [ 0.035][d][libmpv_render] yuv420p12 => 3 planes 2x2 16/-4 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv420p14be [ 0.035][d][libmpv_render] yuv420p14 => 3 planes 2x2 16/-2 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv422p12be [ 0.035][d][libmpv_render] yuv422p12 => 3 planes 2x1 16/-4 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv422p14be [ 0.035][d][libmpv_render] yuv422p14 => 3 planes 2x1 16/-2 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv444p12be [ 0.035][d][libmpv_render] yuv444p12 => 3 planes 1x1 16/-4 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv444p14be [ 0.035][d][libmpv_render] yuv444p14 => 3 planes 1x1 16/-2 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] gbrp12be [ 0.035][d][libmpv_render] gbrp12 => 3 planes 1x1 16/-4 [r16/r16/r16] (g/b/r) [unorm] [ 0.035][d][libmpv_render] gbrp14be [ 0.035][d][libmpv_render] gbrp14 => 3 planes 1x1 16/-2 [r16/r16/r16] (g/b/r) [unorm] [ 0.035][d][libmpv_render] yuvj411p => 3 planes 4x1 8/0 [r8/r8/r8] (r/g/b) [unorm] [ 0.035][d][libmpv_render] bayer_bggr8 [ 0.035][d][libmpv_render] bayer_rggb8 [ 0.035][d][libmpv_render] bayer_gbrg8 [ 0.035][d][libmpv_render] bayer_grbg8 [ 0.035][d][libmpv_render] bayer_bggr16 [ 0.035][d][libmpv_render] bayer_bggr16be [ 0.035][d][libmpv_render] bayer_rggb16 [ 0.035][d][libmpv_render] bayer_rggb16be [ 0.035][d][libmpv_render] bayer_gbrg16 [ 0.035][d][libmpv_render] bayer_gbrg16be [ 0.035][d][libmpv_render] bayer_grbg16 [ 0.035][d][libmpv_render] bayer_grbg16be [ 0.035][d][libmpv_render] xvmc [ 0.035][d][libmpv_render] yuv440p10 => 3 planes 1x2 16/-6 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv440p10be [ 0.035][d][libmpv_render] yuv440p12 => 3 planes 1x2 16/-4 [r16/r16/r16] (r/g/b) [unorm] [ 0.035][d][libmpv_render] yuv440p12be [ 0.035][d][libmpv_render] ayuv64 => 1 planes 1x1 16/0 [rgba16] (argb) [unorm] [ 0.035][d][libmpv_render] ayuv64be [ 0.035][d][libmpv_render] p010be [ 0.035][d][libmpv_render] gbrap12be [ 0.035][d][libmpv_render] gbrap12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (g/b/r/a) [unorm] [ 0.035][d][libmpv_render] gbrap10be [ 0.035][d][libmpv_render] gbrap10 => 4 planes 1x1 16/-6 [r16/r16/r16/r16] (g/b/r/a) [unorm] [ 0.035][d][libmpv_render] gray12be [ 0.035][d][libmpv_render] gray12 => 1 planes 1x1 16/-4 [r16] (r) [unorm] [ 0.035][d][libmpv_render] gray10be [ 0.035][d][libmpv_render] gray10 => 1 planes 1x1 16/-6 [r16] (r) [unorm] [ 0.035][d][libmpv_render] p016 => 2 planes 2x2 16/0 [r16/rg16] (r/gb) [unorm] [ 0.035][d][libmpv_render] p016be [ 0.035][d][libmpv_render] gray9be [ 0.035][d][libmpv_render] gray9 => 1 planes 1x1 16/-7 [r16] (r) [unorm] [ 0.035][d][libmpv_render] gbrpf32be [ 0.035][d][libmpv_render] gbrpf32 => 3 planes 1x1 32/0 [r16f/r16f/r16f] (g/b/r) [float] [ 0.035][d][libmpv_render] gbrapf32be [ 0.035][d][libmpv_render] gbrapf32 => 4 planes 1x1 32/0 [r16f/r16f/r16f/r16f] (g/b/r/a) [float] [ 0.035][d][libmpv_render] opencl [ 0.035][d][libmpv_render] gray14be [ 0.035][d][libmpv_render] gray14 => 1 planes 1x1 16/-2 [r16] (r) [unorm] [ 0.035][d][libmpv_render] grayf32be [ 0.035][d][libmpv_render] grayf32 => 1 planes 1x1 32/0 [r16f] (r) [float] [ 0.035][d][libmpv_render] yuva422p12be [ 0.035][d][libmpv_render] yuva422p12 => 4 planes 2x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] yuva444p12be [ 0.035][d][libmpv_render] yuva444p12 => 4 planes 1x1 16/-4 [r16/r16/r16/r16] (r/g/b/a) [unorm] [ 0.035][d][libmpv_render] nv24 => 2 planes 1x1 8/0 [r8/rg8] (r/gb) [unorm] [ 0.035][d][libmpv_render] nv42 => 2 planes 1x1 8/0 [r8/rg8] (r/bg) [unorm] [ 0.035][d][libmpv_render] vulkan [ 0.035][d][libmpv_render] y210be [ 0.035][d][libmpv_render] y210 [ 0.035][d][libmpv_render] x2rgb10be [ 0.035][d][libmpv_render] x2bgr10 [ 0.035][d][libmpv_render] x2bgr10be [ 0.035][d][libmpv_render] p210be [ 0.035][d][libmpv_render] p210 => 2 planes 2x1 16/6 [r16/rg16] (r/gb) [unorm] [ 0.035][d][libmpv_render] p410be [ 0.035][d][libmpv_render] p410 => 2 planes 1x1 16/6 [r16/rg16] (r/gb) [unorm] [ 0.035][d][libmpv_render] p216be [ 0.035][d][libmpv_render] p216 => 2 planes 2x1 16/0 [r16/rg16] (r/gb) [unorm] [ 0.035][d][libmpv_render] p416be [ 0.035][d][libmpv_render] p416 => 2 planes 1x1 16/0 [r16/rg16] (r/gb) [unorm] [ 0.035][v][libmpv_render] Testing FBO format rgba16f [ 0.035][d][libmpv_render] Resizing texture: 16x16 [ 0.036][v][libmpv_render] Using FBO format rgba16f. [ 0.036][v][libmpv_render] Disabling HDR peak computation (one or more of the following is not supported: compute shaders=0, SSBO=0). [ 0.036][v][libmpv_render] No advanced processing required. Enabling dumb mode. [ 0.036][v][libmpv_render] Loading hwdec driver 'videotoolbox' [ 0.036][v][cplayer] Waiting for scripts... [ 0.036][d][console] reading options for console [ 0.036][d][console] script-opts/console.conf not found. [ 0.036][d][console] lua-settings/console.conf not found. [ 0.037][d][auto_profiles] Exiting... [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="input_console", contents="", flags="default"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="input_console", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="input_stats", contents="", flags="default"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="input_stats", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_stats", contents="", flags="force"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_stats", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="showhide", contents="mouse_move script-binding osc/__keybinding1\nmouse_leave script-binding osc/__keybinding2\n", flags="force"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="showhide_wc", contents="mouse_move script-binding osc/__keybinding3\nmouse_leave script-binding osc/__keybinding4\n", flags="force"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="showhide_wc", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_console", contents="", flags="force"] [ 0.037][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_console", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.037][d][cplayer] Run command: define-section, flags=64, args=[name="input", contents="mbtn_left script-binding osc/__keybinding5\nshift+mbtn_left script-binding osc/__keybinding6\nmbtn_right script-binding osc/__keybinding7\nmbtn_mid script-binding osc/__keybinding8\nwheel_up script-binding osc/__keybinding9\nwheel_down script-binding osc/__keybinding10\nmbtn_left_dbl ignore\nshift+mbtn_left_dbl ignore\nmbtn_right_dbl ignore\n", flags="force"] [ 0.038][d][cplayer] Run command: enable-section, flags=64, args=[name="input", flags=""] [ 0.038][d][cplayer] Run command: define-section, flags=64, args=[name="window-controls", contents="mbtn_left script-binding osc/__keybinding11\n", flags="force"] [ 0.038][d][cplayer] Run command: enable-section, flags=64, args=[name="window-controls", flags=""] [ 0.038][d][cplayer] Run command: change-list, flags=64, args=[name="shared-script-properties", operation="append", value="osc-visibility=auto"] [ 0.038][v][cplayer] Set property: shared-script-properties -> 1 [ 0.038][d][cplayer] Run command: disable-section, flags=64, args=[name="input"] [ 0.038][d][cplayer] Run command: disable-section, flags=64, args=[name="window-controls"] [ 0.038][d][cplayer] Run command: change-list, flags=64, args=[name="shared-script-properties", operation="append", value="osc-margins=0.000000,0.000000,0.000000,0.000000"] [ 0.038][v][cplayer] Set property: shared-script-properties -> 1 [ 0.038][v][cplayer] Done loading scripts. [ 0.038][d][global] config path: 'watch_later' -> '-' [ 0.038][d][global] config path: 'watch_later' -> '-' [ 0.038][v][cplayer] Running hook: ytdl_hook/on_load [ 0.038][v][ytdl_hook] ytdl:// hook [ 0.038][d][osd/libass] ASS library version: 0x1600000 (runtime 0x1600000) [ 0.038][v][osd/libass] libass API version: 0x1600000 [ 0.038][v][osd/libass] libass source: tarball: 0.16.0 [ 0.039][v][osd/libass] Shaper: FriBidi 1.0.12 (SIMPLE) HarfBuzz-ng 5.3.1 (COMPLEX) [ 0.039][v][osd/libass] Setting up fonts... [ 0.039][v][osd/libass] Using font provider coretext [ 0.039][v][osd/libass] Done. [ 0.040][v][ytdl_hook] not a ytdl:// url [ 0.040][d][cplayer] Run command: change-list, flags=64, args=[name="shared-script-properties", operation="append", value="osc-margins=0.000000,0.000000,0.000000,0.000000"] [ 0.040][v][cplayer] Set property: shared-script-properties -> 1 [ 0.040][v][file] Opening Music/IINA-issue-4091/album.m3u [ 0.040][d][osc] osc_init [ 0.040][d][file] resize stream to 131072 bytes, drop 0 bytes [ 0.040][d][file] Stream opened successfully. [ 0.040][v][demux] Trying demuxers for level=normal. [ 0.040][d][demux] Trying demuxer: disc (force-level: normal) [ 0.040][d][demux] Trying demuxer: edl (force-level: normal) [ 0.040][d][demux] Trying demuxer: cue (force-level: normal) [ 0.040][d][demux] Trying demuxer: rawaudio (force-level: normal) [ 0.040][d][demux] Trying demuxer: rawvideo (force-level: normal) [ 0.040][d][demux] Trying demuxer: mkv (force-level: normal) [ 0.040][d][demux] Trying demuxer: libarchive (force-level: normal) [ 0.040][d][cplayer] Run command: change-list, flags=64, args=[name="shared-script-properties", operation="append", value="osc-margins=0.000000,0.000000,0.000000,0.000000"] [ 0.040][v][cplayer] Set property: shared-script-properties -> 1 [ 0.040][d][osd/libass] ASS library version: 0x1600000 (runtime 0x1600000) [ 0.040][v][osd/libass] libass API version: 0x1600000 [ 0.040][v][osd/libass] libass source: tarball: 0.16.0 [ 0.040][d][demux] Trying demuxer: lavf (force-level: normal) [ 0.041][v][osd/libass] Shaper: FriBidi 1.0.12 (SIMPLE) HarfBuzz-ng 5.3.1 (COMPLEX) [ 0.041][v][osd/libass] Setting up fonts... [ 0.041][v][osd/libass] Using font provider coretext [ 0.041][v][osd/libass] Done. [ 0.042][d][cplayer] Run command: define-section, flags=64, args=[name="input_osc", contents="", flags="default"] [ 0.042][d][cplayer] Run command: enable-section, flags=64, args=[name="input_osc", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.042][d][cplayer] Run command: define-section, flags=64, args=[name="input_forced_osc", contents="", flags="force"] [ 0.042][d][cplayer] Run command: enable-section, flags=64, args=[name="input_forced_osc", flags="allow-hide-cursor+allow-vo-dragging"] [ 0.044][v][lavf] No format found, try lowering probescore or forcing the format. [ 0.044][d][demux] Trying demuxer: mf (force-level: normal) [ 0.044][d][demux] Trying demuxer: playlist (force-level: normal) [ 0.044][v][playlist] demuxer read all data; closing stream [ 0.044][v][demux] Detected file format: m3u (Playlist file) [ 0.044][v][cplayer] Opening done: Music/IINA-issue-4091/album.m3u [ 0.044][d][global] config path: 'watch_later' -> '-' [ 0.044][v][cplayer] finished playback, success (reason 5) [ 0.044][i][cplayer] [ 0.044][d][global] config path: 'watch_later' -> '-' [ 0.045][i][cplayer] Playing: Music/IINA-issue-4091/MolvÊr.mp3 [ 0.045][v][cplayer] Running hook: ytdl_hook/on_load [ 0.045][v][ytdl_hook] ytdl:// hook [ 0.045][v][ytdl_hook] not a ytdl:// url [ 0.045][v][file] Opening Music/IINA-issue-4091/MolvÊr.mp3 [ 0.045][e][file] Cannot open file 'Music/IINA-issue-4091/MolvÊr.mp3': No such file or directory [ 0.045][e][stream] Failed to open Music/IINA-issue-4091/MolvÊr.mp3. [ 0.045][v][cplayer] Opening failed or was aborted: Music/IINA-issue-4091/MolvÊr.mp3 [ 0.045][v][cplayer] Running hook: ytdl_hook/on_load_fail [ 0.045][v][ytdl_hook] full hook [ 0.045][v][cplayer] finished playback, loading failed (reason 4) [ 0.045][i][cplayer] [ 0.045][i][cplayer] Exiting... (Some errors happened) [ 0.045][d][libmpv_render] flushing shader cache [ 0.045][d][osx] Exiting... [ 0.045][d][cplayer] Run command: change-list, flags=64, args=[name="shared-script-properties", operation="remove", value="osc-margins"] [ 0.045][v][cplayer] Set property: shared-script-properties -> 1 [ 0.045][d][console] Exiting... [ 0.045][d][ytdl_hook] Exiting... [ 0.045][d][stats] Exiting... [ 0.045][d][osc] Exiting... ```

Sample files

IINA-issue-4091.zip

sfan5 commented 2 years ago

Adding something like --playlist-codepage (including autodetection needed to make your case work) shouldn't be a lot of work but IMO people should just be using UTF-8 in 2022.

tueksta commented 2 years ago

people should just be using UTF-8 in 2022.

totally agree, but the old playlists won't autoconvert themselves.