[MPlayer-users] Parsing whole Youtube mp4 file before playing?

Rasz citizenr at gmail.com
Fri Jun 5 03:39:31 CEST 2015


Mplayer (libavcodec?) parses some mp4 files encoded by google/YT all
the way to the end preventing streaming. Here is an example:

--------------------------------------------
D:\_learning>youtube-dl.exe https://www.youtube.com/watch?v=M3IgHiWq5x4 -F
[youtube] M3IgHiWq5x4: Downloading webpage
[youtube] M3IgHiWq5x4: Extracting video information
[youtube] M3IgHiWq5x4: Downloading DASH manifest
[info] Available formats for M3IgHiWq5x4:
format code  extension  resolution note
140          m4a        audio only DASH audio  129k , m4a_dash
container, aac  @128k (44100Hz), 27.84MiB
171          webm       audio only DASH audio  149k , audio at 128k
(44100Hz), 24.75MiB
141          m4a        audio only DASH audio  257k , m4a_dash
container, aac  @256k (44100Hz), 55.89MiB
160          mp4        256x144    DASH video  115k , 15fps, video
only, 23.71MiB
278          webm       256x144    DASH video  144k , webm container,
VP9, 15fps, video only, 22.78MiB
133          mp4        426x240    DASH video  252k , 30fps, video
only, 53.20MiB
242          webm       426x240    DASH video  293k , 30fps, video
only, 44.73MiB
243          webm       640x360    DASH video  546k , 30fps, video
only, 85.39MiB
134          mp4        640x360    DASH video  634k , 30fps, video
only, 95.42MiB
244          webm       854x480    DASH video 1045k , 30fps, video
only, 157.52MiB
135          mp4        854x480    DASH video 1134k , 30fps, video
only, 187.37MiB
247          webm       1280x720   DASH video 2192k , 30fps, video
only, 326.61MiB
136          mp4        1280x720   DASH video 2262k , 30fps, video
only, 362.02MiB
248          webm       1920x1080  DASH video 3968k , 30fps, video
only, 605.60MiB
137          mp4        1920x1080  DASH video 4219k , 30fps, video
only, 668.94MiB
17           3gp        176x144
36           3gp        320x240
5            flv        400x240
43           webm       640x360
18           mp4        640x360
22           mp4        1280x720   (best)

Format 22 is ordinary mp4 video+audio file and streams perfectly
(thats what I use daily)
D:\_learning>for /f "delims=" %A in ('youtube-dl.exe
"https://www.youtube.com/watch?v=M3IgHiWq5x4" -f 22 -g') do
@C:\Users\bofh\AppData\Roaming\smplayer\mplayer\mplayer "%A"

Format 248 is video only webm and also plays fine
D:\_learning>for /f "delims=" %A in ('youtube-dl.exe
"https://www.youtube.com/watch?v=M3IgHiWq5x4" -f 248 -g') do
@C:\Users\bofh\AppData\Roaming\smplayer\mplayer\mplayer "%A"

Problem lies in Format 137 video only mp4. Instead of playing
immediately mplayer starts parsing this file piece by piece reading
chunks every couple of megabytes
D:\_learning>for /f "delims=" %A in ('youtube-dl.exe
"https://www.youtube.com/watch?v=M3IgHiWq5x4" -f 137 -g') do
@C:\Users\bofh\AppData\Roaming\smplayer\mplayer\mplayer "%A" -v

....
[https @ 0000000001544180]header='Content-Range: bytes 0-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 701448022'
....
[https @ 0000000001544180]header='Content-Range: bytes
1228800-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 700219222'
....
[https @ 0000000001544180]header='Content-Range: bytes
1302528-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 700145494'
....
[https @ 0000000001544180]header='Content-Range: bytes
1957888-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 699490134'
....
[https @ 0000000001544180]header='Content-Range: bytes
4718592-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 696729430'
....
[https @ 0000000001544180]header='Content-Range: bytes
7479296-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 693968726'
....
[https @ 0000000001544180]header='Content-Range: bytes
10235904-701448021/701448022'
[https @ 0000000001544180]header='Accept-Ranges: bytes'
[https @ 0000000001544180]header='Content-Length: 691212118'
....and so on

it will eventually start playing after parsing whole file this way. I
would simply guess its one of those weird containers with metadata all
over the place and there is no way around it, except both Youtube
HTML5 and Flash video players stream this file fine without reading
all over the place. Same goes for m4a (formats 140, 141). Is this
mplayer or libavcodec issue? any way to do something about it?


-- 
Who logs in to gdm? Not I, said the duck.


More information about the MPlayer-users mailing list