Войти

Показать полную графическую версию : [решено] Как скриптом проиграть видеофайл.


Vagac
25-11-2010, 22:47
Как скриптом проиграть видеофайл чтобы он открылся на полный экран.

Yashied
26-11-2010, 00:09
Здесь (http://autoit-script.ru/index.php?topic=2949.msg21364#msg21364)

Vagac
26-11-2010, 00:25
Спасибо за ответ а где взять <DSEngine.au3>

kaster
26-11-2010, 00:30
Vagac, там же под сообщением прикреплен файл. Правда я не уверен о доступности или видимости вообще без регистрации

Creat0R
26-11-2010, 00:36
не уверен о доступности или видимости вообще без регистрации »
Без регистраций видно вот что:

Внимание: Для просмотра прикреплённых файлов необходимо Войти (http://autoit-script.ru/index.php?PHPSESSID=l44fhtnnp4pegk7tlvetgmps25&action=login) или Зарегистрироваться (http://autoit-script.ru/index.php?PHPSESSID=l44fhtnnp4pegk7tlvetgmps25&action=register)

Vagac
26-11-2010, 00:38
Да спасибо там используется UDF.dll как ее вставить в скомпилированный скрипт

kaster
26-11-2010, 00:42
Vagac, компилированный на то и компилированный, что с ним уже ничего не поделаешь. если есть исходники вставляй в него библиотеки по схожему принципу, как указано в сообщении выше из соседнего форума

Vagac
26-11-2010, 00:49
Да нет я сам компиллю у меня скрипт отдельно UDF отдельно мне надо вставить UDF в скрипт чтобы не таскать с собой 2 файла вот например иконку я знаю как вставить вот так "#AutoIt3Wrapper_icon=Cons.ico"
а как вставить UDF не знаю.

yurfed
26-11-2010, 00:58
Creat0R, Странно, но у меня виден код.
#Include <DSEngine.au3>

$sFile = FileOpenDialog('Select Video File', @ScriptDir, 'Video Files (*.avi;*.mpg;*.wmv;*.mov;*.3gp;*.asf;*.mp4;*.flv;*.rv)')
If Not $sFile Then
Exit
EndIf

$hForm = GUICreate('MyGUI')
Engine_Startup(@ScriptDir & '\DSEngine_UDF.dll')
Engine_LoadFile($sFile, $hForm)
$aSize = Engine_GetVideoSize()
WinMove($hForm, '', (@DesktopWidth - $aSize[0]) / 2, (@DesktopHeight - $aSize[1]) / 2, $aSize[0], $aSize[1])
Engine_SetRects(0, 0, 0, 0, 0, 0, $aSize[0], $aSize[1])
GUISetState()

Engine_StartPlayback()

Do
Until GUIGetMsg() = -3

Engine_Shutdown()

kaster
26-11-2010, 01:02
yurfed, речь про файл. в коде он подключен как библиотека

Vagac, та что au3 библиотека, как мне известна при компиляции сама внедрится в скрипт, а вот dll все же придется за собой таскать. хотя, может и можно как то добавить в конец исполняемого файла или еще как. тут тебе только мастер может ответить Yashied ;)

Vagac
26-11-2010, 01:09
Engine_Startup(@ScriptDir & '\DSEngine_UDF.dll') ну правилино из папки скрипта экзешник и сам скрипт работает потому что DSEngine_UDF.dll находится в этой же папке а мне надо чтобы DSEngine_UDF.dll был вшит в скрипт я и спрашиваю можно ли как нибуд. перед компиляцией вставить с помощью AutoIt3Wrapper DSEngine_UDF.dll в скрипт потом скомпилить в один exe чтобы не таскать с собой DSEngine_UDF.dll

прошу прощения не заметил сообщения тогда другой вопрос если нельзя UDF встроить в exe есть ли какой нибудь способ проигрывать видео используя стандартные библиотеки Windows.

madmasles
26-11-2010, 01:56
Vagac,
потом скомпилить в один exe чтобы не таскать с собой DSEngine_UDF.dll
А в чем проблема:;...
FileInstall('DSEngine_UDF.dll', @TempDir & '\DSEngine_UDF.dll')
;...
;в конце
FileDelete(@TempDir & '\DSEngine_UDF.dll')

Yashied
26-11-2010, 02:52
Vagac, использовать DLL непосредственно из памяти, не распаковывая на диск, нельзя (по крайней мере не в AutoIt). Самый правильный вариант - это тот, который предложил madmasles. Воспользуйся им или таскай с собой DLL.

Vagac
26-11-2010, 10:03
#Include <DSEngine.au3>
FileInstall('DSEngine_UDF.dll', @TempDir & '\DSEngine_UDF.dll')
$sFile = FileOpenDialog('Select Video File', @ScriptDir, 'Video Files (*.avi;*.mpg;*.wmv;*.mov;*.3gp;*.asf;*.mp4;*.flv;*.rv)')
If Not $sFile Then
Exit
EndIf

$hForm = GUICreate('MyGUI')

Engine_Startup(@ScriptDir & '\DSEngine_UDF.dll')
Engine_LoadFile($sFile, $hForm)
$aSize = Engine_GetVideoSize()
WinMove($hForm, '', (@DesktopWidth - $aSize[0])/2 , (@DesktopHeight - $aSize[1])/2, $aSize[0], $aSize[1])
Engine_SetRects(0, 0, 0, 0, 0, 0, $aSize[0], $aSize[1])
GUISetState()

Engine_StartPlayback()

Do
Until GUIGetMsg() = -3

Engine_Shutdown()
FileDelete(@TempDir & '\DSEngine_UDF.dll')

После компиляции все равно не работает вываливается с ошибкой

madmasles
26-11-2010, 11:11
Vagac,
Поменяйте;...
Engine_Startup(@ScriptDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@scriptdir) & '\DSEngine_UDF.dll')
; на
Engine_Startup(@TempDir (http://www.autoitscript.com/autoit3/docs/macros.htm#@tempdir) & '\DSEngine_UDF.dll')
;...
Для кода: Au3ToPost - Инструмент для расскраски AutoIt-кода (http://autoit-script.ru/index.php/topic,117.0.html).

Vagac
26-11-2010, 20:14
Ладно всем спасибо за ответы и внимание к моим вопросам один из немногих форумов где так быстро и корректно отвечают.
А со скриптом я понял что нормально с помощью AutoIt этого не реализовать это мое субъективное мнение.
Еще раз спасибо.

Iska
26-11-2010, 22:35
я понял что нормально с помощью AutoIt этого не реализовать »Как скриптом проиграть видеофайл чтобы он открылся на полный экран. »
Command Line Options Available for Windows Media Player (http://support.microsoft.com/kb/241422/en-us)
Mplayer2.exe /play /fullscreen /close <Path to video file>

gregaz
27-11-2010, 10:20
Как скриптом проиграть видеофайл чтобы он открылся на полный экран. »
А со скриптом я понял что нормально с помощью AutoIt этого не реализовать »

Приблизительно так можно :


#include <GUIConstantsEx.au3>

$hForm = GUICreate('MyGUI',400,400)

$oWmp = _wmpcreate(1,5,5,390,240)
$oWmp.uiMode = "none"

$sFile = FileOpenDialog('Select Video File',"::{20D04FE0-3AEA-1069-A2D8-08002B30309D}", 'Video Files (*.*)')
If Not $sFile Then
Exit
EndIf
_wmploadmedia( $oWmp, $sFile )

While $oWmp.controls.currentPosition = 0
Sleep(100)
WEnd
$oWmp.fullscreen = "true"

$btExit = GUICtrlCreateButton("Exit", 340, -1,'', '')

GUISetState()

While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE,$btExit
Exit
EndSwitch
WEnd

Func _wmpcreate($show, $left, $top, $width = 100, $height = 100)
$oWMP = ObjCreate("WMPlayer.OCX")
If $oWMP = 0 Then Return 0
$oWMP.settings.autoStart = "False"
If $show = 1 Then
GUICtrlCreateObj($oWMP, $left, $top, $width, $height)
EndIf
Return $oWMP
EndFunc

Func _wmploadmedia( $object, $URL, $autostart = 1 )
$object.URL = $URL
While Not $object.controls.isAvailable("play")
Sleep(1)
WEnd
If $autostart = 1 Then $object.controls.play()
EndFunc

Источник (http://www.autoitscript.com/forum/index.php?showtopic=27352)

Vagac
27-11-2010, 14:06
Спасибо gregaz это то что нужно!!!




© OSzone.net 2001-2012