I've tried but it fails. New avi with extracted video stream wan't to play in any player, but all info about file showing correctly.
I' ve made this:
I'll be glad to see any info or code example/ 10xCode:void SaveStream(PAVISTREAM ps, LPSTR lpFilename) { // msdn modifed example PAVIFILE pf; PAVISTREAM psAvi; HRESULT hr; AVISTREAMINFO strhdr; BITMAPINFOHEADER bi, biNew; LONG lStreamSize; LPVOID lpOld, lpNew; // // AVIStreamFormatSize. AVIStreamFormatSize(ps, 0, &lStreamSize); if (lStreamSize > sizeof(bi)) // Format too large? return; lStreamSize = sizeof(bi); hr = AVIStreamReadFormat(ps, 0, &bi, &lStreamSize); // //if (bi.biCompression != BI_RGB) // // return; String msg = ""; switch (bi.biCompression) { case BI_RGB: msg = "uncompressed"; case BI_RLE8: msg = "rle8"; case BI_RLE4: msg = "rle4"; case BI_BITFIELDS: msg = "16.32 uncompr"; case BI_JPEG: msg = "JPEG"; case BI_PNG: msg = "PNG"; default: msg = "Unknown!"; } ShowMessage(msg); hr = AVIStreamInfo(ps, &strhdr, sizeof(strhdr)); // // hr = AVIFileOpen(&pf, lpFilename, OF_WRITE | OF_CREATE, NULL); if (hr != 0) return; // biNew = bi; biNew.biCompression = 0; // hr = AVIFileCreateStream(pf, &psAvi, &strhdr); if (hr != 0) { // AVIFileRelease(pf); return; } // hr = AVIStreamSetFormat(psAvi, 0, &biNew, sizeof(biNew)); if (hr != 0) { // AVIStreamRelease(psAvi); AVIFileRelease(pf); return; } // lpOld = GlobalAllocPtr(GMEM_MOVEABLE, bi.biSizeImage); lpNew = GlobalAllocPtr(GMEM_MOVEABLE, biNew.biSizeImage); // Read the stream data using AVIStreamRead. for (lStreamSize = AVIStreamStart(ps); lStreamSize < AVIStreamEnd(ps); lStreamSize++) { hr = AVIStreamRead(ps, lStreamSize, 1, lpOld, bi.biSizeImage, NULL, NULL); if (hr != 0) { // AVIStreamRelease(psAvi); AVIFileRelease(pf); return; } // hr = AVIStreamWrite(psAvi, lStreamSize, 1, lpNew, biNew.biSizeImage, AVIIF_KEYFRAME, NULL, NULL); } // AVIStreamRelease(psAvi); AVIFileRelease(pf); } //------------------------------------------------------------ void __fastcall TForm1::FormCreate(TObject *Sender) { PAVISTREAM pVideoStream; bool bFileOpen; if(OpenDialog1->Execute()) { //if(SaveDialog1->Execute()){ long r, fmtlen; AVIFileInit(); r = AVIStreamOpenFromFile(&pVideoStream, OpenDialog1->FileName.c_str(), streamtypeVIDEO, 0, OF_READ | OF_SHARE_EXCLUSIVE, 0); if(r!=0) ShowMessage("Cant load file stream!"); SaveStream(pVideoStream, "out.avi"); AVIFileExit(); ShowMessage("Done!"); //} //if saveD }//if openD }
Try StreamFab Downloader and download from Netflix, Amazon, Youtube! Or Try DVDFab and copy Blu-rays!
+ Reply to Thread
Results 1 to 1 of 1
Thread
Similar Threads
-
Extract chapters to separate MPEG files?
By Figge in forum Authoring (DVD)Replies: 9Last Post: 9th Apr 2018, 15:38 -
Can not extract PGS stream from MKV file
By gonzalu in forum SubtitleReplies: 27Last Post: 19th Aug 2016, 03:48 -
Extract Subtitle Stream from MPG (Used VOB2MPG to create file)
By secretsubscriber in forum SubtitleReplies: 2Last Post: 4th Jun 2009, 14:02 -
How to extract subtitle stream in .divx file and save as idx/sub
By newnews in forum SubtitleReplies: 1Last Post: 29th Jul 2008, 13:36 -
How do you separate an AVI file into a video stream and an audio stream?
By VidHunter in forum MacReplies: 2Last Post: 1st May 2008, 03:27