2009-04-05 45 views
6

Actualmente estoy escribiendo una aplicación que permitirá a un usuario instalar algún tipo de aplicación (tal vez un servicio de Windows) que abrirá un puerto en su PC y le dará un destino particular en el disco duro, entonces podrá reproducir archivos mp3.C#: transmisión de un archivo de audio de un servidor a un cliente

Luego tendré otra aplicación que se conectará al servidor (siendo la PC del usuario) y podrá navegar por los datos alojados conectándose a esa PC (remotamente, por supuesto) dado el puerto, y archivos stream stream mp3 del servidor para la aplicación


he encontrado algunos tutoriales en línea, pero la mayoría de ellos están a punto de servidores de archivos en C# y descarga le permiten descargar un archivo completo. Lo que quiero es para transmitir un archivo mp3 para que se inicie la reproducción cuando un cierto número de bytes se descarga (es decir, cuando está siendo amortiguada)


¿Cómo hago para realizar una tarea en tales? Lo que necesito saber específicamente es cómo escribir esta aplicación (que más adelante convertiré en un Servicio de Windows) que escuchará en un puerto específico los archivos de una secuencia, de modo que pueda acceder a los archivos por algún tipo de orden: http://<serverip>:65000/acdc/wholelottarosie.mp3 y con suerte poder transmitir ese archivo en un WPF MediaPlayer.


[Actualización]

estaba siguiendo this tutorial sobre la construcción de un servidor de archivos y enviar el archivo desde el servidor al cliente. ¿Es lo que tengo que hacer algo por el estilo?

[Actualización]

Actualmente leer este post: Play Audio from a Stream using C# y creo que se ve muy prometedor en cuanto a cómo puedo reproducir archivos de streaming; pero todavía no sé cómo puedo transmitir los archivos desde el servidor.

Respuesta

7

No existe una diferencia efectiva entre la transmisión y la descarga. Son lo mismo. Cualquier diferencia es puramente semántica.

Si quisiera, podría "descargar" un MP3 de cualquier servidor web y comenzar a reproducirlo mientras lo estaba descargando. Solo requiere que almacene temporalmente algunos de los datos y empiece a enviarlos a sus rutinas de decodificación y reproducción de inmediato.

Del mismo modo, incluso los llamados servidores de "transmisión" se pueden descargar. Solo tiene que guardar los bytes a medida que se envían por el cable a un archivo.

Las aplicaciones "Streaming" son solo aplicaciones que no están diseñadas para guardar los archivos en el disco.

EDITAR:

Existe una excepción. Dos realmente:

Primero, si está transmitiendo audio "en vivo", como la radio u otros tipos en los que no necesita el 100% de confiabilidad, entonces transmiten usando UDP. Esto aún se puede guardar si lo desea, pero está más orientado a paquetes que orientado a flujos.

El segundo es cuando se utiliza el cifrado, en cuyo caso, es probable que aún pueda guardar el archivo, pero sería inútil sin el algoritmo de cifrado y las claves.

+0

Puede transmitir desde IIS o utilizar el servidor "Cassini" para escribir el suyo. Esto no es difícil de hacer. Póngalos en una carpeta en el sitio web. Solo recuerda que los espacios son% 20 o + en material web. como http: //server/john%20Cougar%20Mellencamp.mp3 o http: //server/john+Cougar+Mellencamp.mp3 –

2

Esto simplemente no es cierto.

La diferencia entre una descarga de archivos y una secuencia multimedia HTTP es el encabezado de codificación, que está configurado para la codificación fragmentada para una transmisión. Además, la descarga de un archivo tiene un encabezado Content-Length, por lo que el sistema del destinatario puede conocer el tamaño del archivo por adelantado.

No hay un encabezado Content-Length con una secuencia multimedia, por lo tanto, no hay un punto final esperado. Por el contrario, solo se reciben y procesan una serie continua de fragmentos de datos, mientras continúen apareciendo.

+0

Creo que está asumiendo que "transmitir" significa contenido en vivo e interminable. Eso no es necesariamente cierto. Pandora, por ejemplo, transmite archivos individuales, al igual que otros servicios de música. Los videos a menudo se "transmiten" pero tienen puntos finales y de inicio definitivos. Stream se refiere al acto de reproducir un archivo a medida que se transmite, no porque se trate de una secuencia de datos interminable. –

+0

@MystereMan - Puede haber una desconexión entre la respuesta de Fred y su interpretación. No está sugiriendo que la transmisión no pueda tener un punto final definido, sino más bien que el cliente nunca se dé cuenta de dónde estará ese punto final hasta que llegue allí. En lo que a ella respecta, podría continuar sin fin. – Brian

Cuestiones relacionadas