Willkommen bei dotnet-snippets.de! Snippet hinzufügen Login Registrieren
Snippets in der Datenbank: 1563 | Anzahl registrierter User: 1895 | Besucher online: 29
Hauptmenü
Home
Top Ten
Zufälliger Snippet
FAQs
.NET Community
dotnet-forum.de
dotnet-kicks.de
Social

RSS Feeds
Rss Alle Snippets
Rss C#
Rss VB.NET
Rss C++
Rss ASP.NET
Partner
Member of Microsoft Community Leader/Insider Program (CLIP)

Internet Stream aufzeichnen mit C#


Autor: Kevin Gerndt
Sprache: C#
Bewertung:
noch nicht bewertet
Anzahl der Aufrufe: 2983
  
Kick it on dotnet-kicks.de  

Beschreibung:

Mit dieser Klasse lassen sich Internet Streams aufzeichnen und in eine Datei speichern.

Wichtig dabei ist die Konfig folgendermaßen zu ergänzen:
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<system.net>
<settings>
<httpWebRequest useUnsafeHeaderParsing="true" />
</settings>
</system.net>
</configuration>


Diese Ergänzung der Konfig ermöglicht es Streams mit unsicherem Header aufzuzeichnen.


Abgelegt unter: Stream aufzeichnen, Internetstream, Internet Stream, Stream.



C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
class RadioStream
{
	public RadioStream(string streamingUrl, string fullFilename)
	{
		webRequest = WebRequest.Create(streamingUrl);
		this.FullFilename = fullFilename;
	}

	public string FullFilename { get; set; }

	WebRequest webRequest;
	WebResponse webResponse;
	BufferedStream bufferedStream;


	public bool IsRecording;
	private bool stopped = true;

	public delegate void RecordingStartedEventhandler();
	public event RecordingStartedEventhandler RecordingStarted;

	public delegate void RecordingStoppedEventhandler();
	public event RecordingStoppedEventhandler RecordingStopped;

	public delegate void RecordingProgressChangedEventhandler(object sender, RecordingEventArgs args);
	public event RecordingProgressChangedEventhandler RecordingProgressChanged;

	public void StartRecording()
	{
		stopped = false;
		IsRecording = true;

		webResponse = webRequest.GetResponse();

		bufferedStream = new BufferedStream(webResponse.GetResponseStream());

		using (FileStream outputStream = new FileStream(this.FullFilename, FileMode.Create, FileAccess.Write))
		{
			int cnt = 0;
			const int LEN = 9;
			byte[] buffer = new byte[LEN];

			while ((cnt = bufferedStream.Read(buffer, 0, LEN)) != 0)
			{
				if (stopped == true)
				{
					break;
				}

				outputStream.Write(buffer, 0, cnt);

				RecordingProgressChanged(this, new RecordingEventArgs(outputStream.Length));
			}
		}

		if (RecordingStarted != null)
		{
			RecordingStarted();
		}
	}

	public void StopRecording()
	{
		stopped = true;
		IsRecording = false;

		if (RecordingStopped != null)
		{
			RecordingStopped();
		}
	}
}

public class RecordingEventArgs : EventArgs
{
	public long StreamLength { get; set; }

	public RecordingEventArgs(long streamLength)
	{
		this.StreamLength = streamLength;
	}
}
Sie haben Fragen zu diesem Snippet oder brauchen Hilfe bei der .NET Entwicklung?
Freundliche und kompetente Entwickler helfen Ihnen gern weiter im Forum für .NET Entwicklung.



Kommentare:
(Zum Schreiben von Kommentaren bitte anmelden.)



schlecht sehr gut
1 2 3 4 5 6 7 8 9 10
Nur angemeldete User können Snippets bewerten.