Попытка захватить звук с помощью C ++ и Nodejs, но не запечатлевается звук [закрыто]C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 Попытка захватить звук с помощью C ++ и Nodejs, но не запечатлевается звук [закрыто]

Сообщение Anonymous »

Попытка захватить аудио из существующего процесса с помощью PID. Регулирование OBS Audio Capture OpenSource, я сделал capture.cpp < /p>

Код: Выделить всё

const fs = require('fs');
const capture = require('bindings')('capture');

const targetPid = 20744;

const out = fs.createWriteStream('dump.pcm');

console.log(`Capturing audio from PID ${targetPid} for 5 seconds...`);
capture.startCapture(targetPid, chunk => {
if (Buffer.isBuffer(chunk)) {
out.write(chunk);
} else {
console.log('[native]', chunk);
}
});
const sessions = capture.listSessions();
sessions.forEach(s => {
console.log(`PID: ${s.pid}\tEXE: ${s.path}`);
});

setTimeout(() => {
capture.stopCapture();
out.end(() => {
console.log('generated dump.pcm');
console.log(`file size: ${fs.statSync('dump.pcm').size} bytes`);
});
}, 5000);
< /code>
Это мой код JS для отладки. Когда я его выполняю, получите информацию об этом отладке. < /p>
E:\projects\YTM_Stream\electron-quick-start>node capture-test.js
Capturing audio from PID 20744 for 5 seconds...
[Native] Starting capture: PID=20744
PID: 20744      EXE: C:\Program Files\WindowsApps\Microsoft.ZuneMusic_11.2504.4.0_x64__8wekyb3d8bbwe\Microsoft.Media.Player.exe
PID: 0  EXE: 
[native] Capture started
generated dump.pcm
file size: 0 bytes
< /code>
В основном он должен захватить звук Windows Media Player в течение 5 секунд, но он генерирует только пустой файл < /p>
Функция захвата выглядит так. < /p>
Napi::Value StartCapture(const Napi::CallbackInfo& info) {
auto env = info.Env();
if (info.Length() < 2 || !info[0].IsNumber() || !info[1].IsFunction()) {
Napi::TypeError::New(env, "PID(number), callback required").ThrowAsJavaScriptException();
return env.Null();
}
DWORD pid = info[0].As().Uint32Value();
tsfn = Napi::ThreadSafeFunction::New(env, info[1].As(), "AudioCapture", 0, 1);
tsfn.BlockingCall([](Napi::Env e, Napi::Function cb) { cb.Call({ Napi::String::New(e, "Capture started") }); });
std::thread([pid]() {
CaptureAudioLoopByPID(pid, L"");
tsfn.Release(); capturing = false;
}).detach();
return env.Undefined();
}
Функция полной захвата CPP здесь: https://codefile.io/f/0iwf1cid9n

Подробнее здесь: https://stackoverflow.com/questions/796 ... g-captured
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»