<?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[Problem mit Aufnahme eines mp3 Streams]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche ein Programm zu schreiben, welches mp3 Streams von Shoutcast-Sendern auf die Festplatte aufnehmen kann. Hierfür habe ich folgende Funktion entworfen:</p>
<pre><code class="language-cpp">void GetData (int socket, int length // Länge eines Datenblocks)
{
	std::ofstream out (&quot;test.mp3&quot;, std::ofstream::binary);
	int recieved_bytes = 0;
	int meta_size;
	for (char c; recv (socket, &amp;c, 1, 0) &gt; 0; out &lt;&lt; c) {
		++ recieved_bytes;
		if (recieved_bytes == length + 1) { // fängt ein Metadatenblock an?
			meta_size = c * 16;
			recieved_bytes = 0;
			if (meta_size &gt; 0) { // Wenn ja, hier einlesen
				std::stringstream meta_data;
				for (char d; recv (socket, &amp;d, 1, 0) &gt; 0; meta_data &lt;&lt; d) {
					--meta_size;
					if (meta_size == 0) break;
				}
				std::cout &lt;&lt; meta_data.str () &lt;&lt; std::endl;
			}
		}
	}
}
</code></pre>
<p>Diese Funktion ließt die Metadaten des Shoutcast Streams fehlerfrei aus. Jedoch ist die Aufnahme (die als mp3 Datei vorliegt) mit lästigen Störgeräuschen durchzogen. <a href="http://www.dateihoster.de/de/file/1906/test-mp3.html" rel="nofollow">Hier ein Beispiel</a>. Ich habe keine Ahnung, woher dieses &quot;Schmatzen&quot; kommt und hoffe, jemand kann mir darüber Auskunft geben.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/topic/198482/problem-mit-aufnahme-eines-mp3-streams</link><generator>RSS for Node</generator><lastBuildDate>Mon, 29 Jun 2026 21:56:56 GMT</lastBuildDate><atom:link href="https://www.c-plusplus.net/forum/topic/198482.rss" rel="self" type="application/rss+xml"/><pubDate>Wed, 21 Nov 2007 21:32:21 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Wed, 21 Nov 2007 21:32:21 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>ich versuche ein Programm zu schreiben, welches mp3 Streams von Shoutcast-Sendern auf die Festplatte aufnehmen kann. Hierfür habe ich folgende Funktion entworfen:</p>
<pre><code class="language-cpp">void GetData (int socket, int length // Länge eines Datenblocks)
{
	std::ofstream out (&quot;test.mp3&quot;, std::ofstream::binary);
	int recieved_bytes = 0;
	int meta_size;
	for (char c; recv (socket, &amp;c, 1, 0) &gt; 0; out &lt;&lt; c) {
		++ recieved_bytes;
		if (recieved_bytes == length + 1) { // fängt ein Metadatenblock an?
			meta_size = c * 16;
			recieved_bytes = 0;
			if (meta_size &gt; 0) { // Wenn ja, hier einlesen
				std::stringstream meta_data;
				for (char d; recv (socket, &amp;d, 1, 0) &gt; 0; meta_data &lt;&lt; d) {
					--meta_size;
					if (meta_size == 0) break;
				}
				std::cout &lt;&lt; meta_data.str () &lt;&lt; std::endl;
			}
		}
	}
}
</code></pre>
<p>Diese Funktion ließt die Metadaten des Shoutcast Streams fehlerfrei aus. Jedoch ist die Aufnahme (die als mp3 Datei vorliegt) mit lästigen Störgeräuschen durchzogen. <a href="http://www.dateihoster.de/de/file/1906/test-mp3.html" rel="nofollow">Hier ein Beispiel</a>. Ich habe keine Ahnung, woher dieses &quot;Schmatzen&quot; kommt und hoffe, jemand kann mir darüber Auskunft geben.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407779</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407779</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Wed, 21 Nov 2007 21:32:21 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Wed, 21 Nov 2007 21:41:19 GMT]]></title><description><![CDATA[<p>kann es sein dass du aus versehen noch das letzte c as eigentlich die metadatenlaenge angebe sollte mit abspeicherst?</p>
<p>basti33 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">void GetData (int socket, int length // Länge eines Datenblocks)
{
	std::ofstream out (&quot;test.mp3&quot;, std::ofstream::binary);
	int recieved_bytes = 0;
	int meta_size;
	for (char c; recv (socket, &amp;c, 1, 0) &gt; 0; out &lt;&lt; c) {
		++ recieved_bytes;
		if (recieved_bytes == length + 1) { // fängt ein Metadatenblock an?
			meta_size = c * 16;
..
		}
	}
}
</code></pre>
</blockquote>
<p>(hab nur kurz geschaut und kenne das format nicht <img
      src="https://www.c-plusplus.net/forum/plugins/nodebb-plugin-emoji/emoji/emoji-one/1f609.png?v=ab1pehoraso"
      class="not-responsive emoji emoji-emoji-one emoji--winking_face"
      title=";)"
      alt="😉"
    /> )</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1407787</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1407787</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Wed, 21 Nov 2007 21:41:19 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Thu, 22 Nov 2007 17:07:05 GMT]]></title><description><![CDATA[<p>Hallo,</p>
<p>danke für deine Antwort. Tatsächlich habe ich dieses char noch eingelesen. Ich habe die Funktion jetzt folgendermaßen geändert:</p>
<pre><code class="language-cpp">void GetData (int socket, int length)
{
	std::ofstream out (&quot;test.mp3&quot;, std::ofstream::binary);
	int recieved_bytes = 0;
	char meta_size;
	while (true) {
		for (char c; recv (socket, &amp;c, 1, 0) &gt; 0; out &lt;&lt; c) {
			++ recieved_bytes;
			if (recieved_bytes == length) {
				recieved_bytes = 0;
				break;
			}
		}
		char r;
		recv (socket, &amp;r, 1, 0);
		meta_size = r * 16;
		if (meta_size &gt; 0) {
			std::stringstream meta_data;
			for (char d; recv (socket, &amp;d, 1, 0) &gt; 0; meta_data &lt;&lt; d) {
				--meta_size;
				if (meta_size == 0) break;
			}
				std::cout &lt;&lt; meta_data.str () &lt;&lt; std::endl;
		}
	}
}
</code></pre>
<p>Leider ändert dies nichts an dem Fehlverhalten. <strong>Das Störgeräusch bleibt nach wie vor!</strong> Wahrscheinlich handelt es sich bei diesem Fehler um eine Kleinigkeit, aber leider finde ich ihn nicht.</p>
<p>Danke für weitere Hilfe</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408345</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408345</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Thu, 22 Nov 2007 17:07:05 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Thu, 22 Nov 2007 17:25:07 GMT]]></title><description><![CDATA[<p>basti33 schrieb:</p>
<blockquote>
<pre><code class="language-cpp">char meta_size;
...
		char r;
		recv (socket, &amp;r, 1, 0);
		meta_size = r * 16;
...
</code></pre>
</blockquote>
<p>das koennte ein weiterer fehler sein, 255*16 &gt; char.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408354</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408354</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Thu, 22 Nov 2007 17:25:07 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Thu, 22 Nov 2007 17:48:14 GMT]]></title><description><![CDATA[<p>rapso schrieb:</p>
<blockquote>
<p>das koennte ein weiterer fehler sein, 255*16 &gt; char.</p>
</blockquote>
<p>Was bedeutet das? Soll ich Integer nehmen oder casten? Die ändern leider nichts an dem Verhalten, d.h. wenn ich meta_size und r als Integer deklariere nimmt er gar nichts mehr auf, deklariere ich nur einen als Integer bleibt das Verhalten wie gehabt.</p>
<p>Danke für die Antworten</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408374</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408374</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Thu, 22 Nov 2007 17:48:14 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Thu, 22 Nov 2007 17:57:30 GMT]]></title><description><![CDATA[<p>basti33 schrieb:</p>
<blockquote>
<p>rapso schrieb:</p>
<blockquote>
<p>das koennte ein weiterer fehler sein, 255*16 &gt; char.</p>
</blockquote>
<p>Was bedeutet das?</p>
</blockquote>
<p>dass 255*16, also 4080 nicht in meta_size reinpasst.</p>
<blockquote>
<p>Soll ich Integer nehmen oder casten? Die ändern leider nichts an dem Verhalten, d.h. wenn ich meta_size und r als Integer deklariere nimmt er gar nichts mehr auf, deklariere ich nur einen als Integer bleibt das Verhalten wie gehabt.</p>
</blockquote>
<p>meta_size sollte int sein. ansonsten kann es sein dass du schon beim ersten mal nicht genug metainformationen liest.<br />
zur sicherheit</p>
<pre><code class="language-cpp">char r;
int meta_size;

meta_size = 16* (int)r;
</code></pre>
<p>zudem hab ich ein wenig das gefuehl, dass der stream erst mit metaifnromationen anfaeng und dann die mp3 daten folgen, mit nem vertauschen der schleifen koennte es dann vielleicht gehen.</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408383</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408383</guid><dc:creator><![CDATA[rapso]]></dc:creator><pubDate>Thu, 22 Nov 2007 17:57:30 GMT</pubDate></item><item><title><![CDATA[Reply to Problem mit Aufnahme eines mp3 Streams on Thu, 22 Nov 2007 18:07:35 GMT]]></title><description><![CDATA[<p>rapso schrieb:</p>
<blockquote>
<p>meta_size sollte int sein. ansonsten kann es sein dass du schon beim ersten mal nicht genug metainformationen liest.</p>
</blockquote>
<p>Danke, aber es funktioniert leider auch so nicht.</p>
<p>rapso schrieb:</p>
<blockquote>
<p>zudem hab ich ein wenig das gefuehl, dass der stream erst mit metaifnromationen anfaeng und dann die mp3 daten folgen, mit nem vertauschen der schleifen koennte es dann vielleicht gehen.</p>
</blockquote>
<p>Sollte er laut den Beschreibungen, die ich bislang gelesen habe, aber nicht. Siehe z.B. <a href="http://www.smackfu.com/stuff/programming/shoutcast.html" rel="nofollow">http://www.smackfu.com/stuff/programming/shoutcast.html</a>.</p>
<p>Danke</p>
]]></description><link>https://www.c-plusplus.net/forum/post/1408392</link><guid isPermaLink="true">https://www.c-plusplus.net/forum/post/1408392</guid><dc:creator><![CDATA[basti33]]></dc:creator><pubDate>Thu, 22 Nov 2007 18:07:35 GMT</pubDate></item></channel></rss>