请问一下有关wmv文件头的格式,如何创建wmv文件 急(0分)

  • 主题发起人 主题发起人 ilmm520
  • 开始时间 开始时间
I

ilmm520

Unregistered / Unconfirmed
GUEST, unregistred user!
请问一下有关wmv文件头的格式,如何创建wmv文件!!
在线等!
也可发一下相关资料![8D]
 
???????????????[:(]
 
去微软网站看看?应该有的
 
跪求ing[:(]
 
到微软的网站下载Windows Media Format 9 Series SDK,仔细看
wmv其实就是asf格式,只是后缀不同而已

以下是一些代码片断

HRESULT CStreamWriter::CreateStreamMP3(WORD nStreamNum,
int nSamplesPerSec,
int nBitRate)
{

const GUID WMMEDIATYPE_SubType_MP3 = WMMEDIASUBTYPE_MP3;
const DWORD dwBufferWindow = 1000;
// default=100ms -1 = unknown
WCHAR * wcStreamName = L"MP3 Stream";
WCHAR * wcConnectionName = L"MP3 Connection";


IWMStreamConfig *pStreamConfig;
IWMMediaProps *pMediaProps;
WM_MEDIA_TYPE mt;

WAVEFORMATEX *wavx;

HRESULT hr;


hr = m_pProfile->CreateNewStream(WMMEDIATYPE_Audio, &pStreamConfig);

hr = pStreamConfig->SetStreamNumber(nStreamNum);
hr = pStreamConfig->SetStreamName(wcStreamName);
hr = pStreamConfig->SetConnectionName(wcConnectionName);
hr = pStreamConfig->SetBufferWindow(dwBufferWindow);
hr = pStreamConfig->SetBitrate(nBitRate);



// Programmatically set the audio codec and attributes to "MPEG Layer-3, 11kHz, 16kBits/sec, mono".
// The values for this audio codec and attributes were determined by investigating the audio codec
wavx = (LPWAVEFORMATEX) new BYTE[sizeof(WAVEFORMATEX) + 12];
wavx->wFormatTag = 85;
wavx->nChannels = 1;
wavx->nSamplesPerSec = nSamplesPerSec;
// average bytes/sec the MP3 audio codec claims for "16kHz, 16kBits/sec, mono"
wavx->nAvgBytesPerSec = nBitRate / 8;
wavx->nBlockAlign = 1;
wavx->wBitsPerSample = 0;
// The Windows MPEG Layer-3 audio codec has 12 bytes of extra data.
// In a Win32 WAVEFORMATEX structure, this data is appended after the cbSize field.
wavx->cbSize = 12;
// MPEG Layer-3 audio codec extra data (in hexidecimal) for "11kHz, 16kBits/sec, mono"
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 0] = 0x01;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 1] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 2] = 0x02;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 3] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 4] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 5] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 6] = 0x68;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 7] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 8] = 0x01;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 9] = 0x00;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 10] = 0x71;
((BYTE *)wavx)[sizeof(WAVEFORMATEX)+ 11] = 0x05;


ZeroMemory(&mt, sizeof(mt));
mt.majortype = WMMEDIATYPE_Audio;
mt.subtype = WMMEDIATYPE_SubType_MP3;
mt.bFixedSizeSamples = TRUE;
mt.bTemporalCompression = FALSE;
mt.lSampleSize = 1;
mt.formattype = WMFORMAT_WaveFormatEx;
mt.pUnk = NULL;
mt.cbFormat = sizeof(WAVEFORMATEX) + 12;
mt.pbFormat = (BYTE*)wavx;



hr = pStreamConfig->QueryInterface( IID_IWMMediaProps, (void**)&pMediaProps );

hr = pMediaProps->SetMediaType( &mt );

hr = m_pProfile->AddStream(pStreamConfig);

delete []wavx;

pStreamConfig->Release();
pMediaProps->Release();

return hr;

}

HRESULT CStreamWriter::CreateStreamDIVX(WORD nStreamNum,
int nWidth,
int nHeight,
int nBitRate,
int nFramePerSecond,
int nBitColor)
{
const GUID WMMEDIATYPE_SubType_DivX =
{0x58564944, 0x0000, 0x0010, 0x80, 0x00, 0x00, 0xAA, 0x00, 0x38, 0x9B, 0x71};
const DWORD dwHandler = MAKEFOURCC('D','I','V','X');
const DWORD dwBufferWindow = 3000;
// default=3000ms -1 = unknown
WCHAR * wcStreamName = L"DIVX Stream";
WCHAR * wcConnectionName = L"DIVX Connection";


IWMStreamConfig *pStreamConfig;
IWMMediaProps *pMediaProps;
WM_MEDIA_TYPE mt;
WMVIDEOINFOHEADER videoInfo;
HRESULT hr;


hr = m_pProfile->CreateNewStream(WMMEDIATYPE_Video, &pStreamConfig);

hr = pStreamConfig->SetStreamNumber(nStreamNum);
hr = pStreamConfig->SetStreamName(wcStreamName);
hr = pStreamConfig->SetConnectionName(wcConnectionName);
hr = pStreamConfig->SetBufferWindow(dwBufferWindow);
hr = pStreamConfig->SetBitrate(nBitRate);


ZeroMemory(&videoInfo, sizeof(videoInfo));
videoInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER);
videoInfo.bmiHeader.biCompression = dwHandler;
videoInfo.bmiHeader.biBitCount = nBitColor;
videoInfo.bmiHeader.biWidth = nWidth;
videoInfo.bmiHeader.biHeight = nHeight;
videoInfo.bmiHeader.biPlanes = 1;
videoInfo.bmiHeader.biSizeImage = 0;
videoInfo.bmiHeader.biClrImportant = 0;

videoInfo.rcSource.left = 0;
videoInfo.rcSource.top = 0;
videoInfo.rcSource.right = videoInfo.bmiHeader.biWidth;
videoInfo.rcSource.bottom = videoInfo.bmiHeader.biHeight;
videoInfo.rcTarget = videoInfo.rcSource;

videoInfo.dwBitRate = nBitRate;
videoInfo.dwBitErrorRate = 0;
videoInfo.AvgTimePerFrame = 10000000 / nFramePerSecond;

ZeroMemory(&mt, sizeof(mt));
mt.majortype = WMMEDIATYPE_Video;
mt.subtype = WMMEDIATYPE_SubType_DivX;
mt.bFixedSizeSamples = FALSE;
mt.bTemporalCompression = TRUE;
mt.lSampleSize = 0;
mt.formattype = WMFORMAT_VideoInfo;
mt.pUnk = NULL;
mt.cbFormat = sizeof(WMVIDEOINFOHEADER);
mt.pbFormat = (BYTE*)&videoInfo;



hr = pStreamConfig->QueryInterface( IID_IWMMediaProps, (void**)&pMediaProps );

hr = pMediaProps->SetMediaType( &mt );

hr = m_pProfile->AddStream(pStreamConfig);

pStreamConfig->Release();
pMediaProps->Release();

return hr;
}
 
帮顶!

╭=========================================╮

80G海量源代码,控件,书籍全免费狂下不停!

http://www.source520.com

╰=========================================╯
 
后退
顶部