相关疑难解决方法(0)

Android ICS和MJPEG使用AsyncTask

我修改了Android和MJPEG的MJPEG查看器代码,使用AsyncTask工作(因此可以使用Ice Cream Sandwich(ICS),4.0.4),这是我的代码.

如果有人对如何优化,清理或使用代码做更合适的事情有任何建议,请告诉我.我很感激有两个问题有助于解决:

  • 如果您有设备在流上,然后锁定屏幕并解锁屏幕,它不会恢复播放,直到您杀死并恢复应用程序或旋转屏幕.我尝试使用OnResume()执行某些操作或其他操作导致应用程序崩溃.

  • 特别是我想在MjpegInputStream.java中获取AsyncTask但是无法使其工作.

MjpegActivity.java:

package com.demo.mjpeg;

import java.io.IOException;
import java.net.URI;

import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;

import com.demo.mjpeg.MjpegView.MjpegInputStream;
import com.demo.mjpeg.MjpegView.MjpegView;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.Window;
import android.view.WindowManager;
import android.widget.Toast;

public class MjpegActivity extends Activity {
    private static final String TAG = "MjpegActivity";

    private MjpegView mv;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //sample public cam
        String URL = "http://trackfield.webcam.oregonstate.edu/axis-cgi/mjpg/video.cgi?resolution=800x600&amp%3bdummy=1333689998337";

        requestWindowFeature(Window.FEATURE_NO_TITLE);
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, 
        WindowManager.LayoutParams.FLAG_FULLSCREEN);

        mv = new MjpegView(this);
        setContentView(mv);        

        new DoRead().execute(URL); …
Run Code Online (Sandbox Code Playgroud)

android mjpeg ip-camera android-asynctask

29
推荐指数
1
解决办法
3万
查看次数

MJPEG的改进

我从这里获得Android和MJPEG的代码来下载和流式传输Mjpeg.它看起来和一个视频的工作正常.

但是,当我尝试同时流式传输多个MJpeg视频并在屏幕上显示时,性能会显着降低.

任何人都会建议更好的方法来处理多个流或他们可以看到实现的任何改进,以提高性能.截至目前,它非常缓慢,不可接受.

android screen mjpeg video-streaming

19
推荐指数
0
解决办法
2955
查看次数

在Android上获取IP Cam视频流(MJEPG)

