Ch4p0L1N 0 Denunciar post Postado Outubro 20, 2009 Olá, estou usando um player flv em meu site que foi feito baseado no tutorial do iMasters (http://imasters.com.br/artigo/3808/flash/criando_um_videoplayer_de_flv_no_flash_parte_2/) e nele tem o seguinte código: //este if server para verificar se o filme ja acabou, rebobinando o mesmo... if(info.code == "NetStream.Buffer.Flush"){ netStmVideo.play(videoAtual); stopVideo(); } Adicionei algumas coisas dentro desse if para acontecer quando o vídeo terminar, só que alguns segundos finais do vídeo sempre são cortados, normalmente o vídeo encerra 5 segundos antes, a solução que tenho usado é adicionar 5 segundos a mais no vídeo sem conteúdo nenhum, mas gostaria de uma solução no próprio código para não ter que ficar editando cada vídeo que preciso colocar, alguém tem alguma ideia de como resolver isso? Obrigado Compartilhar este post Link para o post Compartilhar em outros sites
Leo KW 0 Denunciar post Postado Outubro 20, 2009 Olá, estou usando um player flv em meu site que foi feito baseado no tutorial do iMasters (http://imasters.com.br/artigo/3808/flash/criando_um_videoplayer_de_flv_no_flash_parte_2/) e nele tem o seguinte código: //este if server para verificar se o filme ja acabou, rebobinando o mesmo... if(info.code == "NetStream.Buffer.Flush"){ netStmVideo.play(videoAtual); stopVideo(); } Adicionei algumas coisas dentro desse if para acontecer quando o vídeo terminar, só que alguns segundos finais do vídeo sempre são cortados, normalmente o vídeo encerra 5 segundos antes, a solução que tenho usado é adicionar 5 segundos a mais no vídeo sem conteúdo nenhum, mas gostaria de uma solução no próprio código para não ter que ficar editando cada vídeo que preciso colocar, alguém tem alguma ideia de como resolver isso? Obrigado Oba, suables? Faz assim, primeiro instancia o seu player de my_FLVPlybk. E cria uma action com esse código: stop(); var listenerObject = new Object(); listenerObject.stopped = function(eventObject) { //coloka aki a açao qdo o video terminar }; my_FLVPlybk.addEventListener("stopped",listenerObject);Se funcionar de um sorriso de orelha a orelha...senão posta aki de novo que ajudaremos! \o/ ;) Compartilhar este post Link para o post Compartilhar em outros sites
Ch4p0L1N 0 Denunciar post Postado Outubro 20, 2009 Não funcionou =/ segue o AS completo: //configuração do palco... //não necessário, fica a gosto... Stage.align = "MC"; Stage.scaleMode = "noScale"; fscommand("allowscale", "false"); fscommand("fullscreen", "false"); _quality = "BEST"; //iniciando projeto... //declarando variáveis... var display:Video; var videoAtual:String = null; var tempoAtual:Number = 0; var isPlay:Boolean = false; //botoes e mcs do player... var mcVolumeControl:MovieClip; var btPlayPause:MovieClip; var btStop:MovieClip; //som para o controle do volume do player... var somVideo:Sound = new Sound(); //criando conexao do stream de video... var netConVideo:NetConnection = new NetConnection(); netConVideo.connect(null); //criando stream para ser usado na conexao... var netStmVideo:NetStream = new NetStream(netConVideo); //um pequeno buffer antes do filme começar... netStmVideo.setBufferTime(3); //objeto monitor de eventos do video... netStmVideo.onStatus = function(info):Void { //este if server para verificar se o filme ja acabou, rebobinando o mesmo... if(info.code == "NetStream.Buffer.Flush"){ netStmVideo.play(videoAtual); stopVideo(); } } //adicionando o stream ao nosso display no palco... display.attachVideo(netStmVideo); //função responsável por setar o video a ser carregado e tocado... function setVideo(src:String):Void { //caso o comando de tocar seja pra um video já sendo tocado, evita o recarregamento... if(videoAtual != src){ netStmVideo.play(src); //salva numa var, o video atual para posterior verificação... videoAtual = src; } else { //neste caso o video atual e o mesmo do comando, assim só recomeça a tocar... netStmVideo.seek(0); } //configurando player para que esteja tocando... btPlayPause.gotoAndStop(2); isPlay = true; } //função responsável pelo Play/Pause do filme... function PlayPause():Void { //verifica se o video esta tocando, caso sim, pausa... if(isPlay){ //salva o tempo atual para posterior continuação ao apertar em play... //esse menos 10 e para não haver corte e delay no tempo de apertar o botão... tempoAtual = netStmVideo.time - 10; netStmVideo.pause(true); isPlay = false; } else { //caso esteja parado continua a tocar da onde parou... isPlay = true; netStmVideo.pause(false); } } //função responsável pelo stop do filme... function stopVideo():Void { //resetando o tempo atual caso esteja em pause... tempoAtual = 0; netStmVideo.seek(0); netStmVideo.pause(true); isPlay = false; //joga o botão de play/pause para o frame do play... btPlayPause.gotoAndStop(1); } //setando ação dos botões... btStop.onRelease = stopVideo; btPlayPause.onRelease = function():Void { //verifica a atual situação para dizer se deve aparecer o play ou pause... if(isPlay && this._currentframe == 2){ this.gotoAndStop(1); } else { this.gotoAndStop(2); } //ativando a função PlayPause()... PlayPause(); } //passando ao mcVolume oque ele vai controlar... mcVolumeControl.setVolumeObject(somVideo); //por fim damos load e play em nosso video... setVideo("video1.flv"); Será que não tem como fazer algum esquema com setInterval? Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Outubro 20, 2009 Sabe qual seu erro? É que flush pode ser chamado a qualquer hora em um player... basta que por algum motivo o computador limpe a memoria rapida. E ai causa isso que você falou O correto é assim: function netStatusHandler(event:NetStatusEvent):void { trace(event.info.code); switch (event.info.code) { case "NetConnection.Connect.Success": //Ponha sua função de inicialização do play aqui break; case "NetStream.Play.StreamNotFound": traace("Stream not found"); break; case 'NetStream.Play.Stop': //video finished break; case 'NetStream.Buffer.Flush' : // your video is done playing break; case 'NetStream.Seek.Notify' : //Look seek break; } } Isso ai é uma chamada em AS 3.0 Veja ai como foi feita em AS 2.0 ;) E coloque as outras propriedades Funciona perfeitamente bem. Vide o player do http://www.adorocinema.com Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Ch4p0L1N 0 Denunciar post Postado Outubro 21, 2009 Opa, agora funcionou :) Mas na verdade só troquei o NetStream.Buffer.Flush do if pelo NetStream.Play.Stop que você postou nesse outro exemplo, ficou perfeito. Mto obrigado aos dois. Compartilhar este post Link para o post Compartilhar em outros sites