PDA

View Full Version : [c] riproduzione audio da pagina internet


mamo139
11-03-2008, 12:11
dunque...
come tutti sappiamo, ci sono alcune pagine internet che contengono contenuti video e audio.
il mio obiettivo è riprodurre le tracce audio li presenti e le tracce audio dei video senza utilizzare un browser, ovvero senza vedere la pagina che normalmente deve riprodurli.
è facile con le socket richiedere il sorgente della pagina, ma non mi viene in mente come poter riprodurre con un programma in c la traccia audio in questione...

qualcuno sa come aiutarmi?

grazie mille

gugoXX
11-03-2008, 21:55
Ma proprio in C?
Non ne ho proprio voglia...

Una volta che hai il binario da suonare o lo stream audio (tipo radio su internet), in C# sono 2 click e una riga di codice.

mamo139
11-03-2008, 22:48
Ma proprio in C?
Non ne ho proprio voglia...

Una volta che hai il binario da suonare o lo stream audio (tipo radio su internet), in C# sono 2 click e una riga di codice.

eh purtroppo c# non lo conosco... :(
eh ma il mio problema è che non so come prendere lo stream... ad esempio prendiamo youtube... come ricevo lo stream??

gugoXX
11-03-2008, 23:26
eh purtroppo c# non lo conosco... :(
eh ma il mio problema è che non so come prendere lo stream... ad esempio prendiamo youtube... come ricevo lo stream??

Se la pagina e' questa
http://www.youtube.com/watch?v=pVYp2sgA9M0

Lo stream e' questo
http://www.youtube.com/player2.swf?fs=1&quot=&title=Kaki+King+-+&sourceid=y&video_id=pVYp2sgA9M0&l=239&sk=1bPfoxJpnCOzCWiuccP61wU&Pull+Me+Out+Alive=&+Music+Video=&t=OEgsToPDskKyCB2opfyOSUEKcRP9UCtw&hl=en&plid=AARIMSZITdgJGNCpAAAAIIAoQAA&sdetail=p%253A%2F

come dicevo questo stream si puo' vedere o anche solo suonare, in C# con 1 riga di codice, embeddando il WindowsMediaPlayer direttamente nella form che vuoi (o in background)
Forse si puo' ancora piu' semplicemente con il VisualBasic.Devices.Audio.Play (modifica: purtoppo no ho provato)
Se invece vuoi stare sullo standard puoi compilare VLC e dovrebbe funzionare anche li'.

mamo139
11-03-2008, 23:50
Se la pagina e' questa
http://www.youtube.com/watch?v=pVYp2sgA9M0

Lo stream e' questo
http://www.youtube.com/player2.swf?fs=1&quot=&title=Kaki+King+-+&sourceid=y&video_id=pVYp2sgA9M0&l=239&sk=1bPfoxJpnCOzCWiuccP61wU&Pull+Me+Out+Alive=&+Music+Video=&t=OEgsToPDskKyCB2opfyOSUEKcRP9UCtw&hl=en&plid=AARIMSZITdgJGNCpAAAAIIAoQAA&sdetail=p%253A%2F

come dicevo questo stream si puo' vedere o anche solo suonare, in C# con 1 riga di codice, embeddando il WindowsMediaPlayer direttamente nella form che vuoi (o in background)
Forse si puo' ancora piu' semplicemente con il VisualBasic.Devices.Audio.Play (modifica: purtoppo no ho provato)
Se invece vuoi stare sullo standard puoi compilare VLC e dovrebbe funzionare anche li'.

oh capito... e se volessi rimanere nel mio programmino a console in c?? :p
non c'è ad esempio qualche api che mi potrebbe aiutare?

ps: da dove hai preso lo stream che mi hai dato come esempio?

grazie

gugoXX
12-03-2008, 00:02
Forse qui dentro trovi qualocsa
winmm.dll

public static extern int waveOutGetNumDevs();
public static extern int waveOutPrepareHeader(IntPtr hWaveOut, ref WaveHdr lpWaveOutHdr, int uSize);
public static extern int waveOutUnprepareHeader(IntPtr hWaveOut, ref WaveHdr lpWaveOutHdr, int uSize);
public static extern int waveOutWrite(IntPtr hWaveOut, ref WaveHdr lpWaveOutHdr, int uSize);
public static extern int waveOutOpen(out IntPtr hWaveOut, int uDeviceID, WaveFormat lpFormat, WaveDelegate dwCallback, int dwInstance, int dwFlags);
public static extern int waveOutReset(IntPtr hWaveOut);
public static extern int waveOutClose(IntPtr hWaveOut);
public static extern int waveOutPause(IntPtr hWaveOut);
public static extern int waveOutRestart(IntPtr hWaveOut);
public static extern int waveOutGetPosition(IntPtr hWaveOut, out int lpInfo, int uSize);
public static extern int waveOutSetVolume(IntPtr hWaveOut, int dwVolume);
public static extern int waveOutGetVolume(IntPtr hWaveOut, out int dwVolume);

Ovviamente occorre anche costruire il wrapper per lo streamer.

Se provi a leggere qui, qualcuno l'ha gia' fatto per il C#.
http://www.codeproject.com/KB/audio-video/cswavplay.aspx
"Basterebbe" convertire il tutto in C.

Mi sembra di avere capito che queste API suonino solo i WAV, quindi mi sa non gli stream come quello di YouTube.

gugoXX
12-03-2008, 00:21
static void Main(string[] args)
{
Console.WriteLine("Preparing");
WindowsMediaPlayer wmp = new WMPLib.WindowsMediaPlayer();
wmp.URL = "mms://wstream5a.di.fm/harddance";
Console.WriteLine("Play");
Console.ReadKey();
}