2013-08-29 19 views
5

Jestem nowy w NDK, więc czytam samouczek i pomyślnie buduję bibliotekę FFMPEG, niż skopiowałem do mojego folderu jni, tworzę plik Android.mk i Application.mk i uruchamiam ndk -build Polecenie, więc teraz mam libavcodec.so do mojego folderu lib .. (nie skopiowałem plików nagłówkowych ffmpeg do mojego folderu jni.) czy konieczne jest dodanie pliku nagłówkowego, czy powinienem dodać pełną bibliotekę ffmpeg do jni ... stack- przepełnienie komentarze mówią, że musisz tylko dodać pliki nagłówkowe)Jak zmniejszyć rozmiar MP4 za pomocą biblioteki FFMPEG do Androida

Wiem, że jeśli chcę przekonwertować mój aparat fotograficzny wideo na mały rozmiar niż muszę skompresować go za pomocą avcodac.so więc go skompilować, ale ważne jest to jak czy mogę tego użyć.

Jest zamieszanie w mojej głowie, aby użyć tego pliku .. 1) Czy muszę użyć System.load ("libavcodec.so") metoda załadować So plik IF tak po załadowaniu, więc pliki, jak mogę uzyskać dostęp natywne metody C/C++?

2) Czy powinienem utworzyć moją klasę java i moją klasę c, które komunikują się ze sobą, a klasa c komunikuje się z klasą avcodec ffmpeg?

A może trzeba zaimplementować obie i jeszcze jedną ważną rzecz JEŻELI muszę stworzyć swoją klasę c niż w Android.mk muszę dodać ją do linii pliku źródłowego ???

Proszę, czy ktoś może mi powiedzieć, jaka jest dostępna metoda i kroki do kompresji rozmiaru pliku wideo w FFMPEG?

Każda pomoc jest doceniana, a to moje pytanie przyda się również innym. Dziękujemy

+0

Czy udało się zmniejszyć rozmiar mp4? – Oam

+0

@ Swap-IOS-Android, czy jesteś w stanie to zrobić? –

+0

@ Mr.G yup użyłem javacv –

Odpowiedz

4

1) Tak, musisz zadzwonić pod numer System.load("libavcodec.so"). Dostęp do metod można uzyskać przez JNI.

2) Należy utworzyć metody JNI zaimplementowane w C i zadzwonić pod numer ffmpeg.

JNI poradnik dla Androida: http://code.google.com/p/awesomeguy/wiki/JNITutorial

ffmpeg poradnik: http://dranger.com/ffmpeg/

+3

Czy mógłbyś mnie poprowadzić w szczegółach ... jak mam stworzyć własną klasę C, która manipuluje biblioteką ffmpeg, prawda? ... i czy muszę używać System.load ("libavcodec.so") w mojej klasie java? ..możesz udostępnić przykładowy samouczek, jeśli masz –

+1

@Sergey k Lepiej jest udostępnić próbkę, aby lepiej poznać ... i nie powiedzieliście mu, że trzeba dodać tę klasę c do Androida.mk –

+0

Odpowiedź zaktualizowany. –

2

JavaCV pochodzi z opakowania Java i skompilowane pliki binarne dla FFmpeg.

Co więcej, próbka RecordActivity.java wydaje się robić dokładnie to, czego szukasz!

1

używasz biblioteki FFmpeg4 do kompresji wideo w systemie Android. więc możesz użyć tego polecenia, aby uzyskać lepszą jakość wideo i minimalną kompresję. Użyłem w moim projekcie, że działa z powodzeniem.

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> 
Powiązane problemy