AVIFil32.lib cropping Frames from Video-File

Just starting out? Need help? Post your questions and find answers here.
Joel
User
User
Posts: 24
Joined: Fri May 16, 2008 5:39 pm

AVIFil32.lib cropping Frames from Video-File

Post by Joel »

Hello,

I want to write code that crop 5 Frames from a video file and save it in a new Video file.

But my Code doesnt work. What is false?

Code: Select all

AVIFile.s = "C:\Uen.avi" 
AVIFile1.s = "C:\Users\Joel\Desktop\testvideoframe.avi" 
  
AVIFileInit() 

If AVIFileOpen(@FileBufferID, AVIFile.s, #OF_SHARE_DENY_WRITE, 0) = #AVIERR_OK 
   If AVIFileInfo(FileBufferID, AviInfo.AVIFile_Info, SizeOf(AVIInfo)) = #AVIERR_OK     
    EndIf 
  
EndIf 


If AVIFileGetStream(FileBufferID, @AVIStreamBuffer.l, #streamtypeVIDEO, 0) = #AVIERR_OK 
frameObject = AVIStreamGetFrameOpen.l(AVIStreamBuffer.l, #AVIGETFRAMEF_BESTDISPLAYFMT )

firstFrame = AVIStreamStart(AVIStreamBuffer) 
numFrames = AVIStreamLength(AVIStreamBuffer) 

*bm = AVIStreamGetFrame(frameObject, 1) 
Debug *bm
        
AVIFileOpen(@FileBufferID1, AVIFile1.s, #OF_WRITE | #OF_CREATE, 0)
AVIFileCreateStream(FileBufferID1, @AVIStreamBuffer1.l, @strfff)
AVIStreamWrite(AVIStreamBuffer1.l, 0, 500, *bm, 54394912, $10, 0,0)
AVIFileExit()
Joel
User
User
Posts: 24
Joined: Fri May 16, 2008 5:39 pm

Post by Joel »

I have the old code optimized, but the last command: AVIStreamWrite() are the result of -29381 back.

Do you have an idea what the code is wrong

Code: Select all

#streamtypeVIDEO = 1935960438 
#streamtypeAUDIO = 1935963489 
#streamtypeMIDI = 1935960429 
#streamtypeTEXT = 1937012852 
#ICMF_CHOOSE_KEYFRAME=1 
#ICMF_CHOOSE_DATARATE=2 
#ICMF_CHOOSE_ALLCOMPRESSORS=8 
#AVIERR_OK=0 
#AVIERR_NOCOMPRESSOR=$80000000 Or $40000 Or ($4000 + 113) 
#AVIERR_MEMORY=      $80000000 Or $40000 Or ($4000 + 103) 
#AVIERR_UNSUPPORTED= $80000000 Or $40000 Or ($4000 + 101) 
#AVIIF_KEYFRAME=$10 
#OF_READ=$0 
#OF_WRITE=$1 
#OF_SHARE_DENY_WRITE=$20 
#OF_CREATE=$1000 
#AVIGETFRAMEF_BESTDISPLAYFMT = 1 

Structure AVIFile_Info 
    dwMaxBytesPerSec.l 
    dwFlags.l 
    dwCaps.l 
    dwStreams.l 
    dwSuggestedBufferSize.l 
    dwWidth.l 
    dwHeight.l 
    dwScale.l 
    dwRate.l 
    dwLength.l 
    dwEditCount.l 
    szFileType.b[64]        
EndStructure 

Structure AVI_RECT 
    left.i 
    top.i 
    right.i 
    bottom.i 
EndStructure 

Structure AVISTREAMINFO 
  fccType.l 
  fccHandler.l 
  dwFlags.l 
  dwCaps.l 
  wPriority.w 
  wLanguage.w 
  dwScale.l 
  dwRate.l 
  dwStart.l 
  dwLength.l 
  dwInitialFrames.l 
  dwSuggestedBufferSize.l 
  dwQuality.l 
  dwSampleSize.l 
  rcFrame.RECT 
  dwEditCount.l 
  dwFormatChangeCount.l 
  szName.c[64] 
EndStructure 

Structure AVIFILEINFO 
  dwMaxBytesPerSec.l 
  dwFlags.l 
  dwCaps.l 
  dwStreams.l 
  dwSuggestedBufferSize.l 
  dwWidth.l 
  dwHeight.l 
  dwScale.l 
  dwRate.l 
  dwLength.l 
  dwEditCount.l 
  szFileType.c[64] 
EndStructure 

Structure AVICOMPRESSOPTIONS 
  fccType.l 
  fccHandler.l 
  dwKeyFrameEvery.l 
  dwQuality.l 
  dwBytesPerSecond.l 
  dwFlags.l 
  *lpFormat 
  cbFormat.l 
  *lpParms 
  cbParms.l 
  dwInterleaveEvery.l 
EndStructure 


Structure  AVI_STREAM_INFO 
    fccType.l 
    fccHandler.l 
    dwFlags.l 
    dwCaps.l 
    wPriority.i 
    wLanguage.i 
    dwScale.i 
    dwRate.l 
    dwStart.l 
    dwLength.l 
    dwInitialFrames.l 
    dwSuggestedBufferSize.l 
    dwQuality.l 
    dwSampleSize.l 
    rcFrame.AVI_RECT 
    dwEditCount.l 
    dwFormatChangeCount.l 
    szName.b[64] 
EndStructure 

Import "avifil32.lib" 
  
  AVIFileOpenA.l(*ppfile.l, szFile.s, mode.l , pclsidHandler.l ) 
  AVIFileOpenW.l(*ppfile.l, szFile.s, mode.l , pclsidHandler.l ) 
  AVIFileRelease.l(ppfile.l) 
  AVIFileInfoA.l(pfile.l, *pfi.AVIFile_Info, lSize.l ) 
  AVIFileInfoW.l(pfile.l, *pfi.AVIFile_Info, lSize.l ) 
  AVIStreamInfoA.l(pfile.l, *pfi.AVI_STREAM_INFO, lSize.l ) 
  AVIStreamInfoW.l(pfile.l, *pfi.AVI_STREAM_INFO, lSize.l ) 
  AVIFileGetStream.l(pfile.l, *ppavi.l, fccType.l, lParam.l) 
  AVIStreamGetFrameOpen.l(pfile.l, lParam.l) 
  AVIStreamGetFrame.l(StreamObjekt.l, Frame_Nummer.l) 
  AVIStreamStart(pfile.l) 
  AVIStreamLength(pfile.l) 
  AVIStreamRelease(pfile.l) 
  AVIStreamGetFrameClose.l(StreamObjekt.l) 
  AVIFileInit.l() 
  AVIFileExit.l() 
  AVIBuildFilter(lpszFilter.p-unicode, cbFilter.l, fSaving.l) As "_AVIBuildFilterA@12" 
  AVIClearClipboard() 
  AVIFileAddRef(pfile.l) 
  AVIFileCreateStream(pfile.l, ppavi.l, *psi.AVISTREAMINFO) As "_AVIFileCreateStreamA@12" 
  AVIFileEndRecord() 
  AVIFileInfo(pfile.l, *pfi.AVIFileInfo, lSize.l) As "_AVIFileInfoA@12" 
  AVIFileOpen(*ppfile.l, szFile.p-unicode, uMode.l, lpHandler.l) As "_AVIFileOpenA@16" 
  AVIFileReadData(pfile.l, ckid.l, lpData.l, *lpcbData.l) 
  AVIFileWriteData(pfile.l, ckid.l, lpData.l, cbData.l) 
  AVIGetFromClipboard(*lppf.l) 
  AVIMakeCompressedStream(ppsCompressed.l, ppsSource.l, *lpOptions.AVICOMPRESSOPTIONS, *pclsidHandler.l) 
  AVIMakeFileFromStreams(*ppfile.l, nStreams.l, papStreams.l) 
  AVIMakeStreamFromClipboard(cfFormat.l, hGlobal.l, ppstream.l) 
  AVIPutFileOnClipboard(pf.l) 
  AVISave(szFile.p-unicode, *pclsidHandler.l, lpfnCallback.l, nStreams.l, pfile.l, *lpOptions.AVICOMPRESSOPTIONS, OptionalArguments.l) As "_AVISaveA" 
  AVISaveOptions(hwnd.l, uiFlags.l, nStreams.l, ppavi.l, *plpOptions.AVICOMPRESSOPTIONS) 
  AVISaveOptionsFree(nStreams.l, *plpOptions.AVICOMPRESSOPTIONS) 
  AVISaveV(szFile.p-unicode, *pclsidHandler.l, lpfnCallback.l, nStreams.l, ppavi.l, *plpOptions.AVICOMPRESSOPTIONS) As "AVISaveVA@24" 
  AVIStreamAddRef(pavi.l) 
  AVIStreamBeginStreaming(pavi.l, lStart.l, lEnd.l, lRate.l) 
  AVIStreamCreate(ppavi.l, lParam1.l, lParam2.l, *pclsidHandler.l) 
  AVIStreamEndStreaming(pavi.l) 
  AVIStreamFindSample(pavi.l, lPos.l, lFlags.l) 
  AVIStreamInfo(pavi.l, *psi.AVISTREAMINFO, lSize.l) As "_AVIStreamInfoA@12" 
  AVIStreamOpenFromFile(ppavi.l, szFile.p-unicode, fccType.l, lParam.l, mode.l, *pclsidHandler.l) As "_AVIStreamOpenFromFileA@24" 
  AVIStreamRead(pavi.l, lStart.l, lSamples.l, lpBuffer.l, cbBuffer.l, *plBytes.l, *plSamples.l) 
  AVIStreamReadData(pavi.l, fcc.l, lp.l, *lpcb.l) 
  AVIStreamReadFormat(pavi.l, lPos.l, lpFormat.l, *lpcbFormat.l) 
  AVIStreamSampleToTime(pavi.l, lSample.l) 
  AVIStreamSetFormat(pavi.l, lPos.l, lpFormat.l, cbFormat.l) 
  AVIStreamTimeToSample(pavi.l, lTime.l) 
  AVIStreamWrite(pavi.l, lStart.l, lSamples.l, lpBuffer.l, cbBuffer.l, dwFlags.l, *plSampWritten.l, *plBytesWritten.l) 
  AVIStreamWriteData(pavi.l, fcc.l, lp.l, cb.l) 
  CreateEditableStream(ppsEditable.l, psSource.l) 
  EditStreamClone(pavi.l, ppResult.l) 
  EditStreamCopy(pavi.l, *plStart.l, *plLength.l, ppResult.l) 
  EditStreamCut(pavi.l, *plStart.l, *plLength.l, ppResult.l) 
  EditStreamPaste(pavi.l, *plPos.l, *plLength.l, pstream.l, lStart.l, lEnd.l) 
  EditStreamSetInfo(pavi.l, *lpInfo.AVISTREAMINFO, cbInfo.l) As "_EditStreamSetInfoA@12" 
  EditStreamSetName(pavi.l, lpszName.p-unicode) As "_EditStreamSetNameA@8" 
EndImport 

  CompilerIf #PB_Compiler_Unicode 
    Macro AVIFileOpen 
      AVIFileOpenW 
    EndMacro 
    Macro AVIFileInfo 
      AVIFileInfoW 
    EndMacro 
    Macro AVIStreamInfo 
      AVIStreamInfoW 
    EndMacro 
  CompilerElse 
    Macro AVIFileOpen 
      AVIFileOpenA 
    EndMacro 
    Macro AVIFileInfo 
      AVIFileInfoA 
    EndMacro 
    Macro AVIStreamInfo 
      AVIStreamInfoA 
    EndMacro 
  CompilerEndIf 
  
  
  
AVIDateiPfad.s = "C:trauen.avi" 
AVIDateiPfad1.s = "C:\videoframe.avi" 
AVIFileInit() 

If AVIFileOpen(@FileBufferID, AVIDateiPfad.s, #OF_SHARE_DENY_WRITE, 0) = #AVIERR_OK 
   If AVIFileInfo(FileBufferID, AviInfo.AVIFile_Info, SizeOf(AVIInfo)) = #AVIERR_OK     
    EndIf 
EndIf 

; Read Videoframes
If AVIFileGetStream(FileBufferID, @AVIStreamBuffer.l, #streamtypeVIDEO, 0) = #AVIERR_OK 
frameObject = AVIStreamGetFrameOpen.l(AVIStreamBuffer.l, #AVIGETFRAMEF_BESTDISPLAYFMT )
firstFrame = AVIStreamStart(AVIStreamBuffer) 
numFrames = AVIStreamLength(AVIStreamBuffer) 

bm = AVIStreamGetFrame(frameObject, 20) 
        
AVIFileOpen(@FileBufferID1, AVIDateiPfad1.s, #OF_WRITE | #OF_CREATE, 0)
AVIFileCreateStream(FileBufferID1, @AVIStreamBuffer1.l, @strfff)
Debug AVIStreamWrite(AVIStreamBuffer1.l, 0, 0,  bm , SizeOf(bm), #AVIIF_KEYFRAME, 0, 0)
AviStreamrelease(AVIStreamBuffer1.l)
AviStreamrelease(AVIStreamBuffer.l)
AviFilerelease(FileBufferID)
AviFilerelease(FileBufferID1)
AVIFileExit()
EndIf 

Post Reply