Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Internet (https://www.clubdelphi.com/foros/forumdisplay.php?f=3)
-   -   Streaming Audio/Video desde Delphi para Android (Java) (https://www.clubdelphi.com/foros/showthread.php?t=96275)

pockelsm3 21-06-2023 22:20:03

Streaming Audio/Video desde Delphi para Android (Java)
 
Saludos a todos

necesito ayuda para hacer streaming.

Concepto:
Estoy junto a un amigo realizando una app en android (Java) para reproducir musica y videos desde un repositorio en una red local (ya que habran carios dispositivos conectados y consumiendo los
recursos).

Problema:
Hemos hecho un servicio con datasnap, para enviar la Informacion (formato JSON) de la base de datos que se encuentra en el servidor (Artistas, Canciones, Genero Musical, Portadas y la ruta de
ubicación del archivo), todo esta bien hasta el punto de la "ruta de ubicación" debido que el reproductor debe recibir la ruta tipo url y no el formato de ruta que utiliza windows.

he intentado varias formas de convertir la ruta de windows en formato url, aun sigo sin conseguir resultados.


gracias de antemano

Casimiro Notevi 22-06-2023 09:42:53

Cita:

Empezado por pockelsm3 (Mensaje 551830)
...he intentado varias formas de convertir la ruta de windows en formato url, aun sigo sin conseguir resultados.

Creo que no se entiende bien realmente cuál es el problema, pero si se trata de "descargar" de alguna forma algo desde una url, entonces tendrás que tener activado algún tipo de servidor web.
No sé si es eso lo que preguntas.

pockelsm3 22-06-2023 16:48:07

Cita:

Empezado por Casimiro Notevi (Mensaje 551835)
Creo que no se entiende bien realmente cuál es el problema, pero si se trata de "descargar" de alguna forma algo desde una url, entonces tendrás que tener activado algún tipo de servidor web.
No sé si es eso lo que preguntas.


Saludos Casimiro, el punto no es para descarga, es que el reproductor hecho en android, al recibir la URL reproduzca ese archivo (video o audio).

me explicare mejor, el objetivo es igual al que se hace en windows, al media player le pasas la ruta de del archivo en la red y el media player reproduce ese archivo, en android es similar con la diferencia
de que en vez de pasarle la ruta de red de ser una URL, por eso es el objetivo de convertir la ruta del archivo en formato URL.


en este tema de asuntos web son un pollito, puede ser que me esten faltando asunto, por eso requiero de la ayuda y orientacion y lo que me podria faltar

Casimiro Notevi 22-06-2023 17:12:44

A ver si entiendo, quieres que la ruta sea algo como:
En lugar de algo como:
Cita:

H:\musicas\cancion001.mp3
¿Es eso?

pockelsm3 22-06-2023 18:27:15

Cita:

Empezado por Casimiro Notevi (Mensaje 551844)
A ver si entiendo, quieres que la ruta sea algo como:

En lugar de algo como:

¿Es eso?

es correcto, he encontrado algunas funciones, en teoria hacen el trabajo, pero al momento de ejecutar la url generado, no me hace nada

ejemplo

tengo esta ruta => D:\Projects\EMDICA 2019\Win32\Debug\Musica\A Don Miguelo_Reggae_Como Yo Le Doy\Don-Miguelo-Como-Yo-Le-Doy-Mambo-Version.mp3

cuando hago la conversion => http://emdica2.ddns.net:8080/D%3A%5C...bo-Version.mp3

no funciona

Casimiro Notevi 23-06-2023 09:53:35

Supongo que al usar http se espera que haya algún tipo de servidor que entienda el protocolo.

lucho6007 23-06-2023 13:55:41

Pasos UNC
 
Hola a todos!
Supongo que el problema debe ser que la ubicación del archivo no está disponible para los dispositivos.
¿Si usas el paso UNC funciona? Esto es "\\Servidor\Directorio\Archivo.ext".
En caso que no te funcione, tenés que tener compartido algún directorio que contenga el archivo.


La función que te devuelve el paso UNC es ExpandUNCFileName, o bien podés usar la API de Windows:
Código Delphi [-]

function GetUNCName(const LocalPath: string): string;
var
  BufferSize: DWord;
  DummyBuffer: Byte;
  Buffer: Pointer;
  Error: DWord;
begin
  BufferSize := 1;
  WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, @DummyBuffer, BufferSize);
  Buffer := AllocMem(BufferSize);
  try
    Error := WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, Buffer, BufferSize);
    if Error <> NO_ERROR then
      begin
        SetLastError(Error);
        RaiseLastWin32Error;
      end;
    Result := PUniversalNameInfo(Buffer)^.lpUniversalName
  finally
    FreeMem(Buffer);
  end;
end;


un ejemplo de llamada es:
Código Delphi [-]
Label1.Caption := GetUNCName('y:\xyz\');


¡Espero te sirva!

pockelsm3 25-06-2023 19:12:35

Cita:

Empezado por lucho6007 (Mensaje 551866)
Hola a todos!
Supongo que el problema debe ser que la ubicación del archivo no está disponible para los dispositivos.
¿Si usas el paso UNC funciona? Esto es "\\Servidor\Directorio\Archivo.ext".
En caso que no te funcione, tenés que tener compartido algún directorio que contenga el archivo.


La función que te devuelve el paso UNC es ExpandUNCFileName, o bien podés usar la API de Windows:
Código Delphi [-]

function GetUNCName(const LocalPath: string): string;
var
  BufferSize: DWord;
  DummyBuffer: Byte;
  Buffer: Pointer;
  Error: DWord;
begin
  BufferSize := 1;
  WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, @DummyBuffer, BufferSize);
  Buffer := AllocMem(BufferSize);
  try
    Error := WNetGetUniversalName(PChar(LocalPath), UNIVERSAL_NAME_INFO_LEVEL, Buffer, BufferSize);
    if Error <> NO_ERROR then
      begin
        SetLastError(Error);
        RaiseLastWin32Error;
      end;
    Result := PUniversalNameInfo(Buffer)^.lpUniversalName
  finally
    FreeMem(Buffer);
  end;
end;


un ejemplo de llamada es:
Código Delphi [-]
Label1.Caption := GetUNCName('y:\xyz\');


¡Espero te sirva!


gracias por ayudarme en busca de mi solucion, hice la prueba la funcion proporcionada, de igual forma sigo sin obtner el dato necesario.

en mis investigaciones mas a fondo, encontre que no es solo tranformar la ruta local a url, debo crear una api que haga ese proceso y a la vez le proporcione los recursos a la app mobile y pueda consumirlo.

gracias a todos por sus interes comtinuo de ayudar en las necesidades de los menos diestros.

Casimiro Notevi 26-06-2023 09:16:24

Es lo que comenté: "al usar http se espera que haya algún tipo de servidor que entienda el protocolo."


La franja horaria es GMT +2. Ahora son las 15:23:43.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi