Direct Show
Re: Direct Show
Natürlich hat DirectShow Funktionen. Die ruft man über Interfaces auf, genau wie bei DirectX. Lies dich doch einfach mal bei der MSDN ein. Eine einfache Funktionsliste nützt dir nix, wenn du wissen willst wies funktioniert. Den Link hast du ja selbst gepostet.
Zu mir kommen behinderte Delphine um mit mir zu schwimmen.
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!
Wir fordern mehr Aufmerksamkeit für umfallende Reissäcke!

Re: Direct Show
Welche Filter benötige ich für das Wiedergeben eines Video Streams?
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Re: Direct Show
Hab jetzt hier mal einen Directshow Code, jetzt muss das nur noch für das Video Streaming Optimiert werden bzw ich müsste wissen, welche Filter ich dazu ändern muss!
Wenn ich so einen Stream Wiedergebe kommt ein Fehler der durch Zeile 226 Verursacht wird.
Code: Alles auswählen
; DshowMedia.pbi v1.1 for Purebasic v4, 2006 by Inc.
; EnableExplicit
#MaxWcharBuffer = 1024 ; In bytes!, Needed for media-filename and renderer-names
#S_OK = 0
#OATRUE = -1
#OAFALSE = 0
#CLSCTX_INPROC_SERVER = $01
#CLSCTX_INPROC_HANDLER = $02
#CLSCTX_LOCAL_SERVER = $04
#CLSCTX_REMOTE_SERVER = $10
#CLSCTX_ALL = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
#CLSCTX_INPROC = #CLSCTX_INPROC_SERVER|#CLSCTX_INPROC_HANDLER
#CLSCTX_SERVER = #CLSCTX_INPROC_SERVER|#CLSCTX_LOCAL_SERVER|#CLSCTX_REMOTE_SERVER
#MAX_FILTER_NAME = 128
#WM_GRAPHEVENT = #WM_USER+1
#EC_COMPLETE = 1
#VMRMode_Windowed = $1
#VMRMode_Windowless = $2
#VMRMode_Renderless = $4
Enumeration ; Supported Dshow renderers
#Default ; Default system renderers in case of audio and video
#VMR9_Windowed
#VMR9_Windowless
#VMR7_Windowed
#VMR7_Windowless
#OldVideoRenderer
#OverlayMixer
#WaveOutRenderer
EndEnumeration
Enumeration ; MediaState
#State_Stopped
#State_Paused
#State_Running
EndEnumeration
Enumeration ; MediaSeeking
#AM_SEEKING_NoPositioning
#AM_SEEKING_AbsolutePositioning
EndEnumeration
Structure Dshow_Interfaces
pGraphBuilder.IGraphBuilder
pControl.IMediaControl
pEvent.IMediaEventEx
pWindow.IVideoWindow
pAudio.IBasicAudio
pVideo.IBasicVideo2
pSeeking.IMediaSeeking
EndStructure
CompilerIf Defined(FILTER_INFO, #PB_Structure) = #False
Structure FILTER_INFO ; an official Dshow structure - actually missing in PB
achName.w[#MAX_FILTER_NAME]
*pGraph.IFilterGraph
EndStructure
CompilerEndIf
CompilerIf Defined(IEnumFilters, #PB_Interface) = #False
Interface IEnumFilters
QueryInterface(a, b)
AddRef()
Release()
Next(a, b, c)
Skip(a)
Reset()
Clone(a)
EndInterface
CompilerEndIf
Macro FAILED(Status)
Status < 0
EndMacro
Macro SUCCEEDED(Status)
Status >= 0
EndMacro
Procedure.l L(*pWideChar, string.s) ; Ansi->Unicode
PokeS(*pWideChar, string, Len(string), #PB_Unicode)
ProcedureReturn *pWideChar
EndProcedure
Macro DEFINE_GUID(Name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8)
Global Name.GUID
Name\Data1 = l
Name\Data2 = w1
Name\Data3 = w2
Name\Data4[0] = b1
Name\Data4[1] = b2
Name\Data4[2] = b3
Name\Data4[3] = b4
Name\Data4[4] = b5
Name\Data4[5] = b6
Name\Data4[6] = b7
Name\Data4[7] = b8
EndMacro
DEFINE_GUID(CLSID_FilterGraph, $E436EBB3, $524F, $11CE, $9F, $53, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IGraphBuilder, $56A868A9, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IMediaControl, $56A868B1, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IMediaEventEx, $56A868C0, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IMediaSeeking, $36B73880, $C2C8, $11CF, $8B, $46, $00, $80, $5F, $6C, $EF, $60)
DEFINE_GUID(IID_IVideoWindow, $56A868B4, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IBasicAudio, $56A868B3, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IBasicVideo, $56A868B5, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(IID_IMediaSeeking, $36B73880, $C2C8, $11CF, $8B, $46, $00, $80, $5F, $6C, $EF, $60)
DEFINE_GUID(IID_IBaseFilter, $56A86895, $0AD4, $11CE, $B0, $3A, $00, $20, $AF, $0B, $A7, $70)
DEFINE_GUID(CLSID_VideoMixingRenderer9, $51B4ABF3, $748F, $4E3B, $A2, $76, $C8, $28, $33, $0E, $92, $6A)
DEFINE_GUID(IID_IVMRFilterConfig9, $5A804648, $4F66, $4867, $9C, $43, $4F, $5C, $82, $2C, $F1, $B8)
DEFINE_GUID(IID_IVMRWindowlessControl9, $8F537D09, $F85E, $4414, $B2, $3B, $50, $2E, $54, $C7, $99, $27)
DEFINE_GUID(CLSID_VideoMixingRenderer, $B87BEB7B, $8D29, $423F, $AE, $4D, $65, $82, $C1, $01, $75, $AC)
DEFINE_GUID(IID_IVMRFilterConfig, $9E5530C5, $7034, $48B4, $BB, $46, $0B, $8A, $6E, $FC, $8E, $36)
DEFINE_GUID(IID_IVMRWindowlessControl, $0EB1088C, $4DCD, $46F0, $87, $8F, $39, $DA, $E8, $6A, $51, $B7)
DEFINE_GUID(CLSID_OverlayMixer, $CD8743A1, $3736, $11D0, $9E, $69, $00, $C0, $4F, $D7, $C1, $5B)
DEFINE_GUID(CLSID_VideoRenderer, $70E102B0, $5556, $11CE, $97, $C0, $00, $AA, $00, $55, $59, $5A)
DEFINE_GUID(CLSID_AudioRender, $E30629D1, $27E5, $11CE, $87, $5D, $00, $60, $8C, $B7, $80, $66)
DEFINE_GUID(TIME_FORMAT_MEDIA_TIME, $7B785574, $8C82, $11CF, $BC, $0C, $00, $AA, $00, $AC, $74, $F6)
Procedure InitMedia()
Protected a, b, c, d, e, f, *p.Dshow_Interfaces
*p = AllocateMemory(SizeOf(Dshow_Interfaces))
If *p
CoInitialize_(0)
If Not CoCreateInstance_(@CLSID_FilterGraph, #Null, #CLSCTX_INPROC_SERVER, @IID_IGraphBuilder, @*p\pGraphBuilder) = #S_OK
Debug "Error: Couldn't initialize the GraphBuilder Interface"
ProcedureReturn #False
Else
a = *p\pGraphBuilder\QueryInterface(@IID_IMediaControl, @*p\pControl)
b = *p\pGraphBuilder\QueryInterface(@IID_IMediaEventEx, @*p\pEvent)
c = *p\pGraphBuilder\QueryInterface(@IID_IVideoWindow, @*p\pWindow)
d = *p\pGraphBuilder\QueryInterface(@IID_IBasicAudio, @*p\pAudio)
e = *p\pGraphBuilder\QueryInterface(@IID_IBasicVideo, @*p\pVideo)
f = *p\pGraphBuilder\QueryInterface(@IID_IMediaSeeking, @*p\pSeeking)
If SUCCEEDED(a) And SUCCEEDED(b) And SUCCEEDED(c) And SUCCEEDED(d) And SUCCEEDED(e) And SUCCEEDED(f) ; Quick check
ProcedureReturn *p
Else
Debug "Error: Query of at least one of the needed Interfaces failed"
ProcedureReturn #False
EndIf
EndIf
Else
Debug "Error: Memory allocation while initializing media failed"
EndIf
EndProcedure
Procedure LoadMedia(*p.Dshow_Interfaces, filename.s, Parent=0, VidRenderer=0, AudRenderer=0)
Protected pVmr.IBaseFilter, pVidRend.IBaseFilter, pAudR.IBaseFilter, pFilter.IBaseFilter
Protected pEnum.IEnumFilters, pVMRCnfg.IVMRFilterConfig, pWc.IVMRWindowlessControl
Protected VMR.b, pIndividualRenderer, RendName.s, pFltrCnfg, pWndCntrl, vw, vh, cFetched
Protected FilterInfo.FILTER_INFO, *pWc = AllocateMemory(#MaxWcharBuffer)
If *p
If VidRenderer
If VidRenderer = #VMR9_Windowed Or VidRenderer = #VMR9_Windowless
pIndividualRenderer = @CLSID_VideoMixingRenderer9 : RendName = "Video Mixing Renderer 9"
ElseIf VidRenderer = #VMR7_Windowed Or VidRenderer = #VMR7_Windowless
pIndividualRenderer = @CLSID_VideoMixingRenderer : RendName = "Video Mixing Renderer"
ElseIf VidRenderer = #OverlayMixer
pIndividualRenderer = @CLSID_OverlayMixer : RendName = "Overlay Mixer"
ElseIf VidRenderer = #OldVideoRenderer
pIndividualRenderer = @CLSID_VideoRenderer : RendName = "Old Video Renderer"
EndIf
If CoCreateInstance_(pIndividualRenderer, #Null, #CLSCTX_INPROC, @IID_IBaseFilter, @pVidRend) = #S_OK
If *p\pGraphBuilder\AddFilter(pVidRend, L(*pWc, RendName)) = #S_OK
VMR = #False
If VidRenderer = #VMR9_Windowed Or VidRenderer = #VMR9_Windowless
pFltrCnfg = @IID_IVMRFilterConfig9
pWndCntrl = @IID_IVMRWindowlessControl9
VMR = #True
ElseIf VidRenderer = #VMR7_Windowed Or VidRenderer = #VMR7_Windowless
pFltrCnfg = @IID_IVMRFilterConfig
pWndCntrl = @IID_IVMRWindowlessControl
VMR = #True
EndIf
If VMR
If pVidRend\QueryInterface(pFltrCnfg, @pVMRCnfg) = #S_OK
pVMRCnfg\SetRenderingPrefs(1)
If VidRenderer = #VMR9_Windowed Or VidRenderer = #VMR7_Windowed
pVMRCnfg\SetRenderingMode(#VMRMode_Windowed)
ElseIf VidRenderer = #VMR9_Windowless Or VidRenderer = #VMR7_Windowless
pVMRCnfg\SetRenderingMode(#VMRMode_Windowless)
If pVidRend\QueryInterface(@pWndCntrl, @pWc) = #S_OK And Parent
pWc\SetVideoClippingWindow(Parent)
pWc\Release()
EndIf
EndIf
pVMRCnfg\Release()
Else
Debug "Error: Getting Interface for VMR Config failed"
EndIf
EndIf
Else
Debug "Error: Adding Individual video render filter failed"
EndIf
Else
Debug "Error: Couldn't Create Instance of individual video renderer"
EndIf
EndIf
If AudRenderer = #WaveOutRenderer
RendName = "AudioWaveOut Renderer"
If CoCreateInstance_(@CLSID_AudioRender, #Null, #CLSCTX_INPROC, @IID_IBaseFilter, @pAudR) = #S_OK
If *p\pGraphBuilder\AddFilter(pAudR, L(*pWc, RendName)) = #S_OK
Else
Debug "Error: Adding Individual audio render filter failed"
EndIf
Else
Debug "Error: Couldn't Create Instance of individual audio renderer"
EndIf
EndIf
If *p\pGraphBuilder\RenderFile(L(*pWc, filename), #Null) = #S_OK
If Parent
*p\pVideo\get_SourceWidth(@vw) : *p\pWindow\put_width(vw)
*p\pVideo\get_SourceHeight(@vh) : *p\pWindow\put_Height(vh)
*p\pWindow\put_Left(0)
*p\pWindow\put_Top(0)
*p\pWindow\put_Owner(Parent)
*p\pWindow\put_WindowStyle(#WS_CHILD| #WS_CLIPSIBLINGS)
*p\pWindow\put_Visible(#OATRUE)
EndIf
If *p\pEvent\SetNotifyWindow(GetForegroundWindow_(), #WM_GRAPHEVENT, *p) = #S_OK
If *p\pEvent\SetNotifyFlags(0) <> #S_OK
EndIf
Else
Debug "Info: Media notification callback has not been applied"
EndIf
If *p\pGraphBuilder\EnumFilters(@pEnum) = #S_OK
Debug " "
Debug "--------- Filtergraph ---------"
While pEnum\Next(1, @pFilter, @cFetched) = #S_OK
pFilter\QueryFilterInfo(@FilterInfo)
Debug PeekS(@FilterInfo\achName, #MAX_FILTER_NAME, #PB_Unicode)
If FilterInfo\pGraph <> #Null
FilterInfo\pGraph\Release()
EndIf
pFilter\Release();
Wend
Debug "--------------------------------------"
Debug " "
Else
Debug "Error: Could not enumerate filters"
EndIf
*p\pSeeking\SetTimeFormat(@TIME_FORMAT_MEDIA_TIME)
ProcedureReturn #True
Else
Debug "Error: Rendering file failed"
ProcedureReturn #False
EndIf
FreeMemory(*pWc)
Else
Debug "Fatal Error: The given handle of the media object hasn't been initialized!"
ProcedureReturn #False
EndIf
EndProcedure
Procedure PlayMedia(*p.Dshow_Interfaces)
If *p
ProcedureReturn *p\pControl\run()
EndIf
EndProcedure
Procedure PauseMedia(*p.Dshow_Interfaces)
If *p
ProcedureReturn *p\pControl\pause()
EndIf
EndProcedure
Procedure MediaSeek(*p.Dshow_Interfaces, pos.q)
Protected duration.q
If *p : pos * 10000
*p\pSeeking\GetDuration(@duration)
ProcedureReturn *p\pSeeking\SetPositions(@pos, #AM_SEEKING_AbsolutePositioning,@duration, #AM_SEEKING_NoPositioning)
EndIf
EndProcedure
Procedure MediaStop(*p.Dshow_Interfaces)
If *p
ProcedureReturn *p\pControl\stop()
EndIf
EndProcedure
Procedure MediaLenght(*p.Dshow_Interfaces)
Protected duration.q
If *p
*p\pSeeking\GetDuration(@duration)
ProcedureReturn duration/10000 ; result in ms
EndIf
EndProcedure
Procedure MediaWidth(*p.Dshow_Interfaces)
Protected vw.l
If *p
*p\pVideo\get_SourceWidth(@vw)
ProcedureReturn vw
EndIf
EndProcedure
Procedure MediaHeight(*p.Dshow_Interfaces)
Protected vh.l
If *p : *p\pVideo\get_SourceHeight(@vh)
ProcedureReturn vh
EndIf
EndProcedure
Procedure MediaPosition(*p.Dshow_Interfaces)
Protected pos.q
If *p : *p\pSeeking\GetCurrentPosition(@pos)
ProcedureReturn pos/10000 ; result in ms
EndIf
EndProcedure
Procedure MediaState(*p.Dshow_Interfaces)
Protected pfs.l
If *p
*p\pControl\GetState(10,@pfs)
ProcedureReturn pfs
EndIf
EndProcedure
Procedure FreeMedia(*p.Dshow_Interfaces)
Protected pfs.l
If *p
*p\pControl\GetState(10,@pfs)
If Not pfs = #State_Stopped
*p\pControl\stop()
EndIf
*p\pSeeking\Release()
*p\pVideo\Release()
*p\pAudio\Release()
*p\pWindow\Release()
*p\pEvent\Release()
*p\pControl\Release()
*p\pGraphBuilder\Release()
FreeMemory(*p)
CoUninitialize_()
ProcedureReturn #True
EndIf
EndProcedure
Procedure.f MediaFPS(*p.Dshow_Interfaces) ; return .f cause we just need float precision
Protected avgTimePerFrame.d
If *p
*p\pVideo\get_AvgTimePerFrame(@avgTimePerFrame)
If avgTimePerFrame > 0
ProcedureReturn 1/avgTimePerFrame
Else
ProcedureReturn #False
EndIf
EndIf
EndProcedure
Procedure CaptureCurrMediaImage(*p.Dshow_Interfaces, ResultingImgNo.l)
Protected DataSize.l, *pImg.BITMAPINFOHEADER, res.b
If *p : res = #False
If IsImage(ResultingImgNo) = 0
If *p\pVideo\GetCurrentImage(@DataSize, #Null) = #S_OK
*pImg = AllocateMemory(DataSize)
If *pImg
If *p\pVideo\GetCurrentImage(@DataSize, *pImg) = #S_OK
If CreateImage(ResultingImgNo, *pImg\biWidth, *pImg\biHeight, *pImg\biBitCount)
If SetDIBits_(0, ImageID(ResultingImgNo), 0, *pImg\biHeight, *pImg+*pImg\biSize, *pImg, #DIB_RGB_COLORS)
res = #True
EndIf
EndIf
Else
Debug "Info: Capturing current image not possible"
EndIf
FreeMemory(*pImg)
Else
Debug "Error: Allocating ImgBuffer memory failed"
EndIf
Else
Debug "Error: Couldn't measure needed imagebuffer - or actual media contains no videostream"
EndIf
Else
Debug "Error: ImageNumer already valid"
EndIf
If res : ProcedureReturn #True : EndIf
EndIf
EndProcedure
Procedure OnMediaEvent(*p.Dshow_Interfaces)
Protected EventCode.l, Param1.l, Param2.l
If *p
While *p\pEvent\GetEvent(@EventCode, @Param1, @Param2, 0) <> #E_ABORT
Select EventCode
Case #EC_COMPLETE
*p\pControl\stop() ; If an #EC_COMPLETE notify occurs we do change the media state to stopped
Debug "... end has been reached."
EndSelect
*p\pEvent\FreeEventParams(EventCode, Param1, Param2)
Wend
EndIf
EndProcedure
Procedure.s MediaTime2String(time.l)
Protected ti.s, SS, MM, HH, ms
ms = time%1000
SS = Int(time / 1000) : While SS > 59:SS-60:Wend
MM = Int(time / 1000 / 60) : While MM > 59:MM-60:Wend
HH = Int(time / 1000 / 60 / 60) : While HH > 59:HH-60:Wend
ti.s =RSet(StrU(HH,2),2,"0")+":"+RSet(StrU(MM,2),2,"0")+":"+RSet(StrU(SS,2),2,"0")+":"+RSet(StrU(ms,2),3,"0")
ProcedureReturn ti.s
EndProcedure
Procedure MediaGetVolume(*p.Dshow_Interfaces) ; from -100db to 0db
Protected db.l
If *p
*p\pAudio\get_Volume(@db)
ProcedureReturn db/100
EndIf
EndProcedure
Procedure MediaPutVolume(*p.Dshow_Interfaces, db.l) ; from -100db to 0db
If *p
If db > -85 And db < 1 ; dont change -85 to -101 as it will mess up WaveOut. A bug in the API ?
Delay(10) : *p\pAudio\put_Volume(db*100)
EndIf
EndIf
EndProcedure
Procedure MediaPutBalance(*p.Dshow_Interfaces, bal.l) ; -100 to +100
If *p
*p\pAudio\put_balance(bal*100)
EndIf
EndProcedure
Procedure MediaGetBalance(*p.Dshow_Interfaces) ; from -100 to +100
Protected bal
If *p
*p\pAudio\get_balance(@bal)
ProcedureReturn Int(bal/100)
EndIf
EndProcedure
; DisableExplicit
; Mini example v1.1 for DshowMedia.pbi for Purebasic v4, 2006 by Inc.
CompilerIf #PB_Compiler_Debugger = #False
MessageRequester("Info","Please run this example using the debugger and see its output while choosing a media file")
End
CompilerEndIf
hwnd = OpenWindow(0,20,20,352,288,"PB native Dshow example", #PB_Window_ScreenCentered|#PB_Window_SystemMenu )
hMedia = InitMedia()
If hMedia
File.s = OpenFileRequester("Choose media file","","All Files (*.*)|*.*",0)
If File
If LoadMedia(hMedia, File, hwnd, #VMR7_Windowed, #WaveOutRenderer)
mWidth = MediaWidth(hMedia) : mHeight = MediaHeight(hMedia)
If mWidth = 0 : mWidth = #PB_Ignore :EndIf
If mHeight = 0 : mHeight = #PB_Ignore :EndIf
ResizeWindow(0, #PB_Ignore, #PB_Ignore, mWidth, mHeight)
PlayMedia(hMedia)
Debug "lenght = "+MediaTime2String(MediaLenght(hMedia))+" (hh:mm:ss:ms)"
fps.f = MediaFPS(hMedia)
If fps ; Does media contain Videodata?
Debug "FPS = "+StrF(fps,3)
Debug "Width = "+Str(MediaWidth(hMedia))
Debug "Height = "+Str(MediaHeight(hMedia))
EndIf
Debug "playing ..."
Debug " "
Debug "esc = exit"
Debug "c = capture current image to C:/"
Debug "left/right keys = step forward/backward in 5% steps"
Debug "up/down keys = alter volume in 2db steps"
Debug " "
Repeat
Delay(5)
;Debug MediaTime2String(MediaPosition(hMedia)) ;- #### Uncomment this for watching continous counter ###
ev = WindowEvent()
If ev = #WM_KEYDOWN
wParam = EventwParam()
If wParam = #VK_ESCAPE
MediaPutVolume(hMedia,0)
FreeMedia(hMedia)
End
ElseIf wParam = #VK_C
If CaptureCurrMediaImage(hMedia, 99)
SaveImage(99, "G:/MyImage"+Str(im)+".bmp",#PB_ImagePlugin_BMP)
FreeImage(99)
im+1
Debug "Image "+Str(im)+" safed to C:/"
EndIf
ElseIf wParam = #VK_LEFT
MediaSeek(hMedia, MediaPosition(hMedia)-Int(MediaLenght(hMedia)/20)) ; 5% steps
ElseIf wParam = #VK_RIGHT
MediaSeek(hMedia, MediaPosition(hMedia)+Int(MediaLenght(hMedia)/20)) ; 5% steps
ElseIf wParam =#VK_UP
MediaPutVolume(hMedia, MediaGetVolume(hMedia)+2)
ElseIf wParam = #VK_DOWN
MediaPutVolume(hMedia ,MediaGetVolume(hMedia)-2)
EndIf
ElseIf ev = #WM_GRAPHEVENT
OnMediaEvent(EventlParam())
EndIf
Until ev = #PB_Event_CloseWindow
MediaPutVolume(hMedia,0) ; '0' means 0db = maxVolume --> this is necessary! Otherwise the system sound device will keep the vol state even when appl. has been closed.
FreeMedia(hMedia)
End
EndIf
Else
FreeMedia(hMedia)
End
EndIf
EndIf
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Re: Direct Show
Lol, och glaube ich muss das echt in C++ Programmieren, hier hat scheinbar noch keiner was mit DirectShow gemacht!
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Re: Direct Show
Gute Idee!Joel hat geschrieben:Lol, och glaube ich muss das echt in C++ Programmieren, hier hat scheinbar noch keiner was mit DirectShow gemacht!
Wenn Du aber mal die Source von INC genauer ansiehst...wirst Du sicher das auch in PB schaffen.
Wenn Du damit nicht klar kommst...solltest Du das mit dem C++ auch lieber sein lassen.
Ansonsten würde ich statt den #VMR7_Windowed einfach einen der anderen noch möglichen Alternativen ausprobieren. Dazu musst Du aber in den INC Sourcen reinsehen...wo wir wieder am Anfang meines Beitrages sind. Sorry etwas Eigenarbeit erwarte ich schon von Dir.
Aber DU kannst ja immer noch auf C++ umsteigen...sicher geht es damit dann im Schlaf.

Siehste! Geht doch....?!
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
PB*, *4PB, PetriDish, Movie2Image, PictureManager, TrainYourBrain, ...
- Fluid Byte
- Beiträge: 3110
- Registriert: 27.09.2006 22:06
- Wohnort: Berlin, Mitte
Re: Direct Show
Weil du keine Antwort bekommst unterstellst du allen Mitgliedern dieses Forums sie hätten "mit DirectShow noch nie was gemacht?"Lol, och glaube ich muss das echt in C++ Programmieren, hier hat scheinbar noch keiner was mit DirectShow gemacht!
Was fürn' Kraut hast du dir wieder reingeballert?
Windows 10 Pro, 64-Bit / Outtakes | Derek
Re: Direct Show
Ja, werde das mal mit nem anderen Versuchen, danke für die Idee. Ne Unterstelle ich nicht. So mein ich das nicht. Mir ist nur aufgefallen, das sowohl im Englischen Forum und auch im Deutschen nicht keiner mehr weiß als ich.
Achso, kann es sein, dass inc. lange nicht mehr im Forum war, finde nur noch alte Beiträge von ihm.
Achso, kann es sein, dass inc. lange nicht mehr im Forum war, finde nur noch alte Beiträge von ihm.
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
Re: Direct Show
Habe das mal probiert, klappt aber nicht. Es kommt immer noch der Fehler: "Error: Rendering file failed".Dr. Shrek hat geschrieben:Ansonsten würde ich statt den #VMR7_Windowed einfach einen der anderen noch möglichen Alternativen ausprobieren.
Wahrscheinlich muss man da einen anderen Filter auswählen, bzw. anderen RendererFilter. Wahrscheinlich unterstützt der jetzige kein öffnen von Streams. jetzt ist nur die Frage, welchen Filter und vorallendingen, wo man den wie einsetzt!
----------------------------------------------------------
PB 5.20 Beta 10 | Windows 7
PB 5.20 Beta 10 | Windows 7
- HeX0R
- Beiträge: 3040
- Registriert: 10.09.2004 09:59
- Computerausstattung: AMD Ryzen 7 5800X
96Gig Ram
NVIDIA GEFORCE RTX 3060TI/8Gig
Win11 64Bit
G19 Tastatur
2x 24" + 1x27" Monitore
Glorious O Wireless Maus
PB 3.x-PB 6.x
Oculus Quest 2 + 3 - Kontaktdaten:
Re: Direct Show
Joel hat geschrieben: Achso, kann es sein, dass inc. lange nicht mehr im Forum war, finde nur noch alte Beiträge von ihm.
Nur weil jemand kein Schwätzer ist, heisst es nicht, dass er nicht mitliest oder gar in den Weiten eines WoW verschwunden ist.incs Profil hat geschrieben: Letzte Anmeldung: 15 Nov 2009 11:08:36
{Home}.:|:.{Codes}.:|:.{Downloads}.:|:.{History Viewer Online}.:|:.{Bier spendieren}
Re: Direct Show
MI basiert auf PB 3.94 und DirectShow (DS)
Bei der lizenzierten Version ist auch der MI-Player, mit dem man alles spielen kann, was das eigene Repertoire an DS-Filtern hergibt. Welche Filter man hat, welche Eigenschaften und Prioritäten (Merits) sie genießen, alles gut zu managen. Dank PB und DS.
Bei der lizenzierten Version ist auch der MI-Player, mit dem man alles spielen kann, was das eigene Repertoire an DS-Filtern hergibt. Welche Filter man hat, welche Eigenschaften und Prioritäten (Merits) sie genießen, alles gut zu managen. Dank PB und DS.
Man ist nie zu alt zum lernen, auch wenn man dabei manchmal alt aussieht!