2014-05-14 11 views
48

Jak użyć "niestandardowego" rejestratora wideo do utworzenia VideoTrack i zapewnienia ramek?Utwórz WebRTC VideoTrack z "niestandardowym" Capturerem na Androida z libjingle

Klasyczne podejście do tworzenia Videotrack jest:

1 - Get instancji VideoCapturer

VideoCapturer capturer = VideoCapturer.create(name); 

2 - Tworzenie VideoSource

VideoSource videoSource = peerconnectionFactory.createVideoSource(capturer, videoConstraints); 

3 - Tworzenie a VideoTrack przy użyciu źródła wideo

VideoTrack videoTrack = peerconnectionFactory.createVideoTrack("Label", videoSource); 

4 - Dodaj utwór do MediaStream


Zastanawiałem się, czy istnieje sposób, aby zmienić krok jeden. Zamiast korzystać z natywną instancji Capturer, użyj jednego z Androidem oraz zapewnienie ram do Videotrack używając callback:

public void onPreviewFrame(byte[] data, Camera camera) { 
    // provide the frames to the VideoTrack 
} 

jakieś sugestie?

+0

Nie wiem, co chcesz osiągnąć. W rzeczywistości nie jest to macierzysty chwytak. Używa do przechwytywania klasy kamer Android, a ramka przechodzi do natywnej biblioteki. Może to kod, którego używasz w słoiku. –

+0

W pliku JAR znajduje się klasa VideoCaptureAndroid.java, z której przechwytywane są ramki i przekazywane do rodzimego liberała. –

+0

@BirajZalavadia, tak, widziałem to, ale tak szybko, jak pamiętam, cała "ważna" metoda była prywatna, więc wyglądało na to, że musi być zaimplementowana – Manza

Odpowiedz

1

Najprostszym sposobem (choć nieco "hacky"), aby to zrobić, jest skopiowanie źródła RTCVideoCapturer do lokalnej klasy z projektem i użycie tej lokalnej klasy. Możesz teraz edytować klasę zgodnie ze swoimi potrzebami. Nawet jeśli nie kopiujesz pliku, ale faktycznie budujesz własny, prawdopodobnie lepiej jest skopiować duże części istniejącego rejestratora, niż wykurzyć koło.

+0

Połóż się za odpowiedź. Niestety nie pracuję już nad tą częścią projektu, ale postaram się jak najszybciej zasugerować Twoją sugestię i przedstawić opinię. – Manza