Para funcionar corretamente baixe a atualização Prisma do dia 7/09/15 ou superior.
Download: http://linguagemprisma.br4.biz/blog/igvlc-biblioteca-audio-e-video-basica/ (http://linguagemprisma.br4.biz/blog/igvlc-biblioteca-audio-e-video-basica/)
(http://i2.wp.com/linguagemprisma.net/blog/wp-content/uploads/2015/09/vlcplayer.png?zoom=1.5&resize=300%2C214)
Versão 0.1 – igvlc.dll e vlc.pris são as bibliotecas de funções para criação de players de música e vídeo em Prisma:
Para usar basta instalar a lib igvlc, e no início de seu programa incluir o comando: inclua'vlc' ;
O tamanho dessa lib é um pouco extenso devido a pasta de plugins, cerca de 17MB compactado em 7z. A vantagem é que muitos formatos de áudio e vídeo podem ser tocados sem problemas, desde um simples mp3 até mp4 ou avi.
Arquivos locais ou de servidores podem ser abertos com as funções:
midia = vlc.midia_com_arquivo( inst_vlc , 'nome.avi') //local
midia = vlc.midia_locacao( inst_vlc , 'http//site.net/arquivo.mp4′ );
Comece já a criar seu próprio player.
Exemplo de áudio sem interface gráfica:
Prisma
vlc = inclua'vlc'
// criando uma instancia (objeto) vlc
inst = vlc.crie();
// crie uma midia a partir de um arquivo
m = vlc.midia_com_arquivo(inst, "teste.mp3");
//experimente tambem criar a partir de uma url:
//m = vlc.midia_locacao( inst , 'http://nome_site.net/destino/musica.mp3')
// crie um player a partir da midia criada acima.
mp = vlc.midia_player_com_midia(m);
// nao precisamos mais da midia, entao liberamos da memoria:
vlc.midia_destrua(m);
// comeca a tocar o player
vlc.midia_player_play(mp);
sis.durma(20000); //espera por 20 segundos, enquanto toca a musiquinha
// parando a musica
vlc.midia_player_pare(mp);
// liberando da memoria o player e a instancia:
vlc.midia_player_destrua(mp);
vlc.destrua(inst);
Exemplo de áudio com interface:
Prisma
//simples player por Adalberto AF
//licença: livre para usar, modificar, comercializar.
//primeiro vamos importar as bibliotecas necessárias:
inclua'igbr'; //esta para interface gráfica
vlc = inclua'vlc'; //esta para multimídia
//crie uma janela com titulo, largura e altura:
janela = ig.janela('teste audio' , 500 , 250 );
ig.janela_destrua( janela ); //para fechar corretamente
//crie um conteiner fixo para adicionar os componentes
fixo = ig.fixo();
ig.ad( janela , fixo); //ad(icionando) na janela;
//crie um objeto vlc para suportar o áudio:
vlc_objeto = vlc.crie();
//carregando uma midia de um arquivo
//midia = vlc.midia_com_arquivo(vlc_objeto, 'teste.mp3');
//voce pode passar uma url assim:
midia = vlc.midia_locacao( vlc_objeto , 'http://linguagemprisma.net/music/teste.mp3' )
//agora crie o player a partir da midia carregada.
midia_player = vlc.midia_player_com_midia(midia);
//crie as funcoes de play, pare, pause, def_volume
funcao play()
vlc.midia_player_play(midia_player);
fim
funcao pare()
vlc.midia_player_pare( midia_player);
fim
funcao pause()
vlc.midia_player_pause(midia_player);
fim
funcao def_volume(escala)
local valor = ig.escala_obt_valor(escala);
vlc.midia_player_def_volume(midia_player,valor);
fim
//crie os botoes e conecte às funcoes acima
bt_play = ig.botao_estoque( ig.estoque_play_midia);
ig.fixo_ad( fixo , bt_play , 10 , 100 );
ig.conecte_funcao( bt_play , ig.clique , play );
bt_pare = ig.botao_estoque( ig.estoque_parar_midia);
ig.fixo_ad( fixo , bt_pare , 100 , 100 );
ig.conecte_funcao( bt_pare , ig.clique , pare );
bt_pause = ig.botao_estoque( ig.estoque_pausar_midia);
ig.fixo_ad( fixo , bt_pause , 200 , 100 );
ig.conecte_funcao( bt_pause , ig.clique , pause );
volume = ig.escalah_com_limite( 0 , 300 , 10 );
ig.escala_def_valor( volume , 100 );
ig.componente_def_tamanho( volume , 100 , 40 );
ig.fixo_ad( fixo , ig.rotulo'Volume' , 300 , 80 )
ig.fixo_ad( fixo , volume , 300 , 90 );
ig.conecte_funcao( volume , ig.valor_mudado , def_volume );
ig.botao_mostre_imagem( verdadeiro ); //torna as imagens visiveis nos botoes
ig.componente_mostre_todos(janela);
ig.fimprograma();
//para fechar corretamente, libere a memoria depois o loop de eventos:
//destruindo o player e o objeto vlc:
vlc.midia_player_destrua(midia_player);
vlc.destrua( vlc_objeto);
Exemplo vídeo:
Player vlc usando ig e igvlcPrisma
//simples player por Adalberto AF
//licença: livre para usar, modificar, comercializar.
//primeiro vamos importar as bibliotecas necessárias:
inclua'igbr'; //esta para interface gráfica
inclua'vlc'; //esta para multimídia
//crie uma janela com titulo, largura e altura:
janela = ig.janela('teste video' , 500 , 250 );
ig.janela_destrua( janela ); //para fechar corretamente
//crie um conteiner vertical:
//caixav = ig.caixavertical(falso,0);
fixo = ig.fixo();
ig.ad( janela , fixo); //ad(icionando) na janela;
//crie uma area para desenhar o vídeo:
area_video = ig.desenho_area();
ig.componente_def_tamanho( area_video , 300 , 200 );
ig.fixo_ad(fixo , area_video, 1,1);//colocando a area na caixa vertical
//de uma cor preta inicial para a area do vídeo:
cor_preta = ig.cor_analise(ig.preto);
ig.componente_modifique_corfundo(area_video , ig.estado_normal, cor_preta );
//crie um objeto vlc para suportar o vídeo:
vlc_objeto = vlc.crie();
//agora crie o player a partir do objeto e um arquivo:
midia_player = vlc.midia_player_com_arquivo( vlc_objeto, "teste.mp4");
//crie uma função para exibir o vídeo na area de vídeo criada acima
funcao player_mostre_video( compo , player)
//colocando o player na area de vídeo:
vlc.midia_player_def_hwnd( midia_player , area_video );
//o hwnd é um numero identificador para o componente area_video em windows.
fim
//agora conecte a funcao acima no evente realize
ig.conecte_funcao( area_video , ig.realize ,player_mostre_video , nulo );
funcao play()
vlc.midia_player_play(midia_player);
fim
play();
ig.componente_mostre_todos(janela);
ig.fimprograma();
//para fechar corretamente, libere a memoria depois o loop de eventos:
//destruindo o player e o objeto vlc:
vlc.midia_player_destrua(midia_player);
vlc.destrua( vlc_objeto);
Exemplo de vídeo um pouco mais complexo:
Prisma
inclua'igbr'
vlc = inclua'vlc';
ig.botao_mostre_imagem(verdadeiro);
janela = ig.janela("Teste Video" , 600, 400 ); //criando a janela
ig.janela_destrua(janela); //fecha o aplicativo corretamente
caixavertical = ig.caixavertical(falso , 0 ); //cria uma caixa vertical
ig.ad( janela , caixavertical); //adiciona a caixa na janela
player = ig.desenho_area();
ig.ad( caixavertical , player );
cor_preto = ig.cor_analise(ig.preto);
ig.componente_modifique_corfundo ( player , ig.estado_normal , cor_preto );
//definindo a cor preta do video
vlc_inst = vlc.crie();
se args[1] entao
midia_arquivo = args[1]
senao
midia_arquivo = "teste.mp4";
fim
//primeiro criamos uma midia passando a instancia vlc e o nome do arquivo
m = vlc.midia_com_arquivo(vlc_inst, midia_arquivo);
//m = vlc.midia_locacao( vlc_inst , "http://linguagemprisma.net/canto/video/Eis-a-oferta-mais-aceita-do-Senhor.mp4");
//depois criamos um player com a midia do arquivo
midia_player = vlc.midia_player_com_midia( m);
vlc.midia_destrua(m); //nao precisamos mais da midia entao liberamos da memoria;
//outra forma mais fácil seria:
//midia_player = vlc.midia_player_com_arquivo ( vlc_inst, midia_arquivo);
//esta funcao exibe a midia no componente drawing_area (desenho_area)
funcao player_componente_ao_exibir( compo , midia_player)
vlc.midia_player_def_hwnd( midia_player, compo );
fim
//iniciando o player:
funcao play()
vlc.midia_player_play(midia_player);
fim
//parando o player:
funcao pare()
vlc.midia_player_pare(midia_player);
fim
//pausando o player:
funcao pause()
vlc.midia_player_pause( midia_player );
fim
//obtendo e mostrando algumas informações do arquivo:
funcao mostre_info()
vlc.midia_player_pause(midia_player);
local tmp_total = vlc.midia_player_obt_tamanho(midia_player) / 1000 ;
local pos = vlc.midia_player_obt_posicao ( midia_player )*100;
pos = string.formate( "%.2f" , pos); //força 2 casas apos o ponto decimal
local tempo = vlc.midia_player_obt_tempo( midia_player) / 1000;
ig.msg( janela , "INFORMAÇÃO" ,
'Este vídeo tem: ' .. tmp_total .. ' seconds de duração' ..
"\nEste vídeo está em " .. pos .. " por cento visualizado" ..
"\nEstá no tempo: " .. tempo .. " segundos"
);
vlc.midia_player_play(midia_player);
fim
funcao aumente_volume()
local vol = vlc.midia_player_obt_volume( midia_player )
se vol <> 400 entao
vlc.midia_player_def_volume( midia_player, vol + 5 );
fim
se vol <> -1 entao
ig.rotulo_def_texto( rot_volume , convstring(vol) );
fim
fim
funcao diminua_volume()
local vol = vlc.midia_player_obt_volume( midia_player )
se vol <> 0 entao
vlc.midia_player_def_volume( midia_player, vol - 5 );
fim
se vol <> -1 entao
ig.rotulo_def_texto( rot_volume , convstring(vol) );
fim
fim
funcao cb_escala( escala )
local estado = vlc.midia_player_obt_estado( midia_player);
se estado <> 3 entao //se nao estiver rodando (pausado por exemple)
vlc.midia_player_def_posicao( midia_player , ig.estensor_obt_valor(escala) );
fim //se
fim
//escala_com_limite ( inicial , final , incremento )
escalah = ig.escalah_com_limite( 0 , 1 , 0.0001 );
ig.caixa_ad(caixavertical , escalah , falso , falso , 0 );
ig.conecte_funcao( escalah , 'value-changed' , cb_escala , nulo);
ig.conecte_funcao(escalah , ig.dentro , enter_esc , nulo);
caixah = ig.caixahorizontal(falso,0);
ig.caixa_ad( caixavertical , caixah , falso , falso , 0);
bt_play = ig.botao_estoque( ig.estoque_play_midia) ;
ig.conecte_funcao( bt_play , ig.clique , play , nulo );
ig.caixa_ad ( caixah , bt_play , falso , falso , 2 );
bt_pause = ig.botao_estoque( ig.estoque_pausar_midia);
ig.conecte_funcao( bt_pause , ig.clique , pause , nulo );
ig.caixa_ad( caixah , bt_pause , falso , falso , 2 );
bt_pare = ig.botao_estoque(ig.estoque_parar_midia);
ig.conecte ( bt_pare , ig.clique , 'pare()' );
ig.caixa_ad ( caixah , bt_pare , falso , falso , 2);
bt_info = ig.botao('informação');
ig.conecte ( bt_info , ig.clique , 'mostre_info()' );
ig.caixa_ad( caixah , bt_info , falso , falso , 2 );
bt_vol_max = ig.botao('volume + ');
ig.conecte( bt_vol_max , ig.clique , 'aumente_volume()');
ig.caixa_ad( caixah , bt_vol_max , falso , falso , 2 );
rot_volume = ig.rotulo'--'
ig.caixa_ad( caixah , rot_volume , falso , falso , 1 );
bt_vol_min = ig.botao("volume - ");
ig.conecte( bt_vol_min , ig.clique , 'diminua_volume()');
ig.caixa_ad( caixah , bt_vol_min , falso , falso , 2);
funcao voltar()
local tmp = vlc.midia_player_obt_tempo( midia_player);
se pos <> 0 entao
vlc.midia_player_def_tempo( midia_player , tmp - 2000 );
fim
fim
funcao avancar()
local tmp = vlc.midia_player_obt_tempo( midia_player);
se pos <> vlc.midia_player_obt_tamanho(midia_player) entao
vlc.midia_player_def_tempo( midia_player , tmp + 2000 );
fim
fim
bt_voltar = ig.botao'<';
ig.conecte( bt_voltar , ig.clique , 'voltar()' );
ig.caixa_ad( caixah , bt_voltar , falso , falso , 2);
bt_avancar = ig.botao('>');
ig.conecte( bt_avancar , ig.clique , 'avancar()');
ig.caixa_ad(caixah , bt_avancar , falso , falso , 2);
//conecta a funcao que mostra o vídeo na janela.
ig.conecte_funcao( player, ig.realize ,player_componente_ao_exibir, midia_player );
se args[1] entao play(1) fim;
// IDLE = 0 , CLOSE=0, OPENING=1, BUFFERING=2, PLAYING=3, PAUSED=4, STOPPING=5, ENDED=6, ERROR=7
estados = { [0] = 'idle/fechado' , 'abrindo' , 'bufferizando' , 'rodando' , 'pausado' , 'finalizado' , 'tendo erro' };
funcao execute_temp()
// sis.execute'cls'
local tempo = vlc.midia_player_obt_tempo(midia_player) / 1000;
local tam = vlc.midia_player_obt_tamanho(midia_player)/1000;
ig.janela_def_titulo( janela , "Tempo: " .. tempo .. ' de ' .. tam );
//imprima( vlc.midia_player_obt_rate(midia_player) ); //obtem o rate (a taxa)
//imprima( vlc.midia_player_obt_midia( midia_player) ); //obtem a midia definida no player
imprima( vlc.midia_player_obt_hwnd( midia_player ) );
local stat = vlc.midia_player_obt_estado( midia_player)
imprima('o video esta' , estados[ stat ] , stat );
imprima('fps:' , vlc.midia_player_obt_fps(midia_player) );
imprima('n titulos' , vlc.midia_player_obt_titulos_quantos(midia_player) );
imprima('posicao em porcentagem do video' , vlc.midia_player_obt_posicao(midia_player) );
se stat == 3 entao ig.estensor_def_valor( escalah , vlc.midia_player_obt_posicao(midia_player) );
fim
fim
temporizador_1 = ig.temporizador( 1 , 100, janela , "execute_temp()" );
ig.temporizador_inicie( temporizador_1 , janela);
ig.componente_mostre_todos(janela);
ig.fimprograma ();
vlc.midia_player_destrua(midia_player);
vlc.destrua(vlc_inst);
Bom, é isso aí, espero que seja útil, até logo.