Video Streamen und PB
-
- Beiträge: 321
- Registriert: 15.06.2008 21:52
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
das wäre nicht Betrug.
das hängt einzig davon ab, welche Rechte der Ersteller dem Benutzer einräumt.
also, wenn eine Lib unter der GPL veröffentlicht wäre, dürftes du die nicht benutzen, ohne dein Projekt ebenfalls unter die GPL zu stellen.
Weiterhin gibt es bei unterschiedlichen Werkzeugen unterschiedliche Lizenzen für den Gebrauch.
mit manchen darf man nur Private Projekte entwickeln, bei manchen gibt es kommerzielle Versionen nur gegen Aufpreis.
es gibt bestimmt einige Libs, die du in einem kommerziellen Projekt verwenden kannst.
auf der anderen Seite "gehört" dir ein Source nicht automatisch,
nur weil du nen Hunni für seine erstellung bezahlt hast,
dass er ausschließlich dir zugänglich gemacht wird muss ebenso Vertragsgegenstand sein,
und ich vermute mal sehr stark, dass der Ersteller dann trotzdem auf die gleiche Art und Weise andere Routinen schreiben darf.
das hängt einzig davon ab, welche Rechte der Ersteller dem Benutzer einräumt.
also, wenn eine Lib unter der GPL veröffentlicht wäre, dürftes du die nicht benutzen, ohne dein Projekt ebenfalls unter die GPL zu stellen.
Weiterhin gibt es bei unterschiedlichen Werkzeugen unterschiedliche Lizenzen für den Gebrauch.
mit manchen darf man nur Private Projekte entwickeln, bei manchen gibt es kommerzielle Versionen nur gegen Aufpreis.
es gibt bestimmt einige Libs, die du in einem kommerziellen Projekt verwenden kannst.
auf der anderen Seite "gehört" dir ein Source nicht automatisch,
nur weil du nen Hunni für seine erstellung bezahlt hast,
dass er ausschließlich dir zugänglich gemacht wird muss ebenso Vertragsgegenstand sein,
und ich vermute mal sehr stark, dass der Ersteller dann trotzdem auf die gleiche Art und Weise andere Routinen schreiben darf.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Der Weise weiß, dass er ein Narr ist.
-
- Beiträge: 17389
- Registriert: 10.11.2004 03:22
Ich habe leider keine Zeit, würde es aber so machen:
Das Video mit den PB Netzwerkbefehlen Paketweise in den RAM schaufeln. Im englischen Forum gibt es ein Beispiel zum abspielen
eines Videos aus dem RAM, was ggf. leicht anzupassen ist:
Das Video mit den PB Netzwerkbefehlen Paketweise in den RAM schaufeln. Im englischen Forum gibt es ein Beispiel zum abspielen
eines Videos aus dem RAM, was ggf. leicht anzupassen ist:
Code: Alles auswählen
; http://www.purebasic.fr/english/viewtopic.php?t=23992
; Playing AVI/Wave files from memory:
; http://support.microsoft.com/kb/q155360/en
;
; PureBASIC conversion of the above example from Tomio:
; http://www.purebasic.fr/english/viewtopic.php?t=6674
;
; Use of rc compiler:
; http://www.vbaccelerator.com/codelib/article/usingrc.htm
Global *VideoBuffer
Global *FourCCCode
Global FileSize.L
Procedure AVICallback(*MMIOINFO.MMIOINFO, Msg.L, Parameter1.L, Parameter2.L)
Static VideoIsOpened.L
Select Msg
Case #MMIOM_OPEN
If VideoIsOpened = #True
ProcedureReturn 0
EndIf
VideoIsOpened = #True
*MMIOINFO\lDiskOffset = 0
ProcedureReturn 0
Case #MMIOM_CLOSE
ProcedureReturn 0
Case #MMIOM_READ
CopyMemory(*VideoBuffer + *MMIOINFO\lDiskOffset, Parameter1, Parameter2)
*MMIOINFO\lDiskOffset + Parameter2
ProcedureReturn Parameter2
Case #MMIOM_SEEK
Select lParam2
Case #SEEK_SET
*MMIOINFO\lDiskOffset = Parameter1
Case #SEEK_CUR
*MMIOINFO\lDiskOffset + Parameter1
Case #SEEK_END
*MMIOINFO\lDiskOffset = FileSize - 1 - Parameter1
EndSelect
ProcedureReturn *MMIOINFO\lDiskOffset
Default
ProcedureReturn -1
EndSelect
EndProcedure
#WindowHeight = 320
#WindowWidth = 320
AnimationAreaHandle.L
EventID.L
MemBlockHandle.L
ResourceHandle.L
Import "C:\Temp\Video.Res" : EndImport
If OpenWindow(1, 0, 0, #WindowWidth, #WindowHeight, "Video played from Memory", #PB_Window_ScreenCentered | #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget) = #False
MessageRequester("Error", "Window could not be opened!", #MB_ICONERROR)
End
EndIf
ResourceHandle = FindResource_(0, "#1", "VIDEO")
If ResourceHandle = 0
MessageRequester("Error", "Video could not be found in resource file!", #MB_ICONERROR)
End
EndIf
MemBlockHandle = LoadResource_(0, ResourceHandle)
If MemBlockHandle = 0
MessageRequester("Error", "Video could not be loaded from resource file!", #MB_ICONERROR)
End
EndIf
FileSize = SizeofResource_(0, ResourceHandle)
*VideoBuffer = LockResource_(MemBlockHandle)
If *VideoBuffer = 0
MessageRequester("Error", "Locking of video buffer failed!", #MB_ICONERROR)
End
EndIf
*FourCCCode = mmioStringToFOURCC_("AVI", #MMIO_TOUPPER)
mmioInstallIOProc_(*FourCCCode, @AVICallback(), #MMIO_INSTALLPROC)
AnimationAreaHandle = CreateWindowEx_(0, "SysAnimate32", "", #ACS_AUTOPLAY | #ACS_CENTER | #ACS_TRANSPARENT | #WS_CHILD | #WS_VISIBLE | #WS_CLIPCHILDREN | #WS_CLIPSIBLINGS, 10, 10, #WindowWidth, #WindowHeight, WindowID(1), 0, GetModuleHandle_(0), 0)
Result = mciSendString_("Open Animation.AVI+ Type AVIVideo Alias Animation", 0, 0, 0)
If Result <> 0
MessageRequester("Error", "Video could not be opened!", #MB_ICONERROR)
DestroyWindow_(AnimationAreaHandle)
End
EndIf
mciSendString_("Window Animation Handle " + Str(WindowID(1)), 0, 0, 0)
mciSendString_("Play Animation repeat", 0, 0, 0)
Repeat
EventID = WaitWindowEvent()
If EventID = #PB_Event_CloseWindow
DestroyWindow_(AnimationAreaHandle)
mciSendString_("Close Animation", 0, 0, 0)
mmioInstallIOProc_(*FourCCCode, #Null, #MMIO_REMOVEPROC)
EndIf
Until EventID = #PB_Event_CloseWindow
End
"Papa, ich laufe schneller - dann ist es nicht so weit."