Мне нужно загрузить wav файл для дальнейшей работы. Вот пример

кода для работы, однако он не рабочий, может кто-то помочь?

#include "Engine.h"
#include "Sound/SoundWave.h"

void LoadWavFile(const FString& FilePath)
{
// Создаем экземпляр SoundWave
USoundWave* SoundWave = NewObject<USoundWave>(USoundWave::StaticClass());

// Загружаем WAV файл
TArray<uint8> WavData;
if (!FFileHelper::LoadFileToArray(WavData, *FilePath))
{
UE_LOG(LogTemp, Error, TEXT("Failed to load WAV file: %s"), *FilePath);
return;
}

// Задаем параметры SoundWave
SoundWave->SoundGroup = ESoundGroup::SOUNDGROUP_Default;
SoundWave->NumChannels = 2;
SoundWave->RawData.Lock(LOCK_READ_WRITE);
FMemory::Memcpy(SoundWave->RawData.GetData(), WavData.GetData(), WavData.Num());
SoundWave->RawData.Unlock();
SoundWave->SampleRate = 44100;
SoundWave->Duration = (float(WavData.Num()) / 2) / SoundWave->SampleRate;

// Добавляем SoundWave в ресурсы движка
const FStringAssetReference AssetRef(FilePath);
SoundWave->SetOuter(nullptr);
SoundWave->Rename(*AssetRef.ToString(), nullptr, REN_NonTransactional | REN_ForceNoResetLoaders);
UAssetManager::GetStreamableManager().LoadAsset(AssetRef);

// Используем SoundWave в своей логике
// ...
}

28 ответов

32 просмотра

сначала надо основы языка выучить прежде чем лезть в нейросети

Anton Lomanov
сначала надо основы языка выучить прежде чем лезть...

А про какие нейросети речь? Чел же просто хочет звук загрузить

Anton Lomanov
код написала нейронка

Ты по почерку что ли понял?

Дмитрий-Фондомакин Автор вопроса
Anton Lomanov
код написала нейронка

Ну естественно - мне у Вас надо было спросить? Или вначале погуглить вопрос и спросить у нейронки? Ты уж определись, человек должен вначале гуглить и искать инфу в открытых источниках или сразу народ задрачивать простыми вопросами? Я стараюсь гуглить и сам разбираться никого не беспокоя.

Дмитрий-Фондомакин Автор вопроса
Anton Lomanov
код написала нейронка

Ну раз тебя код из из нейронки бесит - прислать тот же образец с форума эпиков?

Дмитрий Фондомакин
Ну естественно - мне у Вас надо было спросить? Или...

Ну он на самом деле по факту все написал. Как ты собираешься допиливать это, если самого базового не знать?

Дмитрий-Фондомакин Автор вопроса
Anton Lomanov
код написала нейронка

Ну лови https://forums.unrealengine.com/t/playing-sound-wave-from-code/1207063 Он то же не работает и ошибки те же

Дмитрий-Фондомакин Автор вопроса
Vovcha
Ну он на самом деле по факту все написал. Как ты с...

Не не нужно допиливать, мне нужно получить информацию из файла. Дальше то как раз у меня проблем нет - с микрофона у меня все работает

Дмитрий-Фондомакин Автор вопроса
Anton Lomanov
типа

Ну окей - я тебе прислал образец с форума, написанный человеком - проблему решить сможешь? Если нет, то харе срач разводить

Дмитрий Фондомакин
Ну лови https://forums.unrealengine.com/t/playing...

Кстати не такой код. Там копирует в память аргументы в другом порядке, а в программировании так не радовать

Дмитрий-Фондомакин Автор вопроса
Vovcha
Кстати не такой код. Там копирует в память аргумен...

У меня ошибка не в порядке загрузок аргументов, а в том, что у меня отсутсвуют те операторы, которые у людей есть и работают. Я же скрин с ошибками выложил.

Скрин с ошибками не сами ошибки*

Дмитрий-Фондомакин Автор вопроса
NoreX
Скрин с ошибками не сами ошибки*

