<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[aufgezeichneten Soundbuffer in Datei schreiben.]]></title><description><![CDATA[<p>Noch mehr Fragen,</p>
<p>ich möchte meinen aufgezeichneten Buffer nach dem ich die Aufzeichnung beende in eine Datei speichern um sie später noch mal abspielen zu können. Dies möchte ich ohne irgendwelche Kopfdaten machen.<br />
Wenn ich es einfach so mache:</p>
<pre><code>waveInClose(hWaveIn);
FILE* pFile; 
pFile = fopen(&quot;mywave.dat&quot;, &quot;wb&quot;);
lpSaveBuffer = pWaveHdr1-&gt;lpData;
int nLen = strlen(lpSaveBuffer);
fwrite(lpSaveBuffer, strlen(lpSaveBuffer), dwDataLength, pFile);
fclose(pFile);
</code></pre>
<p>kann ich die Aufzeichnung nicht wieder abspielen nachdem ich Sie aus der Datei geladen habe.<br />
Dies mache ich so:</p>
<pre><code>FILE* pFile = fopen(&quot;mywave.dat&quot;, &quot;rb&quot;);
fread(lpSaveBuffer, dwDataLength, dwDataLength, pFile);
fclose(pFile);
//open waveform audio for output
waveOutOpen(&amp;hWaveOut,WAVE_MAPPER,&amp;waveform,0,0, CALLBACK_NULL);
waveOutWrite(hWaveOut, &amp;header, sizeof(WAVEHDR));
</code></pre>
<p>Dann gibt es keine Ausgabe. Der Wavehdr zum Apspielen hat die gleichen Einstellungen wie der zum Aufzeichnen.</p>
<pre><code>waveform.wFormatTag = WAVE_FORMAT_PCM;
waveform.nChannels = 1;
waveform.nSamplesPerSec = 8000;
waveform.wBitsPerSample = 16;
waveform.cbSize = 0;
waveform.nBlockAlign  = (waveform.nChannels * waveform.wBitsPerSample)/8;
waveform.nAvgBytesPerSec = (waveform.nSamplesPerSec*waveform.nBlockAlign);
</code></pre>
<p>Wo könnte den hier mein Fehler liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/223301/aufgezeichneten-soundbuffer-in-datei-schreiben</link><generator>RSS for Node</generator><lastBuildDate>Sun, 12 Apr 2026 10:51:49 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/223301.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 24 Sep 2008 13:07:37 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to aufgezeichneten Soundbuffer in Datei schreiben. on Wed, 24 Sep 2008 13:07:37 GMT]]></title><description><![CDATA[<p>Noch mehr Fragen,</p>
<p>ich möchte meinen aufgezeichneten Buffer nach dem ich die Aufzeichnung beende in eine Datei speichern um sie später noch mal abspielen zu können. Dies möchte ich ohne irgendwelche Kopfdaten machen.<br />
Wenn ich es einfach so mache:</p>
<pre><code>waveInClose(hWaveIn);
FILE* pFile; 
pFile = fopen(&quot;mywave.dat&quot;, &quot;wb&quot;);
lpSaveBuffer = pWaveHdr1-&gt;lpData;
int nLen = strlen(lpSaveBuffer);
fwrite(lpSaveBuffer, strlen(lpSaveBuffer), dwDataLength, pFile);
fclose(pFile);
</code></pre>
<p>kann ich die Aufzeichnung nicht wieder abspielen nachdem ich Sie aus der Datei geladen habe.<br />
Dies mache ich so:</p>
<pre><code>FILE* pFile = fopen(&quot;mywave.dat&quot;, &quot;rb&quot;);
fread(lpSaveBuffer, dwDataLength, dwDataLength, pFile);
fclose(pFile);
//open waveform audio for output
waveOutOpen(&amp;hWaveOut,WAVE_MAPPER,&amp;waveform,0,0, CALLBACK_NULL);
waveOutWrite(hWaveOut, &amp;header, sizeof(WAVEHDR));
</code></pre>
<p>Dann gibt es keine Ausgabe. Der Wavehdr zum Apspielen hat die gleichen Einstellungen wie der zum Aufzeichnen.</p>
<pre><code>waveform.wFormatTag = WAVE_FORMAT_PCM;
waveform.nChannels = 1;
waveform.nSamplesPerSec = 8000;
waveform.wBitsPerSample = 16;
waveform.cbSize = 0;
waveform.nBlockAlign  = (waveform.nChannels * waveform.wBitsPerSample)/8;
waveform.nAvgBytesPerSec = (waveform.nSamplesPerSec*waveform.nBlockAlign);
</code></pre>
<p>Wo könnte den hier mein Fehler liegen?</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587331</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587331</guid><dc:creator><![CDATA[CrazyPlaya]]></dc:creator><pubDate>Wed, 24 Sep 2008 13:07:37 GMT</pubDate></item><item><title><![CDATA[Reply to aufgezeichneten Soundbuffer in Datei schreiben. on Wed, 24 Sep 2008 14:52:01 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>da stimmt einiges nicht. Zunächst ein wichtiger Punkt:</p>
<blockquote>
<p>The buffer must be prepared with the waveOutPrepareHeader function before it is passed to waveOutWrite.</p>
</blockquote>
<p>Dazu gehört noch <em>waveOutUnprepareHeader</em>:</p>
<blockquote>
<p>This function complements waveOutPrepareHeader. You must call this function before freeing the buffer. After passing a buffer to the device driver with the waveOutWrite function, you must wait until the driver is finished with the buffer before calling waveOutUnprepareHeader.</p>
</blockquote>
<p>Und mit <em>strlen</em> kannst du in diesem Falle nicht arbeiten, dafür gibt es aber die <em>dwBufferLength</em>-Komponente der <em>WAVEHDR</em>-Struktur.</p>
<p>MfG,</p>
<p>Probe-Nutzer</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1587401</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1587401</guid><dc:creator><![CDATA[Probe-Nutzer]]></dc:creator><pubDate>Wed, 24 Sep 2008 14:52:01 GMT</pubDate></item><item><title><![CDATA[Reply to aufgezeichneten Soundbuffer in Datei schreiben. on Fri, 26 Sep 2008 09:09:03 GMT]]></title><description><![CDATA[<p>Sorry die waveOutUnprepareHeader hatte ich nur vergessen mit aufzführen. Es lag aber an dem Arbeiten mit strlen. Habe jetzt dwBufferLength eingesetzt und siehe da es läuft.</p>
<p>Besten dank</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1588329</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1588329</guid><dc:creator><![CDATA[CrazyPlaya]]></dc:creator><pubDate>Fri, 26 Sep 2008 09:09:03 GMT</pubDate></item></channel></rss>