Autore Topic: Normalizzare il volume audio di un video  (Letto 722 volte)

Offline matttt

Normalizzare il volume audio di un video
« il: 19 Giugno 2014, 16:43:54 CEST »
0
Hola :)
Ho un componente MediaPlayer in cui girano alcuni video che possono avere volumi della traccia audio diversi.
Sto cercando un modo (se possibile) di normalizzare il volume (stile ReplayGain per intenderci) ma facendo un po' di ricerche non trovo nulla.
Qualcuno mi sa aiutare?

Ho visto l'interessante classe (e derivati):
AudioEffect | Android Developers
Ma non mi sembra ci sia un effetto Normalize...
Le mie apps su Google Play Store:

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:Normalizzare il volume audio di un video
« Risposta #1 il: 19 Giugno 2014, 17:28:19 CEST »
0
In inglese si chiama anche Automatic Gain Control (AGC) ed è presente nel API di Android dalla versione 16. Ignoro se poi funziona veramente, non mi è mai servito.

http://developer.android.com/reference/android/media/audiofx/AutomaticGainControl.html


Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline matttt

Re:Normalizzare il volume audio di un video
« Risposta #2 il: 19 Giugno 2014, 17:44:25 CEST »
0
Il controllo del guadagno non è esattamente la stessa cosa...
Se leggi attentamente quella classe (recente) si applica solo al volume dei segnali in ingresso, mic in quindi.
Le mie apps su Google Play Store:

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:Normalizzare il volume audio di un video
« Risposta #3 il: 19 Giugno 2014, 22:47:49 CEST »
0
Si è vero anche in elettronica esiste un circuito con lo stesso nome e funzione usato negli ingressi da microfono.

Prova a vedere se con le OpenSL/OpenMAX (presenti da Android 2.3) riesci a catturare audio in uscita prima di essere riprodotto, ma devi usare NDK.

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG

Offline matttt

Re:Normalizzare il volume audio di un video
« Risposta #4 il: 20 Giugno 2014, 09:00:53 CEST »
0
Passare ad NDK mi complicherebbe di molto il progetto (che è per un cliente).

Mmm... pensavo più a qualcosa tipo:
- cerco i picchi audio (alti e bassi) del video (e già qui mi sembra incasinata la cosa);
- applico una funzione tipo (risposta 1):
math - Java algorithm for normalizing audio - Stack Overflow
- regolo l'audio in uscita di conseguenza.
Le mie apps su Google Play Store:

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:Normalizzare il volume audio di un video
« Risposta #5 il: 20 Giugno 2014, 10:39:05 CEST »
+1
Le elaborazioni di quel tipo in Java sono di solito lente. Java non gestisce i numeri senza segno quindi sei costretto a continue operazioni di conversione tra numeri di grandezze diverse.

Per ricevere una parte dei campioni audio in bassa qualità in uscita puoi usare la classe Visualizer:

http://developer.android.com/reference/android/media/audiofx/Visualizer.html

Inviato dal mio Nexus 5 utilizzando Tapatalk

adb logcat | tee /tmp/logcat | grep TAG