У меня есть два стереофайла: 1.mp3, 2.mp3 Я хочу объединить эти два аудиофайла особым образом
с этим кодом, я могу объединить их так 3.mp3 содержит данные обоих файлов, когда я играю 3.mp3 Он воспроизводит 1.mp3 , а затем 2.mp3 без перерыва
#include <windows.h>
INT ReadMyFile(LPCWSTR lpcszFilePath, PBYTE* pbytReadBuffer, DWORD* dwSize)
{
HANDLE hndlRead;
OVERLAPPED ol = {0};
BOOL bRetValCheck;
INT nReturnValue = TRUE;
hndlRead = CreateFileW(lpcszFilePath, GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
if (hndlRead != INVALID_HANDLE_VALUE)
{
*dwSize = GetFileSize(hndlRead, NULL);
*pbytReadBuffer = (PBYTE) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, *dwSize);
if (pbytReadBuffer != NULL)
{
bRetValCheck = ReadFile(hndlRead, *pbytReadBuffer, *dwSize, NULL, &ol);
if (!bRetValCheck)
{
nReturnValue = FALSE;
HeapFree(GetProcessHeap(), 0, pbytReadBuffer);
}
}
else
{
nReturnValue = FALSE;
}
CloseHandle(hndlRead);
}
else
{
nReturnValue = FALSE;
}
return nReturnValue;
}
int main()
{
DWORD dwSiaze_IN = 0;
DWORD dwSiaze_OUT = 0;
PBYTE pbytPlainText_IN = NULL;
PBYTE pbytPlainText_OUT = NULL;
PBYTE pOutputBuffer;
DWORD dwOutputSize = 0;
DWORD dwBytesWritten;
HANDLE hndlWrite;
if (ReadMyFile(L"1.mp3", &pbytPlainText_IN, &dwSiaze_IN) && ReadMyFile(L"2.mp3", &pbytPlainText_OUT, &dwSiaze_OUT))
{
dwOutputSize = dwSiaze_IN + dwSiaze_OUT;
pOutputBuffer = (PBYTE) HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, dwOutputSize);
int i = 0;
// For mp3 Header
for (i=0; i<11; i++)
{
pOutputBuffer[i] = pbytPlainText_IN[i];
}
for (i=11; i<dwOutputSize/2; i++)
{
pOutputBuffer[i] = pbytPlainText_IN[i];
}
int tmp = 11;
for (i=dwOutputSize/2; i<dwOutputSize; i++)
{
pOutputBuffer[i] = pbytPlainText_OUT[tmp];
tmp++;
}
hndlWrite = CreateFileW(L"3.mp3", GENERIC_WRITE, 0, NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
if (hndlWrite != INVALID_HANDLE_VALUE)
{
SetFilePointer(hndlWrite, 0, 0, FILE_END);
WriteFile(hndlWrite, pOutputBuffer, dwOutputSize, &dwBytesWritten, NULL);
CloseHandle(hndlWrite);
}
}
return 0;
}
Но я хочу синхронизировать данные ...
Я хочу, чтобы 3.mp3 был стереофайлом с 1..mp3 в левом канале и 2.mp3 в правом канале