Page 1 of 1

Playing mp4 from HTTP

Posted: 04 Apr 2005 21:51
by jakob
I store most of my video on my headless server (MacOS 10.3.8 running Apache 1.3.33[IPv4]/2.0.53[IPv6]), and use VLC 0.8.1 to play video directly on my laptop using the "Open Network" method. This has always worked wonderfully with MPEGs and AVIs, but VLC seems to choke on .mp4 files, giving me these sorts of errors after playing a few seconds of video:

Code: Select all

main debug: using network module "ipv4" main debug: unlocking module "ipv4" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/1.3.33 (Darwin) PHP/4.3.10 mod_ssl/2.8.22 OpenSSL/0.9.7b DAV/1.0.3 access_http debug: stream size=733761519 access_http debug: Content-Type: video/mp4 access_http debug: trying to seek to 4515548 main debug: net: connecting to 'palevsky-222-121.rh.uchicago.edu:80' main debug: looking for network module main debug: probing 2 candidates ipv4 debug: connection in progress main warning: PTS is out of range (2341271), dropping buffer main warning: PTS is out of range (2318728), dropping buffer main warning: PTS is out of range (2296260), dropping buffer main warning: PTS is out of range (2273786), dropping buffer main warning: PTS is out of range (2251261), dropping buffer main debug: using network module "ipv4" main debug: unlocking module "ipv4" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/1.3.33 (Darwin) PHP/4.3.10 mod_ssl/2.8.22 OpenSSL/0.9.7b DAV/1.0.3 access_http debug: stream size=733761519 access_http debug: Content-Type: video/mp4 main warning: late picture skipped (2439945) access_http debug: trying to seek to 4625780 main debug: net: connecting to 'palevsky-222-121.rh.uchicago.edu:80' main debug: looking for network module main debug: probing 2 candidates ipv4 debug: connection in progress main warning: late picture skipped (2438660) main warning: late picture skipped (2397033) main debug: using network module "ipv4" main debug: unlocking module "ipv4" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/1.3.33 (Darwin) PHP/4.3.10 mod_ssl/2.8.22 OpenSSL/0.9.7b DAV/1.0.3 access_http debug: stream size=733761519 access_http debug: Content-Type: video/mp4 main debug: control type=1 main warning: PTS is out of range (2648840), dropping buffer main warning: PTS is out of range (2626606), dropping buffer main warning: PTS is out of range (2604137), dropping buffer main warning: PTS is out of range (2581638), dropping buffer
and, when streaming from Apache 2.0.53 over IPv6, I get this:

Code: Select all

ipv4 debug: could not build local address ipv6 debug: connection in progress main debug: using network module "ipv6" main debug: unlocking module "ipv6" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/2.0.53 (Mac OS X) access_http debug: stream size=733761519 access_http debug: Content-Type: text/plain; charset=ISO-8859-1 access_http debug: trying to seek to 4167373 main debug: net: connecting to 'deep6.somethingpretentious.net:80' main debug: looking for network module main debug: probing 2 candidates main warning: late picture skipped (6793682) main warning: late picture skipped (6752000) ipv4 debug: could not build local address ipv6 debug: connection in progress main debug: using network module "ipv6" main debug: unlocking module "ipv6" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/2.0.53 (Mac OS X) access_http debug: stream size=733761519 access_http debug: Content-Type: text/plain; charset=ISO-8859-1 access_http debug: trying to seek to 4151047 main debug: net: connecting to 'deep6.somethingpretentious.net:80' main debug: looking for network module main debug: probing 2 candidates main warning: PTS is out of range (7201716), dropping buffer main warning: PTS is out of range (7179077), dropping buffer main warning: PTS is out of range (7156316), dropping buffer main warning: PTS is out of range (7133561), dropping buffer main warning: PTS is out of range (7110739), dropping buffer ipv4 debug: could not build local address ipv6 debug: connection in progress main debug: using network module "ipv6" main debug: unlocking module "ipv6" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/2.0.53 (Mac OS X) access_http debug: stream size=733761519 access_http debug: Content-Type: text/plain; charset=ISO-8859-1 access_http debug: trying to seek to 4172152 main debug: net: connecting to 'deep6.somethingpretentious.net:80' main debug: looking for network module main debug: probing 2 candidates main warning: late picture skipped (7315972) main warning: late picture skipped (7274289) main warning: late picture skipped (7232571) ipv4 debug: could not build local address ipv6 debug: connection in progress main debug: using network module "ipv6" main debug: unlocking module "ipv6" access_http debug: protocol 'HTTP' answer code 206 access_http debug: Server: Apache/2.0.53 (Mac OS X) access_http debug: stream size=733761519 access_http debug: Content-Type: text/plain; charset=ISO-8859-1 main debug: control type=1 main warning: PTS is out of range (7494391), dropping buffer main warning: PTS is out of range (7472163), dropping buffer main warning: PTS is out of range (7449732), dropping buffer main warning: PTS is out of range (7427213), dropping buffer
Here's the truly bizarre thing: mp4 streaming works without a hiccup from the giant SunFire I have access to. Is this a problem with OS X / PPC Apache, or is it a bug in VLC? Has anyone else run into this problem?

(Background info: the files I'm trying to play were produced by Handbrake, using either ffmpeg or XviD)

Thanks in advance,
Jakob

Posted: 05 Apr 2005 09:19
by Sigmund
It's caused by vlc's mp4 handling being a bit stupid, combined with the server not being a giant sunfire.

Posted: 05 Apr 2005 17:44
by jakob
It's caused by vlc's mp4 handling being a bit stupid, combined with the server not being a giant sunfire.
So reading from an mp4 container over HTTP requires ridiculous bandwidth/16 processors? Is this inability to handle mp4 considered a bug, or just the way VLC does things? Is there any other information I can provide to aid in tracking down the specific problem, or is this a non-issue? Above all, is there any kind of work-around? (Besides ripping to AVI/OGM or playing from a server-side VLC, those solutions are still rather inelegant, given my desire to retain Quicktime compatibility and control VLC playback locally)

Thanks,
Jakob

Posted: 05 Apr 2005 18:13
by Sigmund
I think the way mp4 is handled have changed since 0.8.1. Basically the problem is that vlc's mp4 reader does lots of seeks. With files this is ok. With http this is done by closing the connection and opening a new one with a request for the wanted position. problem is that creating a new connection takes quite some time, so the server will have to resond very fast in order for there to not be any hickup. Actually I don't think it's the 16 processors or the big bandwidth that does the difference. I think it's lots of memory and/or 15k rpm disks. Anyhow, try a nightly build, see if it works better.