Create a WebRTC VideoTrack with a "custom" Capturer on Android with libjingle
Asked Answered
A

1

58

How to use a "custom" video capturer to create a VideoTrack and provide frames?

The classic approach to create a VideoTrack is:

1 - Get a VideoCapturer instance

VideoCapturer capturer = VideoCapturer.create(name);

2 - Create a VideoSource

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

3 - Create a VideoTrack using the video source

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

4 - Add the track to the MediaStream


I was wondering if there is a way to change step one. Instead of using the native Capturer instance, use an Android one, and provide the frames to the VideoTrack using the callback:

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

Any suggestions?

Awoke answered 14/5, 2014 at 12:13 Comment(10)
Don't know what you want to achieve.Actually it is not native capturer. It is using android camera class to capture and frame is passes to native lib.May be the code you are using is inside the jar.Pollitt
There is a class VideoCaptureAndroid.java in jar file from where the frames are capture and passes to native liberary.Pollitt
@BirajZalavadia, yes I saw it, but as soon as I remember it all the "important" method were private so it looked like it had to be implementedAwoke
yes you are right.But if if you are using source coded not jar you can change it whatever you want.Pollitt
What you want to achieve by intercepting frames?Pollitt
Mainly I want to be able to modify, edit or adding manually frames to the video track, and eventually provides frame for an external video source (e.g webcam)Awoke
@Awoke Did you find a way to do this?Presumption
@Awoke Have you managed to do that?Uttica
@Awoke Hi have you done this successfully? (after 6 years :) )Angwantibo
Unfortunately not :(Awoke
W
2

The easiest way (although a bit "hacky") to do this is to copy the source of RTCVideoCapturer to a local class withing your project and just use that local class. You can now edit the class to suit your needs. Even when not copying the file but actually building your own, it's probably better to copy large parts of the existing capturer than to reinvent the wheel.

Whitehall answered 6/2, 2015 at 14:34 Comment(0)

© 2022 - 2024 — McMap. All rights reserved.