Kev*_*vin 15 ip video camera android stream
我目前正在以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) {
//Actions goes here
url = urlText.getText().toString();
webView.loadUrl(url);
timerSetup();
}
});
final Button exitB = (Button)findViewById(R.id.exitButton);
exitB.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
//Actions goes here
finish();
}
});
}
//refresh timer//////////////-----------------
public void timerSetup(){
autoUpdate = new Timer();
autoUpdate.schedule(new TimerTask() {
@Override
public void run() {
runOnUiThread(new Runnable() {
@Override
public void run() {
//Actions goes here
webView.loadUrl(url);
}
});
}
}, 0, 500);//refresh rate time interval (ms)
}
}
Run Code Online (Sandbox Code Playgroud)
无论如何,我可以获得至少15fps的视频流/更快的刷新率?有没有可以用来显示这些图像的MJPEG查看器/源代码?
这是该应用程序的屏幕截图 http://s945.photobucket.com/albums/ad295/kevinybh/?action=view¤t=video.jpg (没有足够的点张贴图片):(
我只需要将视频流大约15-30fps.任何建议/帮助将非常感激:)谢谢!
MJPEG 是将动态视频传送到移动设备的一种极其低效的方式,因为每一帧都被压缩为它自己的独立图片。对于不需要视频的应用程序(上周有人询问是否有摄像机观看等待队列),每秒左右推送一个静态帧的解决方案听起来不错。
如果您需要动态视频,我建议您在网络服务器上将 MJPEG 转码为使用帧到帧压缩的受支持视频格式。这将导致通过用户的 3g 连接以及从服务器到所有客户端推送的数据大大减少。您应该只需要运行一个转码引擎来支持所有客户端 - 并且您将能够对 Android 和 iPhone 设备使用相同的转码引擎,但如果您的相机输出,您可能还希望为平板电脑和 PC 提供更高分辨率的输出足以证明它的合理性。
| 归档时间: |
|
| 查看次数: |
45904 次 |
| 最近记录: |