wake-up-neo.net

Warum wird kein HTML5-Video abgespielt? IOS 8 WebApp (Webansicht)?

Einfaches HTML5-Video wird im Safari-Browser abgespielt. Nach dem Hinzufügen zum Startbildschirm (Standalone WebApp) funktioniert es jedoch nicht. Es funktioniert auf iOS7, aber es funktioniert nicht mehr unter iOS8.

<!DOCTYPE html>
<head>
    <meta charset="utf-8">
    <meta name="Apple-mobile-web-app-capable" content="yes" />
    <title>HTML5 Video Standalone Test</title>
    <style>
    body{
        margin:0;
        }
    </style>
</head>
<body>
    <video src="http://www.jplayer.org/video/m4v/Big_Buck_Bunny_Trailer_480x270_h264aac.m4v" autoplay="autoplay" controls="true" webkit-playsinline />
</body>
</html>

Bitte helfen Gibt es dafür eine Lösung?

39
inaam husain

Die Videowiedergabe ist in Standalone-Anwendungen in IOS 8.0.2 unterbrochen

17
Julio Garcia

Anscheinend behebt iOS 8.3 dieses Problem. Ich habe eine eigenständige Web-App, die ein Audio-Element verwendet und jetzt wie erwartet funktioniert. ENDLICH!

7
gillennium

Bestätigung

Paketierte Cordova-App kann kein Video laden

Hinzugefügt: 

<preference name="AllowInlineMediaPlayback" value="true"/>

zu config.xml und 

webkit-playsinline

zum Element video.

Die Benutzeroberfläche gibt an, dass das Video Loading ist, während video.networkStatus2 (NETWORK_LOADING) und video.readyState0 (HAVE_NOTHING) bleibt.

Safari-Wiedergabe funktioniert

Die Wiedergabe des Startbildschirms funktioniert nicht

Bei der gleichen Webapp, die in ios Safari funktioniert hat, gibt die Homescreen-Version nicht Videos ab und stürzt die Webapp ab, wenn versucht wird, die Quelle der video zu ändern.

Ich mag Apple nicht: |

6
Matyas

Ich habe zwei Apps, die HTML5-Video verwenden. Einer hörte auf zu arbeiten, der andere nicht. Es gab zwei Unterschiede:

  • Der noch funktionierende fügte dem Video-Tag die Quell-Tags hinzu, NACHDEM der Video-Tag zum DOM hinzugefügt wurde.
  • Für die noch funktionierende App ist die automatische Wiedergabe auf "false" (<video autoplay="false">...</video>) gesetzt.

Der erste machte keinen Unterschied, der zweite brachte die App wieder zum Laufen.

2
malthoff

Ich glaube, ich habe eine Problemumgehung gefunden, weil das Audio nicht funktioniert. Ich kann nicht wirklich erklären, warum dieses Update funktioniert, aber es ist.

So sah mein alter Code aus:

// Create the audio tag
var Sprite = document.createElement('audio');
var id = document.createAttribute('id');
id.nodeValue = 'audio_Sprite';
var src = document.createAttribute('src');
src.nodeValue = 'my-audio-Sprite.mp3';

Sprite.setAttributeNode( id );
Sprite.setAttributeNode( src );

// Add it to the DOM
var body = document.getElementsByTagName('body')[0];
body.appendChild( Sprite );

// Play/Pause to load the audio.
Sprite.play();
Sprite.pause();

Hier mache ich jetzt was.

// Grab an existing DOM element and create an audio tag.
var body = document.getElementById('hover');
body.innerHTML += '<audio id="audio_Sprite"><p>Audio not supported</p></audio>';

// Apply the SRC to the audio tag.
// Q: Why don't we just do that in the step above?
// A: I'm not really sure why, but iOS8 doesn't like it. Sorry this is so ugly.
var Sprite = document.getElementById( 'audio_Sprite' );
Sprite.src = 'my-audio-Sprite.mp3';

// Once the metadata is loaded, call play/pause so we can play the audio later.
Sprite.addEventListener('loadedmetadata', function() {
    Sprite.play();
    Sprite.pause();
});

Meiner Meinung nach sollten beide funktionieren, in der Praxis jedoch nur der zweite für iOS8. Ich hoffe das hilft jemandem.

0
Matt Grande

Ich habe dieses Problem gelöst, indem ich das Video-Element gefunden habe und dann ein Quellelement in einem Skript (nicht in der HTML-Datei) erstellt habe.

var video = document.getElementById('theVideo');
var source = document.createElement('source');

source.src = fileLocation
source.type = "video/mp4"

video.appendChild( source );
video.load();

Ich akzeptiere auch, dass dies ein altes Problem ist, aber ich bin darauf gestoßen, als ich auf einem iPad getestet habe, auf dem iOS 8.0.2 installiert ist.

0
Chris