С какими ошибками? Мне надо было прислать лог с надписью - не найден символ? И что оно даст? Посмотри пожалуйста скрин - все вопросы отпадут

Дмитрий Фондомакин
С какими ошибками? Мне надо было прислать лог с на...

Эх, сколько открытий тебя впереди ожидает, удачи могу только пожелать)

Дмитрий-Фондомакин Автор вопроса
NoreX
Эх, сколько открытий тебя впереди ожидает, удачи м...

Ясно, спасибо. Помощь была конструктивна. Отдельное спасибо за ссылку на доки. Нахера столько снобизма после сообщения одного не самого умного члена? Канала, естественно. Когда тут новички или те, кто не разбирались задавали простые вопросы - ну как бы я помогал. Что за херня, ребят? Ни кто из вас не сталкивался с проблемами в 11 часов вечера? Спасибо большое за помощь

Дмитрий Фондомакин
Ясно, спасибо. Помощь была конструктивна. Отдельно...

Если бы ты немного подумал, то дошëл бы до того, что закинул бы эту ошибку в ту же самую нейросеть и дальше бы разбирался

Дмитрий-Фондомакин Автор вопроса
NoreX
Если бы ты немного подумал, то дошëл бы до того, ч...

А в голову не приходит, что я УЖЕ это сделал. Конкретный ответ есть? Нет? Ну тогда от флуда лучше не станет. Я тут помогал, если надо было и помогать буду дальше. А вот эту херню читать - мне оно нахер не надо в 12 часов ночи. Спасибо за помощь. Было конструктивно

Дмитрий Фондомакин
С какими ошибками? Мне надо было прислать лог с на...

Может заголовочный файл попробовать добавить #include "Serialization/BulkData.h"

Сергей Telegram
Может заголовочный файл попробовать добавить #incl...

Эм, зачем вообще смотреть какого англоязычного дядю уж если на то пошло, если есть уже давно качественный русскоязычный курс

Дмитрий Фондомакин
У меня ошибка не в порядке загрузок аргументов, а ...

Подскажите, пожалуйста, на какой версии движка Вы пытаетесь это делать? На форуме указано, что это для версии 4.25, и в этой версии SoundWave->RawData это структура типа FByteBulkDataOld, которая наследуется от FUntypedBulkData, у которой есть данные функции. На 5 движке SoundWave->RawData это структура типа FEditorBulkData, там этих функций нет. Если у Вас версия 5, то нужно искать другой подход, логика с приведённого вопроса на форуме не сработает.

Дмитрий-Фондомакин Автор вопроса
Никита Аксёнов
Подскажите, пожалуйста, на какой версии движка Вы ...

Да, я уже разобрался, что в версии 5+ не работает. Задачу уже решил другим подходом. Спасибо большое за помощь. 👍

Дмитрий-Фондомакин Автор вопроса
Никита Аксёнов
Подскажите, пожалуйста, на какой версии движка Вы ...

