gpt4 book ai didi

android - 在Facebook和Youtube上同时直播视频

转载 作者:行者123 更新时间:2023-12-03 05:54:28 30 4
gpt4 key购买 nike

我想制作一个可以使用其API将直播视频直接流式传输到Facebook和YouTube的android应用。我已经完成了这两个视频的直播,但都是单独(一次一个)。但是我想通过手机摄像头同时将实时视频流式传输到这两个(Facebook-YouTube)。
我将此库用作RTMP Publisher-https://github.com/pedroSG94/rtmp-rtsp-stream-client-java
我试过采取多个对象,但不适用于此对象。

最佳答案

我是rtmp-rtsp-stream-client-java开发人员。

如果要将重复的流发送到其他服务器,则只需要重复的srsFlvMuxer或rtspClient取决于您的流类型。
例如,如果您使用的是rtmpCamera1,则需要修改此类,如下所示:

public class RtmpCamera1 extends Camera1Base {

private SrsFlvMuxer srsFlvMuxer;
private SrsFlvMuxer srsFlvMuxer2;

public RtmpCamera1(SurfaceView surfaceView, ConnectCheckerRtmp connectChecker) {
super(surfaceView);
srsFlvMuxer = new SrsFlvMuxer(connectChecker);
srsFlvMuxer2 = new SrsFlvMuxer(connectChecker);
}

public RtmpCamera1(TextureView textureView, ConnectCheckerRtmp connectChecker) {
super(textureView);
srsFlvMuxer = new SrsFlvMuxer(connectChecker);
srsFlvMuxer2 = new SrsFlvMuxer(connectChecker);
}

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public RtmpCamera1(OpenGlView openGlView, ConnectCheckerRtmp connectChecker) {
super(openGlView);
srsFlvMuxer = new SrsFlvMuxer(connectChecker);
srsFlvMuxer2 = new SrsFlvMuxer(connectChecker);
}

@RequiresApi(api = Build.VERSION_CODES.JELLY_BEAN_MR2)
public RtmpCamera1(LightOpenGlView lightOpenGlView, ConnectCheckerRtmp connectChecker) {
super(lightOpenGlView);
srsFlvMuxer = new SrsFlvMuxer(connectChecker);
srsFlvMuxer2 = new SrsFlvMuxer(connectChecker);
}

/**
* H264 profile.
*
* @param profileIop Could be ProfileIop.BASELINE or ProfileIop.CONSTRAINED
*/
public void setProfileIop(byte profileIop) {
srsFlvMuxer.setProfileIop(profileIop);
srsFlvMuxer2.setProfileIop(profileIop);
}

@Override
public void setAuthorization(String user, String password) {
srsFlvMuxer.setAuthorization(user, password);
srsFlvMuxer2.setAuthorization(user, password);
}

@Override
protected void prepareAudioRtp(boolean isStereo, int sampleRate) {
srsFlvMuxer.setIsStereo(isStereo);
srsFlvMuxer.setSampleRate(sampleRate);
srsFlvMuxer2.setIsStereo(isStereo);
srsFlvMuxer2.setSampleRate(sampleRate);
}

@Override
protected void startStreamRtp(String url) {
if (videoEncoder.getRotation() == 90 || videoEncoder.getRotation() == 270) {
srsFlvMuxer.setVideoResolution(videoEncoder.getHeight(), videoEncoder.getWidth());
srsFlvMuxer2.setVideoResolution(videoEncoder.getHeight(), videoEncoder.getWidth());
} else {
srsFlvMuxer.setVideoResolution(videoEncoder.getWidth(), videoEncoder.getHeight());
srsFlvMuxer2.setVideoResolution(videoEncoder.getWidth(), videoEncoder.getHeight());
}
srsFlvMuxer.start(url);
//second url stream. For now hardcoded, modify this method to set in startStream library method.
srsFlvMuxer2.start("rtmp://x.rtmp.youtube.com/xxxxxxxxx");
}

@Override
protected void stopStreamRtp() {
srsFlvMuxer.stop();
srsFlvMuxer2.stop();
}

@Override
protected void getAacDataRtp(ByteBuffer aacBuffer, MediaCodec.BufferInfo info) {
srsFlvMuxer.sendAudio(aacBuffer.duplicate(), info); //duplicate because you will reuse it on the second srsFlvMuxer.
srsFlvMuxer2.sendAudio(aacBuffer, info);
}

@Override
protected void onSPSandPPSRtp(ByteBuffer sps, ByteBuffer pps) {
srsFlvMuxer.setSpsPPs(sps.duplicate(), pps.duplicate());//duplicate because you will reuse it on the second srsFlvMuxer.
srsFlvMuxer2.setSpsPPs(sps, pps);
}

@Override
protected void getH264DataRtp(ByteBuffer h264Buffer, MediaCodec.BufferInfo info) {
srsFlvMuxer.sendVideo(h264Buffer.duplicate(), info);//duplicate because you will reuse it on the second srsFlvMuxer.
srsFlvMuxer2.sendVideo(h264Buffer, info);
}
}

关于android - 在Facebook和Youtube上同时直播视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49485977/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com