我目前正在以3人为一组进行AndAR项目.我是负责Android手机视频流的人.我得到了一台D-Link DCS-920 IP摄像机,我发现它使用MJPEG编解码器作为直播视频流,网络服务器使用Jview来观看直播.据我所知,MJPG不是Android操作系统支持的文件类型所以我想出了一个想法,而不是使用ImageView,我使用WebView来传输视频.我实现了一个非常简单的概念,它的工作原理!但问题是,刷新率很糟糕.我得到视频图像(例如http://192.168.1.10/image.jpg:)在WebView上查看并实现一个Timer来控制刷新率(假设它设置为30fps,每33ms刷新一次)但是它只能达到500ms间隔,任何更低的间隔我注意到它不会更平滑,有时图像不会加载,连接不稳定(例如:掉线).这可能是我的速度比它能以更快的速度刷新吗?但是在网络服务器Jview上它没有问题!我试图找到jview的源代码,但我没有希望.无论如何这里是我写的代码

package org.example.test;

import java.util.Timer;
import java.util.TimerTask;

import android.app.Activity;
import android.os.Bundle;
import android.view.View;
import android.webkit.WebView;
import android.widget.Button;
import android.widget.EditText;

public class Webview extends Activity {

public WebView webView;
public Timer autoUpdate;
public String url;

    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);    

        webView = (WebView) findViewById(R.id.webview);
        webView.getSettings();
        final EditText urlText = (EditText) findViewById(R.id.urlText);

        //Buttons//////////////////------------
        final Button connectB = (Button)findViewById(R.id.connectButton);
        connectB.setOnClickListener(new View.OnClickListener() {
         public void onClick(View v) { …
Run Code Online (Sandbox Code Playgroud)

ip video camera android stream

15
推荐指数
1
解决办法
5万
查看次数

Android外置摄像头选项 - 叠加在视频流之上,没有中间人服务器/路由器

我正在寻找一种从Android设备与外部摄像头连接的方法.它需要成为外置摄像头的原因是因为我需要能够修改摄像头(移除红外滤镜)而且我不想破坏车载手机摄像头.

无论相机如何通过USB,蓝牙,WiFi或其他通信协议连接都无关紧要,这两个设备只需要能够在没有中间服务器/路由器的情况下进行通话.

我正在寻找一个解决方案:

  • 不需要生根或重建Android/Linux内核(绝对必须)
  • 允许我在图像/视频上叠加项目(好)
  • 访问视频流进行图像分析(最好)

最后一项要求不是必需的,但会很好.

我探讨的选项:

  • USB摄像头:根据http://brain.cc.kogakuin.ac.jp/research/usb-e.html重建Linux内核,并尝试使用相机提供的代码:http://www.amazon.com/gp/product/B002X3VEIE/ref = oh_o02_s00_i00_details.没有丝毫工作.我后来才知道作者使用的是CM9 mod,但这并不是一个选项,因为它对市场上的应用程序来说不实用.
  • 蓝牙摄像头:Looxcie和CountourGPS看起来是最好的选择,但是Feed会流式传输到他们的应用程序,他们没有API或SDK,所以如何覆盖他们的视频源?
  • IP摄像头:对我而言,这看起来是最有前途的选择,但如何在没有中间服务器/路由器的情况下访问IP摄像机视频源?带有WiFi BacPac的GoPro HD Hero2看起来很有前景,但它还没有出来,我可以告诉你需要使用类似于蓝牙相机选项的应用程序.哪些相机可以让我连接到它们并接收直接视频输入,我该如何以编程方式进行此操作?

如果连接到IP摄像机没有中间人可以在代码Android和MJPEG和Android上(MJEPG)获取IP摄像头的视频流看起来很有希望.

我可以覆盖其他应用视频源吗?是否可以直接连接到IP摄像头?任何建议的选项非常感谢.

usb camera android bluetooth ip-camera

15
推荐指数
1
解决办法
4万
查看次数

从Android上的IP摄像头接收视频流

我有一台IP摄像机,它是MJPEG格式的流媒体视频.现在我的目标是接收它并在我自己的自定义Android应用程序中显示它.为此我在android平台上有三个编程选择:

  1. 使用内置的Anrdroid MediaPlayer类
  2. 在本机C中使用FFMPEG库并通过JNI访问它
  3. 在android上使用GStreamer端口接收流

那么请建议更好的解决方案?

我没有使用FFMPEG或GStreamer的经验.那么这样做的可行性是什么?

android ffmpeg gstreamer ip-camera android-mediaplayer

9
推荐指数
1
解决办法
5784
查看次数

从屏幕截图生成视频供稿的替代方案

我在远程管理玩具项目中工作.现在,我可以使用Robot该类捕获屏幕截图并控制鼠标.截图是BufferedImage实例.

首先,我的要求: - 只有服务器和客户端. - 性能很重要,因为客户端可能是Android应用程序.

我想过打开两个套接字连接,一个用于鼠标和系统命令,另一个用于视频输入.

如何将屏幕截图转换为视频流?我应该将它们转换为已知的视频格式,还是可以发送一系列序列化图像?

压缩是另一个问题.根据我的初步测试,以全分辨率发送屏幕捕获将导致低帧速率.我认为我需要至少24 fps来感知运动,所以我要同时缩小和压缩.我可以转换BufferedImages为jpg文件,然后设置压缩率,但我不想将文件存储在磁盘上,它们应该只存在于RAM中.另一种可能性是将实例(表示未压缩的屏幕截图)序列化为GZipOutputStream.这是正确的方法是什么?

总结一下:

  • 如果您推荐"系列图像"方法,您如何将它们序列化到套接字OutputStream?
  • 如果您的建议是转换为已知的视频格式,哪些类或库可用?

提前致谢.

更新:我的测试,客户端和服务器在同一台机器上
- 全屏幕序列化BufferedImages(只有维度,类型和int []),没有压缩:1.9 fps.
通过GZip流的完整屏幕图像:2.6 fps.
-Downscaled图像(640宽度)和GZip流:6.56 fps.
- 全屏幕图像和RLE编码:4.14 fps.
-Downscaled图像和RLE编码:7.29 fps.

java screenshot video-capture video-encoding

6
推荐指数
2
解决办法
2050
查看次数

Android MJPEG 流

我已经实现了Android 和 MJPEG

并且还实现了异步和认证来运行这里提到的它。现在我已经设法运行 jpeg 视频流,但问题是它在运行流时一直闪烁。它不断地起落。我认为这可能是框架的问题。任何人都知道如何处理这个问题。这是我实现的完整代码:

MjpegSample.java

public class MjpegSample extends Activity {

private static final boolean DEBUG=true;
private static final String TAG = "MJPEG";
private MjpegView mv;
private static final int MENU_QUIT = 1;
String URL;
MjpegInputStream inputStream;
/* Creates the menu items */
public boolean onCreateOptionsMenu(Menu menu) {    
menu.add(0, MENU_QUIT, 0, "Quit");
return true;
}

/* Handles item selections */
public boolean onOptionsItemSelected(MenuItem item) {    
    switch (item.getItemId()) {
        case MENU_QUIT:
            finish();
            return true;    
        }    
    return …
Run Code Online (Sandbox Code Playgroud)

android mjpeg video-streaming

4
推荐指数
1
解决办法
1万
查看次数

忽略DefaultHttpClient中的ssl错误

我正在寻找在默认的httpclient中忽略所有ssl错误(例如,不信任)的可能性.我在这里看到了很多解决方案,但我必须导入一个特定的证书,并将其添加到trustmanager,或者它是用于DefaultHttpClient的HttpsUrlConnection instad.我用过的webrequests是:

    public static String makeGETRequest(String s,String encoding)
{
    DefaultHttpClient http = new DefaultHttpClient();
    final String username = "USERNAME";
    final String password = "PASSWORD";
    UsernamePasswordCredentials c = new UsernamePasswordCredentials(username,password);
    BasicCredentialsProvider cP = new BasicCredentialsProvider(); 
    cP.setCredentials(AuthScope.ANY, c); 
    http.setCredentialsProvider(cP);
    HttpResponse res;
    try {

        res = http.execute(new HttpGet(s));
        InputStream is = res.getEntity().getContent();
        BufferedInputStream bis = new BufferedInputStream(is);
        ByteArrayBuffer baf = new ByteArrayBuffer(50);
        int current = 0;
        while((current = bis.read()) != -1){
              baf.append((byte)current);
         }

        return  new String(baf.toByteArray(),encoding);
       } 
    catch (ClientProtocolException e) {
        // TODO …
Run Code Online (Sandbox Code Playgroud)

ssl android

2
推荐指数
1
解决办法
9723
查看次数