Code: Select all
path_media$ = "path to video.mp4"
If FileSize(path_media$) < 1
MessageRequester("error", "video not exist...")
End
EndIf
path_libvlc$ = "C:\Program Files\VideoLAN\VLC\libvlc.dll"
If FileSize(path_libvlc$) < 1
MessageRequester("error", "libvlc.dll Not exist...")
End
EndIf
path_current_dir$ = GetCurrentDirectory()
SetCurrentDirectory(GetPathPart(path_libvlc$))
OpenLibrary(0,GetFilePart(path_libvlc$))
SetCurrentDirectory(path_current_dir$)
Global Semaphore = CreateSemaphore()
ProcedureC libvlc_video_lock_cb( *opaque, *planes.integer)
*planes\i = *opaque
EndProcedure
ProcedureC libvlc_video_unlock_cb( *opaque, *picture, *planes.integer)
EndProcedure
ProcedureC libvlc_video_display_cb( *opaque, *picture)
SignalSemaphore(Semaphore)
EndProcedure
imagewidth = 800
imageheight = 600
sizepixel = 4
imagepitch = imagewidth * sizepixel
*imagepixels = AllocateMemory(imagewidth * imageheight * sizepixel )
CreateImage(0 , imagewidth, imageheight, sizepixel * 8)
Dim arg(4):arg(0) = UTF8("-vvv"):arg(1) = UTF8("--no-audio"):arg(2) = UTF8("--no-xlib")
libvlc = CallCFunction(0,"libvlc_new",3,@arg())
libvlc_media = CallCFunction(0,"libvlc_media_new_path",libvlc,UTF8(path_media$))
libvlc_media_player = CallCFunction(0,"libvlc_media_player_new_from_media",libvlc_media)
CallCFunction(0,"libvlc_media_release",libvlc_media)
CallCFunction(0,"libvlc_video_set_format",libvlc_media_player,UTF8("RV32"), imagewidth, imageheight, imagepitch)
CallCFunction(0,"libvlc_video_set_callbacks",libvlc_media_player, @libvlc_video_lock_cb(),
@libvlc_video_unlock_cb(), @libvlc_video_display_cb() , *imagepixels)
CallCFunction(0,"libvlc_media_player_play",libvlc_media_player)
WaitSemaphore(Semaphore)
StartDrawing(ImageOutput(0))
pixel2 = imagewidth*imageheight
pixel = 0
dbuff = DrawingBuffer()
For i = 1 To imageheight
pixel2 - imagewidth
CopyMemory(*imagepixels+(pixel2*sizepixel),dbuff+(pixel*sizepixel),imagewidth*sizepixel)
pixel + imagewidth
Next
StopDrawing()
SaveImage(0,"image.bmp")
CallCFunction(0,"libvlc_media_player_stop",libvlc_media_player)
CallCFunction(0,"libvlc_media_player_release",libvlc_media_player)
CallCFunction(0,"libvlc_release",libvlc)