尝试在 Android 中传输 IP 摄像头时黑屏

2024-01-05

我正在开发一个 Android 应用程序来监控一些 IP 摄像机。 我正在使用MjpegView 类 http://code.google.com/p/android-camera-axis/source/browse/trunk/serealisation/src/de/mjpegsample/MjpegView/?r=33流式传输视频。

我有三台相机。

    - Camera 1: A public camera i found on internet, without user/password.
    - Camera 2: A public camera but this one require username/password.
    - Camera 3: The camera I’m going to use finally in my app. It will also ask for credentials.

我的主要活动中的代码如下:

public class MainActivity extends Activity {
    private MjpegView mv;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //Camera 1
        String URL = "http://216.62.222.101/mjpg/video.mjpg";

        //Camera 2
        // String URL = "http://user:[email protected] /cdn-cgi/l/email-protection/cgi/mjpg/mjpg.cgi";

        //Camera 3
        // String URL = "http://MyIp:MyPort/mjpg/video.mjpg";

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
        mv = new MjpegView(this);
        setContentView(mv);
        mv.setSource(MjpegInputStream.read(URL));
        mv.setDisplayMode(MjpegView.SIZE_BEST_FIT);
        mv.showFps(true);
    }

    public void onPause() {
        super.onPause();
        mv.stopPlayback();
}

我可以毫无问题地传输相机 1。当我使用相机 2 或 3 运行该应用程序时,没有任何错误,也没有警告,但我得到的最多的是黑屏。我认为这是身份验证的问题,但如果我将其从相机中删除,我会得到相同的结果,黑屏。

相机之间有什么区别,使得其中一些相机可以工作,而另一些则不能?

预先感谢您的任何帮助。

- - 编辑 - -

我在使用相机 2 运行应用程序时发现了一些奇怪的事情。 我发现了一个异常MjpegView类在调用方法时MjpegInputStream.readMjpegFrame。 更深入地观察我注意到该方法getEndOfSeqeunce始终返回 1,而相机 1(运行良好的相机)返回更高的值(66 到 68 之间)。

我希望这能让某人了解这里发生的事情......


最后我解决了!

我不知道为什么第一次尝试流式传输该相机并删除身份验证时它不起作用。但今天我又尝试了一次,现在成功了。

所以现在问题出在身份验证上。无法像在浏览器中那样在 URL 中添加凭据。

我刚刚修改了MjpegInputStream在中设置凭据HTTPClient:

DefaultHttpClient httpclient = new DefaultHttpClient();
httpclient.getCredentialsProvider().setCredentials(new AuthScope(host, AuthScope.ANY_PORT), new UsernamePasswordCredentials(username, password));
res = httpclient.execute(new HttpGet(URI.create(url)));

是的,终于可以工作了

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

尝试在 Android 中传输 IP 摄像头时黑屏 的相关文章

