Задание:"Реализовать функцию объединения двух mono файлов в один stereo файл, где первый файл является левым каналом, а второй правым каналом выходного wav файла. Значения BitsPerSample, SamplesPerSec должны быть одинаковыми. При различной длине звуковых сигналов выходной файл должен иметь длину наименьшего"
Создал заголовок wav файла, потом функцию, в которой мы имеем 3 файла: 2 моно и 1 стерео, вопрос состоит в том, как сделать из моно wav файлов, сделать стерео? Как записать сэмплы в разные каналы. В один я записывал через массив, но как переключиться или типо того?
Ниже привожу пример кода :
#include <stdio.h>
#include <tchar.h>
#include <conio.h>
#include <math.h>
#include <cstdio>
#include <iostream>
#include <cstdlib>
#include <stdlib.h>
#include <Windows.h>
#include <iomanip>
#include <fstream>
using namespace std;
struct WAVHEADER
{
char chunkId[4];
unsigned long chunkSize;
char format[4];
char subchunk1Id[4];
unsigned long subchunk1Size;
unsigned short wFormatTag;
unsigned short nChannels;
unsigned long SamplesPerSec;
unsigned long AvgBytesPerSec;
unsigned short blockAlign;
unsigned short BitsPerSample;
char subchunk2Id[4];
unsigned long subchunk2Size;
};
void slianie(WAVHEADER header)
{
FILE *file1, *file2, *file3;
errno_t e1, e2, e3;
e1 = fopen_s(&file1, "inputwav1.wav", "rb");
e2 = fopen_s(&file2, "inputwav2.wav", "rb");
e3 = fopen_s(&file3, "output.wav", "wb");
WAVHEADER header1;
fread_s(&header1, sizeof(WAVHEADER), sizeof(WAVHEADER), 1, file1);
if (header.BitsPerSample != header1.BitsPerSample || header.SamplesPerSec != header1.SamplesPerSec)// по условию они одинаковые
{
cout << "Кол-во битов на сэмпл или кол-во сэмплов в секунду, в файлах, не совпадает";
return;
}
Я хотел сделать заполнение через массив и for ,но застрял.(Записать из файлов семплы в 2 массива и из них переписать в новый файл, но застрял на этих каналах). Очень надеюсь на помощь...
https://github.com/irrelevelephant/wav_enc. Там есть метод для записи стерео аудио. Как и сказал Владимир Мартьянов, сперва пишется левый канал, потом правый
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть бинарный файлВ нём нужно найти последовательности байтов по маске:
Как в directx 9 можно сменить размер спрайта ? Точней растянуть его на все окно программыИбо создаю текстуру и в размере ставлю вот эти параметры:
Есть некий процесс с параметрами, который должен корректно запускаться и останавливаться из NT-сервисаПопробовал два варианта его запуска...
Для лучшего понимания устройства контейнеров решил их все реализоватьИ вот столкнулся с проблемой на std::deque