Autore Topic: Processing video in run-time  (Letto 824 volte)

Offline andryx

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT - S5830
  • Sistema operativo:
    Eclipse su Windows 7
Processing video in run-time
« il: 19 Giugno 2013, 10:24:03 CEST »
0
Salve a tutti!!
Mi trovo a dovere sviluppare una applicazione per Android che si basa sul trasferimento di un segnale video tramite protocollo UDP...una sorta di skype senza audio.

Precisamente ai frame del segnale che acquisisce la videocamera deve potere essere applicato un algoritmo di manipolazione di immagini digitali (non dico ogni frame ma quanto meno un 7-8 frame al secondo) generando quindi una nuova serie di frame, ricanalizzati come nuovo flusso video ed inviati al dispositivo ricevitore tramite protocollo UDP.
Ora con precisione non ho idea se il flusso video deve essere ricostruito sul dispositivo di invio o di ricezione, ma ciò che importa è che al ricevitore deve pervenire un flusso di dati, proveniente dalla sorgente mittente, manipolati con l'applicazione dell'algoritmo di elaborazione.
Ora...mi chiedevo principalmente se esistono delle librerie o dei metodi per ottenere un flusso video da videocamera elaborato e manipolato in tempo reale. Se poi qualcuno ha dei consigli sui metodi di trasferimento di questo flusso ancora meglio  8-)

Spero di essere stato il più chiaro possibile!!  :-)
Android to iOS: How many phone mount your OS??
iOS to Android: mmm...are you joking me?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Processing video in run-time
« Risposta #1 il: 19 Giugno 2013, 11:38:38 CEST »
0
Hai descritto qualcosa che esiste già da molto tempo, stai reinventando la ruota:

http://www.ietf.org/rfc/rfc3550.txt

nel API di Android è già implementato:

android.net.rtp | Android Developers

Bisogna avere una certa competenza tecnica sull'argomento.
adb logcat | tee /tmp/logcat | grep TAG

Offline andryx

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT - S5830
  • Sistema operativo:
    Eclipse su Windows 7
Re:Processing video in run-time
« Risposta #2 il: 19 Giugno 2013, 12:42:56 CEST »
0
Hai descritto qualcosa che esiste già da molto tempo, stai reinventando la ruota:

http://www.ietf.org/rfc/rfc3550.txt

nel API di Android è già implementato:

android.net.rtp | Android Developers

Bisogna avere una certa competenza tecnica sull'argomento.

Scusa se te lo dico, senza offesa, ma forse non hai compreso il punto centrale del mio topic.
Non avevo dubbi che esistessero dei metodi per il trasferimento di un flusso di dati acquisito in tempo reale, infatti se hanno implementato skype per mobile è ovvio che questo problema è già stato risolto!!
Il mio dubbio è esiste invece un modo o dei metodi per acquisire un flusso dati darlo in pasto ad un algoritmo di elaborazione in ambito Computer Vision ( che poi starà a me sviluppare ) ed ottenere in tempo reale l'output.

Ciò che mi hai linkato parla di acquisizione e trasferimento, sono pure in interessato a ciò (infatti ti ringrazio parzialmente) ma non è il punto centrale del mio dubbio!!
« Ultima modifica: 19 Giugno 2013, 12:44:33 CEST da andryx »
Android to iOS: How many phone mount your OS??
iOS to Android: mmm...are you joking me?

Offline Nicola_D

  • Utente storico
  • *****
  • Post: 2479
  • SBAGLIATO!
  • Respect: +323
    • Github
    • Google+
    • nicoladorigatti
    • Mostra profilo
  • Dispositivo Android:
    Nexus 6p, Nexus 4, Nexus S, Nexus 7(2012)
  • Sistema operativo:
    Windows 7
Re:Processing video in run-time
« Risposta #3 il: 19 Giugno 2013, 14:08:17 CEST »
0
vedi se questo ti aiuta ANDROID | OpenCV
IMPORTANTE:NON RISPONDO A PROBLEMI VIA MESSAGGIO PRIVATO
LOGCAT: Non sai cos'è? -> Android Debug Bridge | Android Developers
               Dov'è in Eclipse? -> Window -> Open Prospective -> DDMS e guarda in basso!
