Próbuję użyć sprzętowego enkodera H264
na Androidzie, aby utworzyć wideo z kamery, i użyć FFmpeg
do mux w dźwięku (wszystko na samym telefonie z Androidem)Dekoduj sprzętowy kodowany sprzętowo aparat H264 za pomocą ffmpeg w czasie rzeczywistym
Do tej pory udało mi się spakować plik H264
do pakietów rtsp
i odszyfrować go za pomocą VLC (ponad UDP
), więc wiem, że film jest co najmniej poprawnie sformatowany. Mam jednak problem z uzyskaniem danych wideo do ffmpeg
w formacie, który może zrozumieć.
Próbowałem wysyłając te same rtsp
pakietów do portu 5006 na localhost (przez UDP), a następnie dostarczenie ffmpeg
z plikiem sdp
że Mówi, który port lokalny strumień wideo jest w najbliższych i jak do dekodowania wideo , jeśli rozumiem, że przesyłam strumieniowo prawidłowo. Jednak to nie działa i mam problem ze zdiagnozowaniem, dlaczego, jako ffmpeg
po prostu siedzi tam czekając na wejście.
Ze względu na opóźnienie i skalowalność nie mogę po prostu wysłać wideo i audio na serwer i mux tam, trzeba to zrobić na telefonie, w tak lekki sposób, jak to możliwe.
Sądzę, że szukam sugestii, jak można to osiągnąć. Optymalnym rozwiązaniem byłoby przesłanie skompresowanego pliku wideo H264
do ffmpeg
przez potok, ale nie mogę wysłać parametrów pliku, którego potrzebuje do dekodowania wideo.
Mogę podać więcej informacji na żądanie, na przykład w jaki sposób skompilowano ffmpeg
dla Androida, ale wątpię, czy jest to konieczne.
Aha, i sposób, w jaki uruchamiam ffmpeg
jest przez linię poleceń, wolałbym raczej unikać grzebania z jni, jeśli to w ogóle możliwe.
Pomoc będzie bardzo ceniona, dzięki.
dlaczego dekodujesz za pomocą ffmpeg? użyj wbudowanego obiektu MediaPlayer –
Czy próbowałeś używać live555 do streamowania danych wyjściowych ffmpeg za pośrednictwem RTSP? Ponadto, czy ffmpeg nie powinien sprawdzać strumienia i samemu wyszukiwać strumienia informacji? – Shark
Myślę, że Aviad ma tę prawdę. Jak wiesz, jaki format wideo produkuje kamera? –