Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [mx2004pro] Riproduzione video e AS2

    ciao a tutti

    vorrei riprodurre dei video esterni in formato .flv, senza utilizzare i media component, utilizzando metodi e proprietà di AS2.

    vorrei dare un feedback all'utente per ciò che riguarda la percentuale di caricamento nel buffer, in modo che in quei pochi secondi non si abbia l'impressione che il filmato sia bloccato.

    L'assegnazione del "buffer time" funziona...l'ho impostato ad 8 secondi, trascorsi i quali il filmato parte regolarmente.

    codice:
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    ns.setBufferTime(8);
    var totale_buffer:Number = ns.bufferTime;
    var caricamento_buffer:Number= ns.bufferLength;
    my_video.attachVideo(ns);
    // my_video è un oggetto video sullo stage
    ns.play("movies/clipa.flv");
    ho inserito provvisoriamente, sullo stage, una casella di testo per fare una verifica ma nel campo si testo
    buffer_txt.text = caricamento_buffer;
    il valore resta sempre a zero.

    anche altre proprietà come NetStream.time che dovrebbe dirmi la posizione in secondi della "testina di riproduzione" lungo il video, mi dà sempre come valore 0

    da cosa potrebbe dipendere? c'è qualche errore nel mio script?
    grazie 1000 in anticipo per qualsiasi suggerimento.


  2. #2
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Devi inserire quei comandi in un ciclo:

    codice:
    var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    ns.setBufferTime(8);
    my_video.attachVideo(ns);
    // my_video è un oggetto video sullo stage
    ns.play("movies/clipa.flv");
    this.onEnterFrame = function()
    {
    	var totale_buffer:Number = ns.bufferTime;
    	var caricamento_buffer:Number= ns.bufferLength;
    }

  3. #3
    eh già...è vero...
    grazie infinite Negatyve.
    Era la classica soluzione perfettamente logica alla quale inspiegabilmente alle volte uno non pensa

    grazie ancora e buona giornata.

  4. #4
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Di niente, ciao..

  5. #5
    ciao mi ricollego alla domanda che ho postato alcuni giorni fa...perchè, anche se sto realizzando un altro prodotto, il problema riguarda sempre file video e as 2.

    risolto il problema precedente ora ho questo: non riesco a fermare il .flv.

    Questo lo script:
    codice:
    play_btn.onRelease = function() {
    	with (_root) {
    		var nc:NetConnection = new NetConnection();
    		nc.connect(null);
    		var ns:NetStream = new NetStream(nc);
    		ns.setBufferTime(10);
    		my_video.attachVideo(ns);
    		// my_video è un oggetto video sullo stage
    		ns.play("vangelo_HQ.flv");
    	}
    	onEnterFrame = function () {
    		var totale_buffer:Number = ns.bufferTime;
    		var caricamento_buffer:Number = ns.bufferLength;
    		var percentuale_buffer:Number = Math.round((caricamento_buffer/totale_buffer)*100);
    		perc_txt.text = percentuale_buffer+" %";
    		buffer_txt.text = "Buffering video: ";
    		if (percentuale_buffer>=100) {
    			onEnterFrame = undefined;
    			buffer_txt.text = "";
    			perc_txt.text = "";
    		}
    	};
    };
    stop_btn.onRelease = function() {
    	with (_root) {
    		ns.pause();
    		my_video.clear();
    	}
    };
    se faccio trace dell'oggetto ns (NetStream) alla pressione del tasto play, giustamente rilevo che è un oggetto...
    se lo facco sul tasto stop mi risulta undefined...perciò credo si tratti di un problema di percorsi nella funzione sul tasto stop...e ovviamente il filmato non si stoppa.
    L'errore di percorsi sembra essere confermato dal fatto che se il filmato lo faccio partire subito, in "automatico" (cioè senza mettere tutta la prima parte nella funzione lanciata dal tasto play)...allora lo stop funziona.

    non ci capisco più nulla con quesit percorsi...
    grazie ancora.

  6. #6
    Utente di HTML.it L'avatar di negatyve
    Registrato dal
    Feb 2001
    Messaggi
    9,479
    Prova così:

    [code]var nc:NetConnection = new NetConnection();
    nc.connect(null);
    var ns:NetStream = new NetStream(nc);
    ns.setBufferTime(10);
    my_video.attachVideo(ns);

    play_btn.onRelease = function() {
    // my_video è un oggetto video sullo stage
    ns.play("vangelo_HQ.flv");
    onEnterFrame = function ()
    {
    var totale_buffer:Number = ns.bufferTime;
    var caricamento_buffer:Number = ns.bufferLength;
    var percentuale_buffer:Number = Math.round((caricamento_buffer/totale_buffer)*100);
    perc_txt.text = percentuale_buffer+" %";
    buffer_txt.text = "Buffering video: ";
    if (percentuale_buffer>=100) {
    onEnterFrame = undefined;
    buffer_txt.text = "";
    perc_txt.text = "";
    }
    };
    };
    stop_btn.onRelease = function() {
    with (_root) {
    ns.pause();
    my_video.clear();
    }
    };/code]

  7. #7
    perfetto Negatyve...ancora una volta grazie
    leggendo la tua soluzione mi è venuto in mente che il problema è dovuto al fatto che la variabile ns era una variabile locale e quindi valeva solo all'interno della funzione.

    infatti se scrivo ns = new NetStream(nc); al posto di var ns:NetStream = new NetStream(nc); funziona (però così ho fatto un orrendo ibrido tra as1 e as2, perchè la variabile non è più tipizzata, altrimenti mi darebbe un errore).

    La soluzione migliore in questo caso è quella che hai proposto, cioè spostare parte del codice fuori dalla funzione.

    ma ,solo per capire, esiste un modo, con la sintassi di AS2, per dichiarare una variabile globale, che valga al di fuori della funzione?

    Grazie ancora.

  8. #8
    man mano che proseguo nell'applicazione saltano fuori nuove domande...
    non riesco a capire leggendo la documentazione come funziona l'evento onStatus...
    dovrei fare in modo che alla fine della riproduzione di un flv ne parta un altro...
    intanto continuo a cercare...
    grazie ancora

    [edit] non dovrebbe essere una cosa del genere?
    codice:
    ns.onStatus = function(info)
    {
    	if(info.code == "NetStream.Play.Stop"){
    		ns.play("video_soglia/video2.flv");
    	}
    };
    nonostante ciò, non parte il secondo filmato...

  9. #9
    dunque, scusate se intervengo progressivamente ma sto cercando di capire come funziona...
    l'evento fine filmato in sè viene intercettato infatti se scrivo
    codice:
    ns.onStatus = function(info) {
    	if (info.code == "NetStream.Play.Stop") {
    		trace("filmato finito");
    		ns.play("video_soglia/vangelo2.flv");
    	}
    };
    il trace alla fine c'è...
    però non parte il secondo flv...dov'è l'errore?

  10. #10
    mah...
    per ora l'ho risolto individuando con un trace quanto dura il primo flv e facendo partire il secondo quando viene raggiunto il numero di secondi in cui finisce il primo flv.
    E' una soluzione un pò empirica; la pubblico nel caso possa essere utile a qualcuno...
    Da inserire nell'Enter Frame del codice visto sopra:
    codice:
    		trace(Math.round(ns.time));
    		if (Math.round(ns.time) == 95) {
    			trace("filmato finito");
    			ns.play("video_soglia/vangelo2.flv");
    		}
    però sicuramente ci sarà un motivo per cui basandosi sull'evento onStatus la riproduzione non parte più.

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.