有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

从安卓到RTSP服务器的java视频流

我需要将视频从安卓手机传输到RTSP服务器,然后在另一部安卓手机上接收视频。我在谷歌上搜索了很多,但没有找到一个好的解决方案。我找到的所有东西都是libstreaming,但我无法在我的应用程序中运行它

以下是我的示例代码:

private SurfaceView mSurfaceView;
   private Session mSession;
   private static RtspClient mClient;

   @Override
   protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    mSurfaceView = (SurfaceView) findViewById(R.id.surface);
    mSurfaceView.getHolder().addCallback(this);

    initRtspClient();

   }

   @Override
   public void onDestroy() {
    mClient.release();
    mSession.release();
    mSurfaceView.getHolder().removeCallback(this);
    super.onDestroy();
   }

   @Override
   protected void onResume() {
    super.onResume();
    toggleStreaming();
   }

   @Override
   protected void onPause(){
    super.onPause();
    toggleStreaming();
   }

   private void initRtspClient() {
    mSession = SessionBuilder.getInstance()
    .setContext(getApplicationContext())
    .setAudioEncoder(SessionBuilder.AUDIO_NONE)
    .setAudioQuality(new AudioQuality(8000, 16000))
    .setVideoEncoder(SessionBuilder.VIDEO_H264)
    .setSurfaceView(mSurfaceView).setPreviewOrientation(0)
    .setCallback(this).build();

    mClient = new RtspClient();
    mClient.setSession(mSession);
    mClient.setCallback(this);
    mSurfaceView.setAspectRatioMode(SurfaceView.ASPECT_RATIO_PREVIEW);

    mClient.setServerAddress("176.120.25.62", 1235);
   }

   private void toggleStreaming() {
    if (!mClient.isStreaming()) {
        mSession.startPreview();
        mClient.startStream();
    } else {
        mSession.stopPreview();
        mClient.stopStream();
    }
   }

   @Override
   public void onSessionError(int reason, int streamType, Exception e) {
    switch (reason) {
        case Session.ERROR_CAMERA_ALREADY_IN_USE:
        break;
        case Session.ERROR_CAMERA_HAS_NO_FLASH:
        break;
        case Session.ERROR_INVALID_SURFACE:
        break;
        case Session.ERROR_STORAGE_NOT_READY:
        break;
        case Session.ERROR_CONFIGURATION_NOT_SUPPORTED:
        break;
        case Session.ERROR_OTHER:
        break;
    }

    if (e != null) {
        e.printStackTrace();
    }
   }

   @Override
   public void onRtspUpdate(int message, Exception exception) {
    switch (message) {
        case RtspClient.ERROR_CONNECTION_FAILED:
        exception.printStackTrace();
        break;
        case RtspClient.ERROR_WRONG_CREDENTIALS:
        exception.printStackTrace();
        break;
    }
   }

   @Override
   public void onPreviewStarted() {
   }

   @Override
   public void onSessionConfigured() {
   }

   @Override
   public void onSessionStarted() {
   }

   @Override
   public void onSessionStopped() {
   }

   @Override
   public void surfaceChanged(SurfaceHolder arg0, int arg1, int arg2, int arg3) {
   }

   @Override
   public void surfaceCreated(SurfaceHolder holder) {
   }

   @Override
   public void surfaceDestroyed(SurfaceHolder holder) {
   }

   @Override
   public void onBitrateUpdate(long bitrate) {
   }

LOGCAT:

09-28 21:05:23.357 16654-16654/shkatovl.bt安卓 I/Timeline: Timeline: Activity_launch_request time:6595904
09-28 21:05:23.507 16654-16664/shkatovl.bt安卓 W/art: Suspending all threads took: 5.493ms
09-28 21:05:23.618 16654-16654/shkatovl.bt安卓 I/MediaStream: Phone supports the MediaCoded API
09-28 21:05:23.678 16654-16937/shkatovl.bt安卓 D/RtspClient: Connecting to RTSP server...
09-28 21:05:23.778 16654-16654/shkatovl.bt安卓 D/VideoStream: Surface Changed !
09-28 21:05:23.908 16654-16935/shkatovl.bt安卓 V/VideoQuality: Supported resolutions: 1920x1080, 1280x720, 1280x960, 800x480, 768x432, 720x480, 640x480, 576x432, 480x320, 384x288, 352x288, 320x240, 240x160, 192x112, 176x144
09-28 21:05:23.908 16654-16935/shkatovl.bt安卓 V/VideoQuality: Supported frame rates: 15-15fps, 12-24fps
09-28 21:05:23.978 16654-16654/shkatovl.bt安卓 D/VideoStream: Surface Changed !
09-28 21:05:23.998 16654-16654/shkatovl.bt安卓 I/Timeline: Timeline: Activity_idle id: 安卓.os.BinderProxy@3254450a time:6596541
09-28 21:05:24.118 16654-16654/shkatovl.bt安卓 W/System.err: java.net.ConnectException: failed to connect to /176.120.25.62 (port 1235): connect failed: ECONNREFUSED (Connection refused)
09-28 21:05:24.118 16654-16937/shkatovl.bt安卓 I/RtspClient: TEARDOWN rtsp://176.120.25.62:1235/ RTSP/1.0
09-28 21:05:24.118 16654-16654/shkatovl.bt安卓 W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:124)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:183)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:163)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.Socket.startupSocket(Socket.java:590)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.Socket.tryAllAddresses(Socket.java:128)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.Socket.<init>(Socket.java:178)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at java.net.Socket.<init>(Socket.java:150)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at net.majorkernelpanic.streaming.rtsp.RtspClient.tryConnection(RtspClient.java:309)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at net.majorkernelpanic.streaming.rtsp.RtspClient.access$500(RtspClient.java:53)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at net.majorkernelpanic.streaming.rtsp.RtspClient$2.run(RtspClient.java:250)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at 安卓.os.Handler.handleCallback(Handler.java:739)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at 安卓.os.Handler.dispatchMessage(Handler.java:95)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at 安卓.os.Looper.loop(Looper.java:135)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at 安卓.os.HandlerThread.run(HandlerThread.java:61)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err: Caused by: 安卓.system.ErrnoException: connect failed: ECONNREFUSED (Connection refused)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at libcore.io.Posix.connect(Native Method)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at libcore.io.BlockGuardOs.connect(BlockGuardOs.java:111)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at libcore.io.IoBridge.connectErrno(IoBridge.java:137)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     at libcore.io.IoBridge.connect(IoBridge.java:122)
09-28 21:05:24.128 16654-16654/shkatovl.bt安卓 W/System.err:     ... 13 more

所以我的问题是我的错误在哪里(我在gradle中添加了compile和manifest权限),或者如果你知道解决我问题的方法,请告诉我

谢谢


共 (0) 个答案