[Obbligatorio] Logcat, questo sconosciuto! (Gruppo AndDev.it LOGTFO) - Android Developers Italia

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Processing video in run-time
« Risposta #4 il: 19 Giugno 2013, 14:11:11 CEST »
+1
Ti ho dato solo un suggerimento per il trasporto e la sessione, se vuoi anche la seconda parte sulla elaborazione video, la cosa è ancora più difficile.

Per l'acquisizione in tempo reale è possibile via SurfaceView:

Controlling the Camera | Android Developers

devi implementare una callback per ogni frame ricevuto con con interfaccia PreviewCallback:

Camera.PreviewCallback | Android Developers

la cosa difficile è il formato dei dati utilizzato per ogni frame, non sono RGB ma YUV, per la precisione YCbCr con campionatura e sotto campionatura 4:2:0. Questo formato è difficile da gestire ma è perfetto per MPEG, se si vuole convertire in RGB serve del codice nativo scritto in C/C++, Java non è adatto (Java non gestisce i numeri senza segno quindi il codice per elaborare delle immagini in generale è molto inefficiente).

Esistono delle librerie native per l'elaborazione delle immagini come le OpenCV per Android.

Se si vuole usare solo le API di Android con le ultime versioni del API hanno aggiunto il supporto per il Renderscript:

Computation | Android Developers

permette di programmare tutti gli effetti e le elaborazioni delle immagini molto velocemente utilizzando la GPU (via OpenGL-ES) e la CPU via LLVM, naturalmente bisogna conosce molto bene gli algoritmi che si vuole utilizzare. Esistono già pronti una serie di effetti base:

EffectFactory | Android Developers

Le competenze tecniche sulle elaborazioni delle immagini sono maggiori rispetto a quelle sul trasporto.
adb logcat | tee /tmp/logcat | grep TAG

Offline andryx

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT - S5830
  • Sistema operativo:
    Eclipse su Windows 7
Re:Processing video in run-time
« Risposta #5 il: 20 Giugno 2013, 09:53:32 CEST »
0
Le competenze tecniche sulle elaborazioni delle immagini sono maggiori rispetto a quelle sul trasporto.

Adesso direi che ci siamo :-D  ti ringrazio...per le competenze beh fatti il conto che la app che devo sviluppare é per una tesi su analisi d immagini....anche se avevo visto quel sistema di colori solo con dei cenni vedrò di studiarci sopra col prof.

@nicola avevo già visto su open cv ma non  erano esaustivi riguardo al mio problema.

Vi farò sapere se funonzia!!! :-D
Android to iOS: How many phone mount your OS??
iOS to Android: mmm...are you joking me?

Offline andryx

  • Nuovo arrivato
  • *
  • Post: 8
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung GT - S5830
  • Sistema operativo:
    Eclipse su Windows 7
Re:Processing video in run-time
« Risposta #6 il: 03 Agosto 2013, 16:45:28 CEST »
0
Scusate se riprendo solo ora la discussione XD

@iceweasel volevo chiederti se potresti essere un pò più preciso per quanto riguarda la parte realizzativa relativa al trasporto sulla rete...ho idee un pò confuse e non so da dove cominciare
Android to iOS: How many phone mount your OS??
iOS to Android: mmm...are you joking me?

Offline iceweasel

  • Moderatore globale
  • Utente senior
  • *****
  • Post: 878
  • Respect: +147
    • Mostra profilo
  • Dispositivo Android:
    LGE P990 - Google Nexus 5
  • Sistema operativo:
    Linux Debian Sid
Re:Processing video in run-time
« Risposta #7 il: 03 Agosto 2013, 18:11:29 CEST »
+1
Più preciso di un RFC è impossibile :-)

Si inizia a leggere con attenzione RFC, si studia la documentazione dell'API di Android, si inizia a scrivere del codice se serve, si possono utilizzare dei programmi d'appoggio per inviare e/o ricevere dati come VLC, FFMpeg o altri. Bisogna stare molto attenti ai codec, solo da una determinata versione delle API di Android in poi certi codec sono disponibili.
adb logcat | tee /tmp/logcat | grep TAG