2013-08-29 15 views
5

Sono nuovo di NDK quindi leggo tutorial e sono riuscito a compilare la lib di FFMPEG piuttosto che a copiarlo nella mia cartella jni per creare file Android.mk e Application.mk ed eseguire ndk -build comando così ora ho ottenuto libavcodec.so nella mia cartella lib .. (non ho copiato i file di intestazione ffmpeg nella mia cartella jni .. è necessario aggiungere il file di intestazione o devo aggiungere ffmpeg lib completo in jni ... stack- i commenti di overflow dicono che devi solo aggiungere i file di intestazione)Come ridurre la dimensione di mp4 utilizzando la lib di FFMPEG in android

So che se voglio convertire il mio video della fotocamera in dimensioni ridotte di quanto devo comprimerlo usando avcodac.so così lo compilo ma importante questo è come posso usare quello.

C'è confusione nella mente di usare quel file così .. 1) Devo usare il metodo System.load ("libavcodec.so") per caricare file So sì dopo il caricamento in modo file come posso accedere i metodi nativi di C/C++?

2) O dovrei creare la mia classe java e la mia classe c che comunicano tra loro e che la classe c comunica con la classe avcodec di ffmpeg ??

Oppure dovrebbe essere necessario implementare entrambi e una cosa più importante SE devo creare la mia classe c rispetto ad Android.mk devo aggiungerlo alla riga del file sorgente ???

E per favore qualcuno può dirmi quali sono il metodo e i passaggi disponibili per comprimere le dimensioni del file video in FFMPEG?

Qualsiasi aiuto è apprezzato e questa mia domanda sarà utile anche ad altri più freschi. Grazie

+0

Sei riuscito a ridurre la dimensione di mp4 con successo? – Oam

+0

@ Swap-IOS-Android, sei riuscito a farlo ?? –

+0

@ Mr.G yup ho usato javacv –

risposta

4

1) Sì, è necessario chiamare System.load("libavcodec.so"). È possibile accedere ai metodi tramite JNI.

2) È necessario creare metodi JNI implementati in C e chiamare ffmpeg.

JNI tutorial per Android: http://code.google.com/p/awesomeguy/wiki/JNITutorial

ffmpeg tutorial: http://dranger.com/ffmpeg/

+3

puoi per favore guidarmi nei dettagli ... come devo creare la mia classe C che manipola ffmpeg lib giusto? ... e ho bisogno di usare System.load ("libavcodec.so") nella mia classe java? .. puoi condividere alcuni esempi di tutorial se hai –

+1

@Sergey k È meglio condividere alcuni esempi in modo da conoscere meglio ... e non hai detto che ha bisogno di aggiungere la classe c in Android.mk –

+0

Risposta aggiornato. –

2

JavaCV viene fornito con wrapper Java e file binari precompilati per FFmpeg.

Inoltre, il campione RecordActivity.java sembra fare esattamente quello che stai cercando!

1

si sta utilizzando la libreria FFmpeg4 per Compression of Video in Android. quindi, puoi usare questo comando per una migliore qualità video e una compressione minima. Ho usato nel mio progetto sta funzionando con successo.

ffmpeg -i <your input video path.mp4> -s 480x320 -acodec mp2 -strict -2 -ac 1 -ar 16000 -r 13 -ab 32000 -aspect 3:2 <your output video path.mp4> 
Problemi correlati