【问题标题】:high resolution RTSP server on android?Android上的高分辨率RTSP服务器?
【发布时间】:2014-05-17 20:46:08
【问题描述】:

我正在尝试将实时视频从我的 Android 流式传输到我的 PC(这将对输入进行繁重的 OpenCV 操作并将结果保存到文件中),两者都在同一个 LAN 中。我已经尝试为此目的使用libstreaming,但问题是我无法使用它来发送分辨率高于 240x160 的帧,这给了我很差的质量 - 不足以满足我的需求。我使用过 H264,当我尝试使用更高分辨率时,libstreaming 会引发编码器无法处理这些帧的异常。

关于如何使用 libstreaming 流式传输高分辨率帧有什么想法吗? (最好是 720p,20+ fps)。 也欢迎不使用 libstreaming 的想法...

非常感谢!

【问题讨论】:

    标签: android opencv streaming rtsp


    【解决方案1】:

    嗯,您可以在 FFMPEG 的帮助下制作原生 C/C++ RTP 或 RTSP 流媒体。如果您的 Android 环境允许,您可以使用 API 并制作自己的软件,甚至可以从命令行运行 FFMPEG。您没有提到您的可用选择(仅限 Java,Java + JNI + C/C++),因此很难给出准确的建议。

    【讨论】:

      【解决方案2】:

      我目前有同样的问题。但是,我设法通过使用 H263 编解码器的 libstreaming 获得了一些更好的结果。视频质量仍然不完全令人满意,但它是 720p。 我已经使用RTSPServer 基于libstreaming example 1 构建了我的应用程序。以下是相关代码:

      private Session mSession;
      
      [...]
      
      mSession = SessionBuilder.getInstance()
          .setContext(getApplicationContext())
          .setAudioEncoder(SessionBuilder.AUDIO_AAC)
          .setAudioQuality(new AudioQuality(8000, 16000))
          .setVideoEncoder(SessionBuilder.VIDEO_H263)
          .setVideoQuality(new VideoQuality(1280,720,30,2000000))
          .setSurfaceView(mSurfaceView)
          .build(); 
      

      我不知道如何使用 openCV 处理流,但例如,我能够使用 VLC 看到它:

      C:\>"C:\<your VLC installation path>\vlc.exe" rtsp://<your device IP address>:1234 -f
      

      编辑:我设法使用 H264 编码器以 720p 流式传输,并强制使用 MediaRecorder 方法而不是 MediaCodec 方法。不太确定为什么第二个应该比第一个更可取或更先进。质量和我上面描述的方法差不多,但至少在你快速移动时出现的抖动消失了。

      请注意,使用 SessionBuilder 强制流式传输方法不起作用:

      mSession = SessionBuilder.getInstance()
          .setContext(getApplicationContext())
          .setAudioEncoder(SessionBuilder.AUDIO_AAC)
          .setAudioQuality(new AudioQuality(8000, 16000))
          .setVideoEncoder(SessionBuilder.VIDEO_H264)
          .setVideoQuality(new VideoQuality(1280,720,30,2000000))
          .setSurfaceView(mSurfaceView)
          .setStreamingMethod(VideoStream.MODE_MEDIARECORDER_API) //Completely ignored
          .build();
      

      你必须在调用 url 中强制它:

      C:\>"C:\<your VLC installation path>\vlc.exe" rtsp://<your device IP address>:1234?videoapi=mr -f
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-06-09
        • 1970-01-01
        • 1970-01-01
        • 2012-01-29
        • 1970-01-01
        • 2011-04-02
        相关资源
        最近更新 更多