VLC takes significant amount of time when playing *.m3u files whose content list local files
Description
Expected behavior
When I play a *.m3u file that contain list of local files, I shouldn't wait more than 10 seconds for VLC to start playing the first item listed in the *.m3u file.
Actual behavior
When I play a *.m3u file that contain list of local files, VLC can take more than 2 minutes for starting playing the first item listed in the *.m3u file. The more lines the *.m3u files, the more it takes for VLC to start playing the first item listed in the *.m3u file.
Steps to reproduce
- Open VLC Android
- Navigate to a directory containing a *.m3u file using the VLC file browser
- Play the *.m3u file that contain list of local files
- At this point, VLC will show an animation next to the *.m3u file, and you will have to wait a few seconds (sometimes minutes) for the video player to show up.
Screenshot / video
The two videos below were recorded on the same phone.
The video below shows the behavior when playing /storage/5009-B293/example/playlists/my-playlist-0100-files.m3u
using VLC and a stopwatch which I started before starting playing the *.m3u file in VLC. The final recorded time in the stopwatch is 00:20.83.
The video below shows the behavior when playing /storage/5009-B293/example/playlists/my-playlist-0100-files.m3u
using mpv-android a stopwatch which I started before starting playing the *.m3u file in mpv. The final recorded time in the stopwatch is 00:12.44. This doesn't mean that mpv took 12 seconds to play the *.m3u file, the recorded time included my interactions to launch mpv. In the video, you can see that mpv immediately started playing a video.
I had to launch mpv using Ghost Commander (a file browser) because for some reason mpv immediately closed the media viewer when selecting the *.m3u file in the mpv built-in file picker. This is not relevant to this issue, I just wanted to show that mpv can quickly play a *.m3u file.
Context
App version
VLC version 3.6.3
Android version
Android version 12
Device model
Samsung Galaxy A02s (SM-A025M)
App mode
Smartphone (I'm using VLC in my Android phone)
Additional sections
Use case
Use case: I have more than 10k video files in my desktop computer. I group those video files using *.m3u files which I programmatically create using Python. In other words, the *.m3u files that I create are playlists of local files. Some of those *.m3u files can list 2k video files. I need to play the *.m3u (i.e. playlists) in my Android phone, so I have transferred those 10k video files and the *.m3u files. The problem is that when I use VLC Android to play the *.m3u file in my Android phone, VLC waits a few seconds or minutes to start playing the first video. The time seems to be related to the amount of items in the *.m3u file.
Minimal reproducible example
On my desktop computer, I created 1000 different videos using ffmpeg
.
rm -rf /tmp/example && mkdir -p /tmp/example/videos
for i in $(seq -f '%04g' 1 1000)
do
filename="/tmp/example/videos/$i.mp4"
echo "$filename"
if [ ! -f filename ]
then
ffmpeg -y -f lavfi -i 'color=size=854x480:duration=5:rate=30:color=blue' -vf "drawtext=fontfile=/path/to/font.ttf:fontsize=30:fontcolor=white:x=(w-text_w)/2:y=(h-text_h)/2:text='video no. $i'" "$filename"
fi
done
I also created 10 *.m3u files containing a list of those videos.
rm -rf /tmp/example/playlists && mkdir /tmp/example/playlists
for i in $(seq -f '%04g' 1 10); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0010-files.m3u; done
for i in $(seq -f '%04g' 1 100); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0100-files.m3u; done
for i in $(seq -f '%04g' 1 200); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0200-files.m3u; done
for i in $(seq -f '%04g' 1 300); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0300-files.m3u; done
for i in $(seq -f '%04g' 1 400); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0400-files.m3u; done
for i in $(seq -f '%04g' 1 500); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0500-files.m3u; done
for i in $(seq -f '%04g' 1 600); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0600-files.m3u; done
for i in $(seq -f '%04g' 1 700); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0700-files.m3u; done
for i in $(seq -f '%04g' 1 800); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0800-files.m3u; done
for i in $(seq -f '%04g' 1 900); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-0900-files.m3u; done
for i in $(seq -f '%04g' 1 1000); do echo "/storage/5009-B293/example/videos/$i.mp4" >> /tmp/example/playlists/my-playlist-1000-files.m3u; done
I transferred the files from my desktop computer to my Android phone using the command below. For the record, the size of /tmp/example
was 13M.
$ rsync --verbose --verbose --recursive --update --delete /tmp/example/ phone-secondary:/storage/5009-B293/example
I opened VLC on my Android phone. I navigated to the directory /storage/5009-B293/example/playlists
on the file browser of VLC. Below is a table of the elapsed time from the time I pressed on the *.m3u file to the time the first video started playing. I measured the times using a stopwatch on another phone and starting at those two phones, the observational error equals the time it took to my brain to move my hand to stop the stopwatch when I noticed the first video started playing (approximately 2 seconds).
File | minutes:seconds.milliseconds |
---|---|
/storage/5009-B293/example/playlists/my-playlist-0010-files.m3u | 00:02.830 |
/storage/5009-B293/example/playlists/my-playlist-0100-files.m3u | 00:16.530 |
/storage/5009-B293/example/playlists/my-playlist-0200-files.m3u | 00:33.220 |
/storage/5009-B293/example/playlists/my-playlist-0300-files.m3u | 00:47.500 |
/storage/5009-B293/example/playlists/my-playlist-0400-files.m3u | 01:04.460 |
/storage/5009-B293/example/playlists/my-playlist-0500-files.m3u | (I didn't measure it) |
/storage/5009-B293/example/playlists/my-playlist-0600-files.m3u | (I didn't measure it) |
/storage/5009-B293/example/playlists/my-playlist-0700-files.m3u | (I didn't measure it) |
/storage/5009-B293/example/playlists/my-playlist-0800-files.m3u | (I didn't measure it) |
/storage/5009-B293/example/playlists/my-playlist-0900-files.m3u | (I didn't measure it) |
/storage/5009-B293/example/playlists/my-playlist-1000-files.m3u | 02:33.320 |
I was curious about the logs, so I went to Settings > Advanced > Debug logs and pressed on "Start logging", I played /tmp/example/playlists/my-playlist-0100-files.m3u
and I closed the player view when the first player started playing. Then, I transferred the logs to my desktop computer to run grep
on it. Note that the message "Creating an input for preparsing" for the first item in the playlist 0001.mp4 appears on 03-04 10:12:32.091 and that same message for the last item in the playlist 0100.mp4 appears at 03-04 10:12:47.485 (the time difference is 15 seconds, which is the time that I wrote down on the table above). You can find the complete logs shown below at https://web.archive.org/web/20250304151909/http://0x0.st/8Mte.log
$ rsync --verbose --verbose 'phone-secondary:/sdcard/vlc_logcat_20250304_101307.log' /tmp/example
$ grep 'Creating an input for preparsing' '/tmp/example/vlc_logcat_20250304_101307.log'
03-04 10:12:32.091 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0001.mp4'
03-04 10:12:32.293 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0002.mp4'
03-04 10:12:32.363 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '0001.mp4'
03-04 10:12:32.439 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0003.mp4'
03-04 10:12:32.587 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0004.mp4'
03-04 10:12:32.742 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0005.mp4'
03-04 10:12:32.893 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0006.mp4'
03-04 10:12:33.038 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0007.mp4'
03-04 10:12:33.181 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0008.mp4'
03-04 10:12:33.340 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0009.mp4'
03-04 10:12:33.499 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0010.mp4'
03-04 10:12:33.656 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0011.mp4'
03-04 10:12:33.804 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0012.mp4'
03-04 10:12:33.961 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0013.mp4'
03-04 10:12:34.121 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0014.mp4'
03-04 10:12:34.289 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0015.mp4'
03-04 10:12:34.440 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0016.mp4'
03-04 10:12:34.593 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0017.mp4'
03-04 10:12:34.761 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0018.mp4'
03-04 10:12:34.915 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0019.mp4'
03-04 10:12:35.065 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0020.mp4'
03-04 10:12:35.212 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0021.mp4'
03-04 10:12:35.359 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0022.mp4'
03-04 10:12:35.524 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0023.mp4'
03-04 10:12:35.677 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0024.mp4'
03-04 10:12:35.825 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0025.mp4'
03-04 10:12:35.989 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0026.mp4'
03-04 10:12:36.146 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0027.mp4'
03-04 10:12:36.298 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0028.mp4'
03-04 10:12:36.451 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0029.mp4'
03-04 10:12:36.606 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0030.mp4'
03-04 10:12:36.761 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0031.mp4'
03-04 10:12:36.933 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0032.mp4'
03-04 10:12:37.083 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0033.mp4'
03-04 10:12:37.246 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0034.mp4'
03-04 10:12:37.408 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0035.mp4'
03-04 10:12:37.549 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0036.mp4'
03-04 10:12:37.695 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0037.mp4'
03-04 10:12:37.834 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0038.mp4'
03-04 10:12:37.988 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0039.mp4'
03-04 10:12:38.138 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0040.mp4'
03-04 10:12:38.304 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0041.mp4'
03-04 10:12:38.457 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0042.mp4'
03-04 10:12:38.621 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0043.mp4'
03-04 10:12:38.774 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0044.mp4'
03-04 10:12:38.941 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0045.mp4'
03-04 10:12:39.100 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0046.mp4'
03-04 10:12:39.270 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0047.mp4'
03-04 10:12:39.423 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0048.mp4'
03-04 10:12:39.574 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0049.mp4'
03-04 10:12:39.737 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0050.mp4'
03-04 10:12:39.891 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0051.mp4'
03-04 10:12:40.042 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0052.mp4'
03-04 10:12:40.191 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0053.mp4'
03-04 10:12:40.331 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0054.mp4'
03-04 10:12:40.480 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0055.mp4'
03-04 10:12:40.637 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0056.mp4'
03-04 10:12:40.791 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0057.mp4'
03-04 10:12:40.943 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0058.mp4'
03-04 10:12:41.091 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0059.mp4'
03-04 10:12:41.231 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0060.mp4'
03-04 10:12:41.385 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0061.mp4'
03-04 10:12:41.554 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0062.mp4'
03-04 10:12:41.716 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0063.mp4'
03-04 10:12:41.861 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0064.mp4'
03-04 10:12:42.000 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0065.mp4'
03-04 10:12:42.149 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0066.mp4'
03-04 10:12:42.320 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0067.mp4'
03-04 10:12:42.476 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0068.mp4'
03-04 10:12:42.619 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0069.mp4'
03-04 10:12:42.781 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0070.mp4'
03-04 10:12:42.948 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0071.mp4'
03-04 10:12:43.100 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0072.mp4'
03-04 10:12:43.248 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0073.mp4'
03-04 10:12:43.409 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0074.mp4'
03-04 10:12:43.572 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0075.mp4'
03-04 10:12:43.734 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0076.mp4'
03-04 10:12:43.901 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0077.mp4'
03-04 10:12:44.061 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0078.mp4'
03-04 10:12:44.223 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0079.mp4'
03-04 10:12:44.372 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0080.mp4'
03-04 10:12:44.520 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0081.mp4'
03-04 10:12:44.683 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0082.mp4'
03-04 10:12:44.847 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0083.mp4'
03-04 10:12:44.998 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0084.mp4'
03-04 10:12:45.147 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0085.mp4'
03-04 10:12:45.307 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0086.mp4'
03-04 10:12:45.461 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0087.mp4'
03-04 10:12:45.623 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0088.mp4'
03-04 10:12:45.786 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0089.mp4'
03-04 10:12:45.940 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0090.mp4'
03-04 10:12:46.107 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0091.mp4'
03-04 10:12:46.267 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0092.mp4'
03-04 10:12:46.418 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0093.mp4'
03-04 10:12:46.571 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0094.mp4'
03-04 10:12:46.714 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0095.mp4'
03-04 10:12:46.873 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0096.mp4'
03-04 10:12:47.035 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0097.mp4'
03-04 10:12:47.176 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0098.mp4'
03-04 10:12:47.336 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0099.mp4'
03-04 10:12:47.485 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '/storage/5009-B293/example/videos/0100.mp4'
03-04 10:12:47.704 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '0001.mp4'
03-04 10:12:47.952 D/VLC (19887): [b4252030/5507] libvlc input: Creating an input for preparsing '0001.mp4'
03-04 10:12:50.486 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'playlists'
03-04 10:12:50.602 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'playlists'
03-04 10:12:50.829 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'my-playlist-0010-files.m3u'
03-04 10:12:50.937 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'my-playlist-0100-files.m3u'
03-04 10:12:51.100 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'my-playlist-0200-files.m3u'
03-04 10:12:51.331 D/VLC (19887): [b4252030/5619] libvlc input: Creating an input for preparsing 'my-playlist-0300-files.m3u'
Additional notes
- To me, waiting more than 2 minutes for starting playing a *.m3u which lists local files is too much time to wait. Some of my *.m3u files are lists of 8k files, assuming the waiting time increases linearly as the number of files listed in the *.m3u file increases, I would have to wait more than 16 minutes for starting playing the first item in the *.m3u.
- To avoid having to wait significant amount of time whenever I want to play *.m3u files with long list of local files, I am using mpv-android to play those *.m3u files. mpv takes less than a second for starting playing the first item in the playlist.
- I am aware of this workaround: Add the directory containing the *.m3u files as the media library. Thus, VLC would automatically create a playlists for each *.m3u file and playing VLC playlists is immediate. The problem with this is that I regularly modify the *.m3u files in my desktop computer and then transfer them to my phone, so if the *.m3u changes I would need to make VLC rescan my media library for VLC to update the playlists so that they reflect the *.m3u files. To me, this is repetitive manual work that could be avoided.
- I am also aware of this workaround: Play the *.m3u file in VLC, wait until vlc starts playing the first item and then use "Save Playlist" to save the list of files as a VLC playlist. Thus, I won't have to wait the next time I want to play that playlist. The problem is that I would need to do this for each *.m3u file. To me, this is repetitive manual work that could be avoided.
- I don't store metadata in my video files (nor I tag them), I categorize/group them using *.m3u files, so if the root cause of the problem is that VLC is trying to read metadata from those video files before playing them, I wish I could make VLC skip reading the metadata and immediately start playing the first item in the *.m3u (just as mpv does)
Keywords: m3u, slow, lag, local files, playlist, playlists