I'm seeing similar behavior on iOS 4.2 (iPhone) and have narrowed it
down some. It looks like a timing problem.
I copied just the main HTML page from
http://jplayer.org/latest/demo-02/
to my local web server. I then changed all the local references
within the pages to link back to
jplayer.org, so the only file being
served is the primary HTML page. I was interested only in the audio
section at the bottom and didn't test video.
The test works fine on Firefox 3.6 and IE8. Clicking on a different
track updates the display and starts playing the track.
The test works fine on my iPhone when connected on a high latency (3G)
link.
The test fails on the same iPhone when connecting on the local WiFi
LAN with very low latency. The HTTP (Apache) server is on the same
LAN. When it fails, typically the track length doesn't update when
clicking on a new track. Sometimes the track starts to play anyway.
Often it starts to play but the "play" button shows instead of the
"pause" button.
I turned on error alerts. When it fails it throws: jPlayer 2.0.0:
id='jquery_jplayer_2': Error! Media URL could not be loaded.
Context:
http://www.jplayer.org/audio/mp3/Miaow-04-Lismore.mp3. The
media is definitely there and served correctly, since the same code
works over 3G.
Strangely, when it fails I see the iPhone hitting the server to reload
the main HTML page, which is cacheable. When connected via the slower
3G link the iPhone loads the HTML page only once and does not reload
it when new tracks are selected. It is almost as though the browser
is incorrectly requesting the HTML be loaded instead of the MP3 file.
I tried to find a race by inspection in the Javascript, but gave up in
the web of jQuery callbacks. It seems as though there is a race
somewhere in setMedia between adding HTML5 audio MP3, expecting the
callback with media duration, and generating the play event.
-Michael