Вот такая инструкция сработала Для получения WAVEHDR из файла WAV в Unreal Engine, вы можете использовать стандартные функции Windows API. Вот пример кода: #include "Windows/AllowWindowsPlatformTypes.h" #include <mmsystem.h> #include "Windows/HideWindowsPlatformTypes.h" void LoadWavFile(const FString& FilePath, WAVEHDR& OutWAVEHDR) { // Открываем файл WAV FILE* FileHandle; if (_wfopen_s(&FileHandle, FilePath.GetCharArray().GetData(), L"rb") != 0) { UE_LOG(LogTemp, Error, TEXT("Failed to open WAV file: %s"), *FilePath); return; } // Читаем заголовок файла WAV WAVEFORMATEX WaveFormat; DWORD DataSize; fseek(FileHandle, 20, SEEK_SET); fread(&WaveFormat, sizeof(WAVEFORMATEX), 1, FileHandle); fseek(FileHandle, 4, SEEK_CUR); fread(&DataSize, sizeof(DWORD), 1, FileHandle); // Создаем буфер для аудио данных BYTE* DataBuffer = (BYTE*) malloc(DataSize); fread(DataBuffer, 1, DataSize, FileHandle); // Инициализируем структуру WAVEHDR OutWAVEHDR.lpData = (LPSTR) DataBuffer; OutWAVEHDR.dwBufferLength = DataSize; OutWAVEHDR.dwBytesRecorded = 0; OutWAVEHDR.dwUser = 0; OutWAVEHDR.dwFlags = 0; OutWAVEHDR.dwLoops = 0; OutWAVEHDR.lpNext = NULL; OutWAVEHDR.reserved = 0; // Закрываем файл WAV fclose(FileHandle); } Вызовите эту функцию, передав ей путь к вашему WAV файлу (FilePath) и структуру WAVEHDR, в которую будут загружены данные WAV. FString FilePath = TEXT("путь\\к\\wav\\файлу.wav"); WAVEHDR WaveHeader; LoadWavFile(FilePath, WaveHeader); // Используйте WaveHeader по вашему усмотрению Обратите внимание, что в этом примере используются функции Windows API для чтения файлов WAV, поэтому этот код будет работать только на платформе Windows.

Привет, еще актуально? В стандартной звуковой волне используются разные буферы, RawPCMData, RawData, CookedPlatformData и стриминговый. Но их поведение разнится в разных версиях движка, и не надежно, поэтому я рекомендую лучше реализовать через свой буфер, и через процедурную звуковую волну, выдавая аудиоданные через OnGeneratePCMAudio метод, как здесь: https://github.com/gtreshchev/RuntimeAudioImporter/blob/main/Source/RuntimeAudioImporter/Private/Sound/ImportedSoundWave.cpp#L123

Дмитрий-Фондомакин Автор вопроса
Georgy Treshchev
Привет, еще актуально? В стандартной звуковой волн...

Спасибо! Да, рознятся даже от версий движка и там много нюансов с дальнейшей работой. Я сейчас провожу R&D - поэтому мне без разницы было какой метод использовать )) Дальше буду уже смотреть, если тесты покажут нормальный результат

Похожие вопросы

Обсуждают сегодня

Но, может, есть уже проверенная? Наши требования такие: 1. Сообщения должны приходить из Инста в CRM оду 2. Должна быть возможность подключить несколько экаунтов Инстаграм. Р...
Alexander Sharoiko MSE / Александр Шаройко
13
Как думаете через какой сервис они верифицируют?
inc.
5
Добрый день! Подскажите, каким сборщиком фронта для OctoberCMS кто пользуется? Я имею ввиду сборщики, с которыми можно работать по стандартной схеме директорий октября. Я испо...
Николай Афанасенко
2
Вопрос на перед, на следующую пятницу. Сколько строк кода можно вешать на одного программиста, понятно что если проект хорошо написан то можно и миллион. Но есть же где то пре...
AlekseyK Kluchnikov
31
Немного оффтопа: а кто на чем сидит для осдева в плане ide/редактора? Последнее время сидел на vscode, но я его прям не могу нормально воспринимать, перешел на сlion, но меня...
Evg Resh
29
Это может быть все-таки не флудвейт? у меня ботфазер принимает изменения и отображает даже что они изменились, на видео видно что он прислал якобы уже измененное описание, н...
OVERLINK
13
День добрый, подскажите пожалуйста, есть ли какой-то способ сказать ребару не компилировать определённое приложение? Всю доку их перечиатл ничего подобного не нашёл
Кирилл
14
На чём в основном щас пишут мини апы? Vuejs?
Goot evening Not everyone
6
Вопрос: Здравствуйте! У меня возникла проблема с использованием плагина Mall в OctoberCMS. Я использую все файлы и компоненты в их исходном виде, без изменений. Однако на стр...
𐩱𐩪𐩣𐩱𐩲𐩺𐩡
8
Я правильно понимаю что нет способов получить список ожидающих заявок на вступление в группу с помощью бота из mtproto?
Шамиль Прилов
9
Карта сайта