Video encoding problems

Hi Experts,

This is a follow up to my earlier question here:  http://tinyurl.com/6yjccph

I'm having a few problems trying to create an AVI file using the CAviFile class published here:  http://www.codeproject.com/KB/graphics/createmovie.aspx

To start I initialize my AVI file as follows:

      m_pAviFile = new CAviFile( _T( "Test.avi" ),
            mmioFOURCC( _T( 'M' ), _T( 'S' ), _T( 'S' ), _T( '2' ) ), 1 );

Then whenever my CView-derived class is redrawn I call the following code:

void
MyView::UpdateAviFile
(
      CDC* pDC
)
{

      // Make sure we have a valid file.

      if ( m_pAviFile == NULL )
      {
            return;
      }

      // Create the bitmap.

      if ( m_pAviBitmap != NULL )
      {
            delete m_pAviBitmap;
      }

      m_pAviBitmap = new CBitmap();

      // Copy the view to the bitmap.

      CRect rect;
      GetClientRect( &rect );

      CDC dc;
      dc.CreateCompatibleDC( pDC );

      m_pAviBitmap->CreateCompatibleBitmap( &dc, rect.Width(), rect.Height() );
      CBitmap* pOld = ( CBitmap* )dc.SelectObject( m_pAviBitmap );
      dc.BitBlt( 0, 0, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY );

      // Try to append the bitmap to the AVI file.

      HRESULT hResult = m_pAviFile->AppendNewFrame(
            ( HBITMAP )m_pAviBitmap->GetSafeHandle() );

      // Make sure everything is ok.

      if ( hResult != S_OK )
      {
            CString strError;
            
            strError.Format( _T( "Could not create the AVI file: \n%s" ),
                  m_pAviFile->GetLastErrorMessage() );

            AfxMessageBox( strError );
            CloseAviFile();
      }

}

The problems I'm having are below.  I'm running on a Vista x64 system.

1.  It seems like the Windows Media Video 9 Screen Codec (MSS2) would be the best one to use for what I am trying to do (see http://msdn.microsoft.com/en-us/library/dd464602(v=vs.85).aspx).  However, I've downloaded both the Windows Media Encoder and the new Microsoft Expression Encoder 4, and neither of these products has installed the MSS2 encoder on my system.  When I look at Windows Media Player / Help / About Windows Media Player / Technical Support Information I can see that only the decoder is installed.  Can anyone tell me where to get the MSS2 encoder?

2.  Alternatively, I thought I could try the MPG4 encoder, but I also couldn't find out where to download it.  Is this available as a free download somewhere?  If not, is there a reputable site that sells this and other encoders?

3.  Two encoders that I see are installed on my system are Microsoft RLE (MRLE) and Microsoft Video 1 (MSVC).  However, when I set up these values in the miniFOURCC parameter I get the error "Unable to Set Video Stream Format" when I first call AppendNewFrame.  I also tried creating the CAviFile with no encoder like this:  m_pAviFile = new CmnAviFile( _T( "Test.avi" ), 0, 1 );  However, this just causes my program to crash.  So I assume there is something wrong with code, does anyone have an idea of what the problem is?

Thanks for any help.

Regards,
Kevin
kjc1111Asked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

 
kjc1111Author Commented:
Hi again,

I think I've included too many questions in this post, so I've moved problems 1 and 2 into this new post:  http://tinyurl.com/6f55o6v.  If anyone can help me figure out the problems I'm having with my code and the MRLE and MSVC codecs (problem 3 only) I'll award the points.

Thanks,
Kevin
0
 
kjc1111Author Commented:
I just saw that this question is still open.  For anyone who is interested I eventually got this working.  I ended up creating WMV files instead of AVI files - the process to do this is also described at the CodeProject link.  The WMV encoder uses the MSS2 encoder which I believe was installed when I installed Windows Media Encoder on my computer (although it might be installed by default on Window or with Windows Media Player, I'm not sure).  

The overall process took some time but the comments at the CodeProject link were very helpful.  I think WMV is a better choice anyway; in particular the MSS2 encoder is optimized for capturing screen videos which is what I wanted, so the videos I create are a reasonable size.

Regards,
Kevin
0

Experts Exchange Solution brought to you by ConnectWise

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.