**Para funcionar corretamente baixe a atualização Prisma do dia 27/02/2017 ou superior.**
Atualizado – 27/02/2017
Agora ficou mais fácil embutir o player no igbr com um comando de alto nível, veja:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
local ig = inclua'igbr' local vlc = inclua 'vlc' jan = ig.janela("Teste vlc", 700,500); ig.conecte_permutado(jan,ig.destruido, executestring,'ig.fimjanela()'); fixo = ig.fixo(); ig.ad(jan,fixo); obj = vlc.crie(); video = vlc.player(jan, obj); ig.componente_def_tamanho(video.area,300 , 200 ); ig.fixo_ad(fixo,video.caixa,40 , 100 ); ig.componente_mostre_todos(jan); ig.loop(); |
Detalhes:
1 2 |
obj = vlc.crie(); video = vlc.player(jan, obj); |
Criamos o objeto vlc, depois criamos o player completo passando a janela como primeiro parâmetro e o objeto como segundo. Se quiser deixe nulo no lugar da janela. O retorno é uma tabela que contém:
- video.area = área do vídeo
- video.midia_player = objeto mídia do vlc.
- video.caixa_botao = a caixa de botão onde estão o botão play e pare, se você quiser colocar mais botões.
- video.bt_parar = botão parar, caso queira modificá-lo.
- video.bt_tocar = botão de play.
- video.barramenu = é a barra de menu caso queira colocar mais menu.
- video.caixa = caixa vertical onde estão os menus, área de vídeo e caixa de botões, caso queira colocar mais componentes.
- video.menu_arquivo = menu principal ‘Arquivo’;
- video.menu_item_abrir = item abrir do menu ‘Arquivo’.
Caso não queira que esses componentes sejam criados basta passar falso no terceiro para menu e no quarto para os botões:
1 |
video = vlc.player(jan, obj,falso,falso); |
Ou verdadeiro no terceiro parâmetro para criar o menu ou no quarto para criar botões;
1 |
ig.componente_def_tamanho(video.area,300 , 200 ); |
Definimos o tamanho do player usando a variável video.area que é a área de vídeo.
1 |
ig.fixo_ad(fixo,video.caixa,40 , 100 ); |
Aqui, nós colocamos a caixa contendo o menu, área de vídeo e botões através do campo video.caixa dentro do fixo que é um contêiner do tipo posições fixas x/y.
1 2 |
ig.componente_mostre_todos(jan); ig.loop(); |
Enfim, mostramos a janela com todos os componentes filhos e iniciamos o laço de eventos do igbr.
Veja o resultado:
Versão 0.2 – 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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 |
//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.br4.biz/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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
//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:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 |
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.br4.biz/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); |