Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 04-01-2008, 16:01   #1 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 323
Was tun wenn FLVs blockieren?

Hallo Experten,

ich hoffe Ihr hattet alle einen guten Rutsch ins neue Jahr!
Bei mir beginnt das neue Jahr mit einem neue Flash-Problem.

Manchmal geschieht es, dass FLV, die ich von YouTube o.ä. downloade, wahrscheinlich aufgrund eines nicht einwandfreien timecodes die Wiedergabe über einen von mir erstellten Videoplayer blockieren.
Kann man so etwas wie eine Kontrolle einbauen (vielleicht gibt es einen listener) die eine function auslöst sobald sich das Video blockiert?

das AS meines Videoplayers
PHP-Code:
///////////
// Video //
///////////
var netConn:NetConnection = new NetConnection();
netConn.connect(null);
var 
netStream:NetStream = new NetStream(netConn);
myVideo.smoothing true;
myVideo.attachVideo(netStream);
netStream.play(videoFile);
netStream.setBufferTime(4);
netStream.pause(false);
netStream.seek(0);
netStream.onStatus = function(infoObject) {
    for (var 
propName in infoObject) {
        
//trace(propName+" = "+infoObject[propName]);
    
}
    if (
infoObject.code == "NetStream.Play.StreamNotFound") {
        
//trace("Konnte Videodatei nicht finden.");
        
timeLine._parent.nextContent();
    } else if (
infoObject.code == "NetStream.Buffer.Empty") {
        
//trace("Buffer noch nicht voll");
        //netStream.pause(true);
        
startBuffering();
    } else if (
infoObject.code == "NetStream.Buffer.Full") {
        
trace("Buffer voll und Start");
        
netStream.pause(false);
    } else if (
infoObject.code == "NetStream.Seek.InvalidTime") {
        
startBuffering();
    } else if (
infoObject.code == "NetStream.Play.Stop") {
        
trace(topicName+" Video End");
        
delete timeLine.onEnterFrame;
        
//setTimeout(function () {
        //timeLine._parent.nextContent();
        //}, 2000);
    
}
};
////////////////////
// Zeitberechnung //
////////////////////
netStream.onMetaData = function(video) {
    
duration video.duration;
};
function 
checkTime() {
    
//trace(Math.ceil(netStream.time)+" "+Math.ceil(duration));
    
if (Math.ceil(netStream.time) == Math.ceil(duration)) {
        
delete timeLine.onEnterFrame;
        
setTimeout(function () {
            
timeLine._parent.nextContent();
        }, 
2000);
    }
}
timeLine.onEnterFrame = function() {
        
checkTime();
    }; 
Ich hoffe Ihr könnt mir helfen!
__________________
MFG

poli-dori

MENS SANA IN CORPORE SANO

Geändert von poli-dori (04-01-2008 um 16:07 Uhr)
poli-dori ist offline   Mit Zitat antworten
Alt 07-01-2008, 09:09   #2 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 323
Hallo Leute,

ich habe zwar einen kleinen Workaround gefunden, aber trotzdem möchte ich wissen ob es eine Möglichkeit gibt, das korrekte abspielen des Videos zu kontrollieren.

Ich bin mir sicher jemand von Euch kennt die Lösung...

Ciao
__________________
MFG

poli-dori

MENS SANA IN CORPORE SANO
poli-dori ist offline   Mit Zitat antworten
Alt 22-01-2008, 09:22   #3 (permalink)
AE Freak
 
Benutzerbild von menonerd
 
Registriert seit: May 2002
Ort: HB
Beiträge: 100
hi poli,
mich quält ein ähnliches problem... magst du deinen workaround mit uns teilen? dieses problem scheint öfter aufzutreten.
cheers, m.
__________________
Do not resist to be.
menonerd ist offline   Mit Zitat antworten
Alt 24-01-2008, 06:53   #4 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 323
Hi,

mein Workaround ist alles andere als elegant, und ich kann mir gut denken, dass er nicht immer funktioniert.
Jedenfalls so sieht er aus:
PHP-Code:
if (infoObject.code == "NetStream.Buffer.Empty") {
    
trace("Buffer noch nicht voll");
    
startBuffering();
    
videoBlocked true;
} else if (
infoObject.code == "NetStream.Buffer.Full") {
    
trace("Buffer voll und Start");
    
timeTxt._visible true;
    if (
videoBlocked) {
        
netStream.seek(netStream.time+0.5);
        
videoBlocked false;
    }

Auf den ersten Blick sieht es aus, als ob dieser Workaround nur auf den Buffer reagiert, aber ich habe anhand von trace-Befehlen entdeckt, dass ich die selbe Fehlermeldung bekam, wenn eine FLV blockierte.
Jetzt werde ich noch einen Check einbauen, der das Abspielen über "duration" und "time" chronologisch überprüft.

Jedenfalls, wenn jemand besserer Lösung kennt, dann nennt sie uns bitte...
__________________
MFG

poli-dori

MENS SANA IN CORPORE SANO
poli-dori ist offline   Mit Zitat antworten
Alt 24-01-2008, 07:30   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2005
Beiträge: 323
Hi,

mein neuer Workaround sieht nun wie folgt aus:
PHP-Code:
///////////////////////
// Blockierkontrolle //
///////////////////////
oldTime 0;
checkTime setInterval(function () {
    if (
oldTime == netStream.time && oldTime>1) {
        
trace("Blocked");
        
netStream.seek(netStream.time+0.5);
    }
    
oldTime netStream.time;
}, 
250); 
__________________
MFG

poli-dori

MENS SANA IN CORPORE SANO
poli-dori ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 18:05 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele