Jump to content
Belini

Incorporar libmpv no programa

Recommended Posts

Estou tentando incorporar um player no meu projeto mas todos que testei em Slave mode até agora não deram certo então me sugeriram incorporar libmpv  diretamente no código para ter aceso as funções porém nem sei por onde começar isto, alguém sabe como fazer e pode me dar as dicas de como fazer?

libmpv  https://github.com/mpv-player/mpv-examples/tree/master/libmpv#methods-of-embedding-the-video-window

Share this post


Link to post
Share on other sites

É o link da biblioteca que me passaram da biblioteca e não sei como fazer para incluir esta biblioteca usando Autoit.

Share this post


Link to post
Share on other sites

Poderia ser outra biblioteca sim menos a do Mplayer pois usando ele no modo slave tive problemas com alguns vídeos no windows xp, usando a winmm.dll também não resolve pois estou tentando incluir um player externo no modo slave ou uma biblioteca justamente para não usar mais as funções da winmm.dll e nem player embutido com funções de objeto.

Obs: A biblioteca do vlc talvez fosse ate melhor que esta do mpv pois o player vlc atualmente tem muito mais funcoes que ele e atualizacoes constantes.

Share this post


Link to post
Share on other sites

Peguei esse aqui do fórum americano

Não está com as configurações ajustadas mas vale um teste. Se chegar perto do que você está precisando a gente pode explorar as opções

Baixa a versão 32Bits desse link: https://mpv.srsfckn.biz/

Extraia o arquivo baixado,  crie e execute o código abaixo na mesma pasta

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

Dim $sStream = "http://distribution.bbb3d.renderfarming.net/video/mp4/bbb_sunflower_1080p_60fps_normal.mp4"

Dim Const $hWnd_Main = GUICreate("MPV Test", 640, 360, -1, -1)
GUISetState(@SW_SHOW)

Dim $iPID = Run(@ScriptDir & '\mpv.exe --wid="' & $hWnd_Main & '" "' & $sStream & '"')

While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
        Case $GUI_EVENT_CLOSE
            Exit
    EndSwitch
WEnd

 

Edited by Rodrigo Chaves Neto

Share this post


Link to post
Share on other sites

Este eu já havia visto e testado mas este script simplemente imbute a janela do Mpv na fui criada em autoit mas não tem como enviar comandos pra ele pois o modo slave do mpv foi desativando há um bom tempo atras, pra conseguir usar o mvp tem é que conseguir adicionar a biblioteca dele no script mesmo, a libmpv que falei no início do tópico e preciso de dicas pois não sei nada de como adicionar biblioteca no programa.

Share this post


Link to post
Share on other sites

Encontrei o script Autoit que integra scripts Lua

Encontrei o script Lua que integra o libmpv.

Mas não consegui utilizar. Alguns parametros no player (mpv.exe) eu consegui fazer funcionar mas a maioria não.

Se quiser eu te passo o material que eu encontrei. Baixei os arquivos do repositorio do GitHub que você passou e encontrei na pagina do help da biblioteca libmpv de como utilizar scripts Lua na biblioteca

Share this post


Link to post
Share on other sites
7 minutes ago, Rodrigo Chaves Neto said:

Legal. Obrigado

Eh possível incorporar muita coisa

Vou postar um exemplo de como incorporar o word na Gui do autoit

ah, o word acho que tem uma udf no autoit.

A UDF que usava windows media player, incorporava o internet explorer na janela e por lá chamava o windows media player, mas esse modo aí a dependência é só windows media player e os plugins

Edited by Pedro Pinheiro

Share this post


Link to post
Share on other sites

@Pedro Pinheiro da forma que vc fez não usa funções de objeto? Dá prá usar em modo slave? A janela fica imbutida sem os controles do média player? As teclas de atalho ficam desabilitadas e só recebe comandos do script? Pode postar um exemplo de como fez?

Share this post


Link to post
Share on other sites
On 01/12/2019 at 5:43 PM, Rodrigo Chaves Neto said:

Tendi. O código abaixo usa o ActiveX do WMPlayer.OCX.7 Acho que é esse mesmo que você está citando mas se quiser testar mesmo assim...

https://1drv.ms/u/s!AnsPM67Cyv4Xj9olB5qKxLoHOqDjWA?e=WecY2l

Olá Rodrigo baixei o seu código prá testar mas aqui deu dois erros

"D:\UDF_VideoPlayer.au3"(23,29) : warning: $hWnd_Player: possibly used before declaration.
Dim $WMPlayer = $hWnd_Player

"D:\UDF_VideoPlayer.au3" (28) : ==> Variable cannot be accessed in this manner.:
$WMPlayer()
$WMPlayer^ ERROR

 

Share this post


Link to post
Share on other sites
21 minutes ago, Belini said:

Olá Rodrigo baixei o seu código prá testar mas aqui deu dois erros

"D:\UDF_VideoPlayer.au3"(23,29) : warning: $hWnd_Player: possibly used before declaration.
Dim $WMPlayer = $hWnd_Player

"D:\UDF_VideoPlayer.au3" (28) : ==> Variable cannot be accessed in this manner.:
$WMPlayer()
$WMPlayer^ ERROR

 

Deve ser a versão do Autoit

Para funcionar em versões mais antigas você pode apagar a linha 23:

Dim $WMPlayer = hwnd_Player

E a linha 28:

$WMPlayer()

Em lugar dessas linhas apagadas você pode fazer a chamada direto na função:

hWnd_Player()

#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <WinAPIDiag.au3>
#include <WinAPIMisc.au3>

;Control Video File
Dim $f_Video
;Create Player Object
Dim $oWMPlayer = ObjCreate("WMPlayer.OCX.7")
;Define Player Size
Dim $_Width = 640, $_Height = 360
;Control Video Player
Dim $WMPlayer = hWnd_Player ################## Excluir
;Extract Demo Video
_Extract_Video(True)

;Start Player Video
$WMPlayer() ################### Excluir

Func hWnd_Player()
    $hWnd_Video = GUICreate("", $_Width, $_Height, -1, -1, $WS_POPUPWINDOW)
    $objActiveX = GUICtrlCreateObj($oWMPlayer, 0, 0, $_Width, $_Height)
    $oWMPlayerEvt = ObjEvent($oWMPlayer, "MediaPlayer_")

 

Share this post


Link to post
Share on other sites

Meu teclado não tem funções de atalho para controle do player.

Então não consigo testar se os controles serão desabilitados. Mas vc pode controlar o player pelo objeto $oWMPlayer

Eu coloquei algumas propriedades

With $oWMPlayer ; Object tag pool
        .fullScreen = False
        .windowlessVideo = True
        .stretchToFit = True
        .settings.playCount = 99999
        .URL = $f_Video
        .enableContextMenu = False
        .enabled = False
        .Controls.currentPosition = 0 ; Move to location in movie
        .Controls.Play ;/ Pause and Stop
        .uiMode = "none" ; none / mini full
        .settings.autostart = True
        .settings.mute = False
        .settings.volume = 0 ; 0 - 100
        .settings.Balance = 0 ; -100 a 100
    EndWith

Vc pode enviar instruções alterando os valores do objeto, por exemplo

Se vc quiser aumentar o volume do video vc faz executando do seguinte modo
$oWMPlayer.settings.volume = 20 ;Pra aumentar 20% o volume

Se vc quiser colocar o volume só no lado direito
$oWMPlayer.settings.balance = 100 

Deve haver mais propriedades no objeto que desativam teclas de atalho, caso elas estejam ativadas
Mas tem que olhar as propriedades do objeto usando o OLEView.exe

Pra encontrar esse executável vc abre o help do Autoit e seleciona a aba search
Digita OLEView.exe
Vai aparecer uma referencia: COM Reference
Ao abrir o arquivo de ajuda vá até o subtópico OLE/COM Object Viewer
Lá tem o endereço pra baixar o arquivo e instruções de como encontrar as propriedades do objeto

Share this post


Link to post
Share on other sites

Agora abriu aqui precisava mudar Dim $WMPlayer = $hWnd_Player para Dim $WMPlayer = $oWMPlayer e retirar o $ da chamada da função $WMPlayer() depois vou testar aqui e surgindo alguma dúvida vou te perguntando, já prá adiantar vc sabe qual comando posso alterar o aspect ratio da tela usando este exemplo seu?

Share this post


Link to post
Share on other sites
13 minutes ago, Belini said:

Agora abriu aqui precisava mudar Dim $WMPlayer = $hWnd_Player para Dim $WMPlayer = $oWMPlayer e retirar o $ da chamada da função $WMPlayer() depois vou testar aqui e surgindo alguma dúvida vou te perguntando, já prá adiantar vc sabe qual comando posso alterar o aspect ratio da tela usando este exemplo seu?

Legal, conseguiu resolver de outra forma!

Sobre o aspect ratio eu coloquei uma propriedade só
 

.stretchToFit = True

Essa propriedade preenche todo o espaço definido pela sintaxe abaixo

$objActiveX = GUICtrlCreateObj($oWMPlayer, 0, 0, $_Width, $_Height)

 

Share this post


Link to post
Share on other sites

É que alguns vídeos ficam com tarjas pretas em cima e em baixo ou dos lados aí preciso mudar o aspect ratio tipo 4:3, 5:4, 16:9, 16:10...

Share this post


Link to post
Share on other sites
Just now, Belini said:

É que alguns vídeos ficam com tarjas pretas em cima e em baixo ou dos lados aí preciso mudar o aspect ratio alguns tipo 4:3, 5:4, 16:9, 16:10...

Tendi.

Vc pode postar se for possivel o tamanho da janela e um video de exemplo?

Posso tentar encontrar os ajustes corretos

Share this post


Link to post
Share on other sites
Just now, Belini said:

É que alguns vídeos ficam com tarjas pretas em cima e em baixo ou dos lados aí preciso mudar o aspect ratio alguns tipo 4:3, 5:4, 16:9, 16:10...

Tendi.

Vc pode postar se for possivel o tamanho da janela e um video de exemplo?

Posso tentar encontrar os ajustes corretos

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now


×