Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Leo KW

[Resolvido] Video externo começando sem volume

Recommended Posts

Fala galera,

 

Eu criei um player de vídeo dinâmico, em que o vídeo FLV é puxado via AS, até ai beleza, porém meu cliente pediu que o vídeo começasse sem volume, caso o usuário quiser ele próprio almentaria o som.

 

Já tentei pesquisar em vários lugares e usar o meu leve conhecimento em FLASH e até agora nada...kkkk

 

Segue abaixo o AS usado para puxar o vídeo:

 

//configuração do palco...
//não necessário, fica a gosto...
this.mcVolumeControl2._visible = false;
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 mcVolumeControl2: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 somVideo: Number = 0;
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...
mcVolumeControl2.setVolumeObject(somVideo);
//por fim damos load e play em nosso video...
setVideo("video1.flv");
onEnterFrame = function (){
   if (isPlay == false){
       if (press_Stop == false){
           isPlay = true;
           netStmVideo.pause(false);
           btPlayPause.gotoAndStop(2);
       }
   }
   if (placa_video.hitTest(_root._xmouse, _root._ymouse))     {
       btStop._visible = true;
       btPlayPause._visible = true;
       //mcVolumeControl2._visible = true;
       return;
   }
   btStop._visible = false;
   btPlayPause._visible = false;
   mcVolumeControl._visible = false;
mcVolumeControl2._visible = false;
};

 

Valeu desde já!

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não concordo com a idéia do seu cliente, dependendo do usuário quando abrir o vídeo e não escutar nada, pode imaginar que o vídeo não tem áudio...

No mais, você tem um objeto controlador de volume então basta setar neste o volume em "0" utilizando para isso o método "setVolume"

 

Att.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Eu também não concordei com meu cliente, mas não consegui faze-lo mudar de idéia.

 

Eu coloco esse setVolume em qual parte do código? Ficaria mais ou menos assim?

 

this.setVolume(0);

 

E fazendo isso, a barrinha de volume já começa abaixada também??

 

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Basicamente sim, mas tem que ver como está o código do objeto controlador do volume do seu player...

Está assim:

 

//classe do controle do volume, trabalharemos como se fosse uma scroll de texto na horizontal...
//
dynamic class VolumeControl extends MovieClip {

//declarando variáveis utilizadas dentro do mc...
private var btVolume:MovieClip;
private var mcSeekVolume:MovieClip;
private var somVideo:Sound;

function VolumeControl(){
}

//função que passa ao mcVolumeControl onde achar o objeto do volume...
public function setVolumeObject(som:Sound):Void
{
	somVideo = som;
}

//função responsável por atualizar o volume...
public function atualizaVolume():Void
{
	//calculando volume...
	var v:Number = Math.round((btVolume._x / mcSeekVolume._width) * 100);
	//por fim setando o volume no objeto som de nosso player...
	somVideo.setVolume(v);
}

//função de inicio do mc, assim ja declara as ações de cada objeto...
private function onLoad():Void
{
	//posicionando o bt arrastavel no final da bar ou em 100% de volume...
	btVolume._x = mcSeekVolume._width;
	//adicionando ação de drag ao botão...
	btVolume.onPress = function():Void
	{
		//definindo ação de drag (arrastar) ao botão, onde a largura do mcSeekVolume._width e a area que ele possui a ser arrastável...
		this.startDrag(false, 0, 0, (this._parent.mcSeekVolume._width), 0);
		//ação monitor de setar o volume a medida que a barrinha e mexida...
		//esta classe mx.utils.Delegate e um utilitário para controle de funções em outros escopos, ou seja eu de dentro do botão ativo a função na classe...
		this.onMouseMove = mx.utils.Delegate.create(this._parent, this._parent.atualizaVolume);
		//parando monitor de volume e drag do botão...
		this.onRelease = this.onReleaseOutside = function():Void
		{
			this.stopDrag();
			delete this.onMouseMove;
		}
	}
}

}

 

Nessa parte somVideo.setVolume(v); eu troquei o v para 0 e não adiantou!

 

Abraços,

Léo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Então para testar, dentro da função "onLoad", altere o tamanho da barra de volume para um valor menor;

Acredito que mesmo setando o "setVolume" em "0", a função "onLoad" na sequência atualiza o volume para 100% que é o tamanho inicial da barra de ajuste...

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.