随机推荐

  • 自定义 Ansible 回调未接收 group_vars/host_vars

    我正在编写一个自定义的 ansible 回调 class CallbackModule CallbackBase CALLBACK VERSION 2 0 CALLBACK TYPE aggregate CALLBACK NAME my c
  • 如何在mayavi(imshow)中绘制彩色图像

    是否可以使用mayavi绘制具有3个颜色通道的图像 根据 mayavi 的文档 mayavi mlab imshow只能处理形状为 n x m 的图像 Method 我必须使用 Mayavi 的自定义色彩图 请参阅http docs ent
  • 用于网站和 Api 的 Ninject - 序列不包含元素

    我有一个带有 Web Api 项目和 MVC 3 项目的 VS2010 解决方案 Web APi 和 MVC 项目都有自己的 App Start 和 NinjectWebCommon 并在其中声明了自己的绑定 当尝试使用 Api 时 我总是
  • PHP 中的 OOP:来自变量的类函数?

    是否可以像这样从类中调用函数 class new class function name do the thing req class gt function name 类似的解决方案 这似乎不起作用 是的 这是可能的 这就是众所周知的变量
  • 在单个 ASP.NET Core WebAPI 服务中托管多个产品 API

    我正在设计一个基于 ASP NET Core 的 Web API 它需要支持我的产品的多个变体 比方说基于许可证或安装的品种 我没有为每种类型的产品提供多种服务 而是考虑使用一个服务来容纳 托管多个端点或 URL 我将在安装时在 appse
  • 如何在c中读取图像的像素?

    假设我们的位图图像具有高度 M 和宽度 N 我们总是假设 在本实验中 宽度 N 是 4 的倍数 这简化了 文件中的字节布局 对于该图像 像素数组存储 正好 3 x N x M 字节 如下所示 每组 3 个字节代表一个像素 其中字节存储 按顺
  • 如何在 main 中设置 Nimbus 外观

    我刚刚学习Java 仍然无法解决我遇到的这个小问题 我的弹出日历使用 Nimbus 外观和感觉 但我有使用 Java 外观和感觉的面板和容器 Jtable 我试图使每个 GUI 屏幕 窗口都使用 Nimbus 外观和感觉 Merky 建议将
  • 从 numpy 数组到 DICOM

    我的代码读取 DICOM 文件 将像素信息放入 numpy 数组 然后修改 numpy 数组 它使用列表是因为我试图同时操作多个 DICOM 文件 我还没有找到任何关于如何获取修改后的 numpy 数组并再次使其成为 DICOM 文件的信息
  • 通过 Windows API 检索 PCI 坐标(用户模式)

    有没有办法使用 Windows c c API 例如 PnP Configuration Manager API 获取设备的 PCI 坐标 总线 插槽 功能号 我已经知道如何在内核模式下执行此操作 我需要一个用户模式解决方案 我的目标系统是
  • 在“for”循环中递增 1 时格式化背后的技术原因?

    整个网络上都有代码示例for循环看起来像这样 for int i 0 i lt 5 i 当我使用以下格式时 for int i 0 i 5 i 我这样做是因为我相信这样会更有效率 但是在大多数情况下这真的很重要吗 每个人都喜欢他们的微观优化
  • 使用来自 json 文件的字符串将字符串数组传递给 React 组件,并允许内联 span 标签

    我正在尝试获取一个字符串数组来显示为段落 并允许在这些字符串内使用内联跨度标签 我的问题是 当在段落内添加值时 会将 标记的开头和结尾解码为其解码值 有没有一种简单的方法可以使其工作而无需为此情况制作特定组件 我的React组件如下 con
  • 从 Flask 运行 Scrapy

    我有这个文件夹结构 app py flask app app datafoo scrapy cfg crawler py blogs pipelines py settings py middlewares py items py spid
  • boto3 s3 对象过期“MalformedXML”错误

    我尝试使用以下命令设置 Amazon S3 存储桶中子目录的生命周期配置boto3 put bucket lifecycle configuration 我使用了这段代码AWS 文档 https docs aws amazon com co
  • 在图形之间移动或复制补丁

    如何在图形之间移动 或复制 补丁matplotlib 我正在处理一组腌制的人物 并想将它们合并到一个情节中 使用线图时这没有问题 因为我可以通过以下方式访问数据ax get lines 然而 在使用直方图时 ax get lines回报 a
  • 在主页小部件中使用 ScrollView 时出现问题

    我能够在应用程序的布局 xml 文件中成功使用 ScrollView 但是 当我尝试在小部件的布局 xml 文件中使用 ScrollView 时 一旦将小部件放入模拟器中 就会收到 加载小部件时出现问题 错误 如果我注释掉 ScrollVi
  • 是否可以禁用在页面中查找的 Ctrl + F 功能?

    我有一个拼图网站 这是一种可怕的作弊方式 只做一部分也可以 但是能做到吗 我的想法是用图像替换字母 但还有比这更简单的吗 Code window addEventListener keydown function e if e keyCod
  • 按 ID 划分的行频率

    数据集包含三个变量 id 性别和年级 因素 mydata lt data frame id c 1 1 1 1 1 2 2 2 2 3 3 3 3 4 4 4 4 4 sex c 1 1 1 1 1 0 0 0 0 0 0 0 0 1 1
  • 将信息从一个 jframe 传递到另一个 jframe

    首先 我知道使用多个 jframe 是不受欢迎的 不幸的是我已经深入到这个项目中来重新开始 我的问题是我找不到一种方法将数据 用户输入 从一个帧传输到另一个帧 我将提供需要从帧 1 传输到另一个帧的代码 这是我的代码 用于他们必须输入的姓名
  • C++ 到 chrono::duration 的转换运算符 - 适用于 c++17,但不适用于 C++14 或更低版本

    以下代码使用带有 C 17 集的 gcc 7 1 0 进行编译 但不使用 C 14 集 或 Visual Studio 2017 进行编译 很容易重现Wandbox https wandbox org permlink b8QJGuSPUc
  • 尝试在 Android 中传输 IP 摄像头时黑屏

    我正在开发一个 Android 应用程序来监控一些 IP 摄像机 我正在使用MjpegView 类 http code google com p android camera axis source browse trunk sereali