标签: mjpeg

如何在PHP中禁用输出缓冲

我写了一个简单的中继脚本,它连接到网络摄像头并从套接字读取,并使用print函数输出这些数据.数据是已设置边界的MJPG数据.我只输出读取的数据.

问题是PHP似乎在缓冲这些数据.当我将相机设置为1 FPS时,进纸将冻结7-8秒,然后快速显示8帧.如果我将分辨率设置为一个巨大的尺寸,相机会以大约每秒1帧的速度移动.我假设然后发生了一些缓冲(因为巨大的大小快速填充缓冲区,而低大小则没有),我无法弄清楚如何禁用此缓冲.有谁知道怎么做?

码:

ignore_user_abort(false);

$boundary = "myboundary";

//Set this so PHP doesn't timeout during a long stream
set_time_limit(0);

$socketConn = @fsockopen ("192.168.1.6", 1989, $errno, $errstr, 2);
if (!$socketConn)
exit();
stream_set_timeout($socketConn, 10);
fputs ($socketConn, "GET /mjpeg HTTP/1.0\r\n\r\n");

//Setup Header Information
header("Cache-Control: no-cache");
header("Cache-Control: private");
header("Pragma: no-cache");
header("Content-type: multipart/x-mixed-replace; boundary=$boundary");

@ini_set('implicit_flush', 1);
for ($i = 0; $i < ob_get_level(); $i++)
ob_end_flush();
ob_implicit_flush(1);

stream_set_blocking($f2, false);

//Send data to client
while (connection_status() == CONNECTION_NORMAL)
{
    $chunk = fread($socketConn, 128);
    print $chunk;   
}

fclose($socketConn);
Run Code Online (Sandbox Code Playgroud)

php http mjpeg

30
推荐指数
3
解决办法
7万
查看次数

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万
查看次数

Motion JPEG的规格是什么?

我一直在谷歌搜索疯狂,无法找到mjpeg的任何文件格式规范.

标题应该是什么样的?我只是在标题后附加一系列jpegs吗?

我知道它通常在.avi容器中,是否有可能存在于其中的编解码器的标准化格式?

目标是在动作脚本3中创建它,但其他语言可以很好地移植.我试过看ffmpeg和mplayer但c不是我强大的一面(还).

任何建议,将不胜感激!

file-format specifications mjpeg actionscript-3

28
推荐指数
3
解决办法
2万
查看次数

Android和MJPEG

我需要从IP摄像头获取mjpeg流,任何人都知道正确的方法吗?我用Google搜索了一下,我找到了这个例子

http://www.anddev.org/mjpeg_on_android_anyone-t1871.html

但是当我试图从主要活动调用的另一个活动中获取流时,我一直被困住了.这里的代码:

主要活动

package com.test;


public class IntentTest extends Activity {
    /** Called when the activity is first created. */
    ListView myListView = null;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);

        myListView = (ListView)findViewById(R.id.listView);
        final ArrayList<String> items = new ArrayList<String>();
        items.add("00408C944B9A");
        final ArrayAdapter<String> aa;
        aa = new ArrayAdapter<String>(this,
                android.R.layout.simple_list_item_1,
                items);

        myListView.setAdapter(aa);
        myListView.setOnItemClickListener(listClicked);

    }


    private OnItemClickListener listClicked = new OnItemClickListener() {
        public void onItemClick(AdapterView<?> arg0, View arg1, int position, long id) {
            // TODO Auto-generated method stub
            Intent i …
Run Code Online (Sandbox Code Playgroud)

android mjpeg ip-camera

28
推荐指数
2
解决办法
7万
查看次数

在c#中创建MJPEG视频流

我将图像从远程视频源以大约每秒5帧的速度发送到我的数据库作为JPEG图像.我试图找出如何将这些图像转换为视频格式,以便我可以将实时视频源流式传输到Silverlight.

创建MJPEG流似乎有意义,但我遇到了一些问题.首先,我试图通过HTTP请求流,所以我没有与套接字达成协议,但这可能会破坏我的代码.

如果我尝试从QT冲浪到我的流我得到视频错误,媒体播放器显示第一帧图像和Silverlight崩溃:)

这是流的代码 - 因为我使用这种方式的内容类型只有在我知道它不理想并且可能是根本原因时才能发送.所有图像都通过LINQ2SQL对象进入.

我已经尝试过简单地更新Silverlight中图像控件的图像源,但闪烁是不可接受的.如果Silverlight不支持MJPEG,那么即使继续也没有意义,但看起来确实如此.我确实可以访问h.264帧,但通过MP4看起来更复杂.

    Response.Clear();
    Response.ContentType = "multipart/x-mixed-replace; boundary=--myboundary";
    ASCIIEncoding ae = new ASCIIEncoding();
    HCData data = new HCData();
    var videos = (from v in data.Videos
                 select v).Take(50); // sample the first 50 frames
    foreach (Video frame in videos)
    {
        byte[] boundary = ae.GetBytes("\r\n--myboundary\r\nContent-Type: image/jpeg\r\nContent-Length:" + frame.VideoData.ToArray().Length + "\r\n\r\n");
        var mem = new MemoryStream(boundary);
        mem.WriteTo(Response.OutputStream);
        mem = new MemoryStream(frame.VideoData.ToArray());
        mem.WriteTo(Response.OutputStream);
        Response.Flush();
        Thread.Sleep(200);
    }
Run Code Online (Sandbox Code Playgroud)

谢谢!

编辑:我有在firefox中工作的流,所以如果我浏览页面,我会看到视频!但没有其他人接受这种格式.不是IE,SL,媒体播放器 - 没什么.

c# video mjpeg video-streaming

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

如何从ip camera解析mjpeg http流?

下面给出了为从IP Camera获取实时流而编写的代码.

from cv2 import *
from cv2 import cv
import urllib
import numpy as np
k=0
capture=cv.CaptureFromFile("http://IPADDRESS of the camera/axis-cgi/mjpg/video.cgi")
namedWindow("Display",1)

while True:
    frame=cv.QueryFrame(capture)
    if frame is None:
        print 'Cam not found'
        break
    else:
        cv.ShowImage("Display", frame)
    if k==0x1b:
        print 'Esc. Exiting'
        break
Run Code Online (Sandbox Code Playgroud)

在运行代码时,我得到的输出是:

Cam not found
Run Code Online (Sandbox Code Playgroud)

我哪里错了?另外,为什么帧无?转换有问题吗?

python opencv mjpeg ip-camera live-streaming

26
推荐指数
3
解决办法
7万
查看次数

用于显示MJPEG流的跨浏览器解决方案

是否有一种轻量级,免费且可靠的方式在跨浏览器环境中显示MJPEG?我正在尝试在我正在开发的网站上显示来自Axis 2120 IP摄像头的MJPEG流,并且我发现这在当前版本的Firefox中非常可靠.然而,经过一些测试后我发现IE,Opera和Chrome都有不同程度的麻烦(没有Mac访问,所以我不确定Safari).Internet Explorer不支持MJPEG,根本不起作用.在发送初始GET之后,Opera需要10-15秒才能显示任何内容.Chrome可以完美地运行,直到<div>包含<img>标签的内容被隐藏,然后再次显示.

作为参考,我使用<img>标签来显示流,如下所示:

<img src="http://my.ip.addr/axis-cgi/mjpg/video.cgi/?resolution=352x240" alt="real-time video feed" />
Run Code Online (Sandbox Code Playgroud)

我已经考虑过使用重播服务器来收集MJPEG流并在运行中对其进行转码,但这个解决方案似乎太难看了.那里有更好的建议吗?

streaming multiple-browsers mjpeg ip-camera

22
推荐指数
2
解决办法
7万
查看次数

MJPEG的改进

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

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

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

android screen mjpeg video-streaming

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

MJPEG流媒体和解码

我想从IP摄像头(通过RTSP)接收JPEG图像.为此,我cvCreateFileCapture_FFMPEG在OpenCV中尝试过.但是ffmpeg似乎对流媒体的MJPEG格式有一些问题(因为它会自动尝试检测流媒体信息)并且我最终得到以下错误

mjpeg: unsupported coding type
Run Code Online (Sandbox Code Playgroud)

然后,我决定使用live555进行流媒体播放.到目前为止,我可以通过openRTSP成功建立流媒体和捕获(非解码)图像.

问题是如何在我的应用程序中执行此操作,例如,在OpenCV中.如何在OpenCV中使用openRTSP获取图像并以JPEG格式保存?

我听说openRTSP中的数据可以发送到缓冲区(或命名管道),然后在OpenCV中读取IplImage.但我不知道该怎么做.

我将非常感谢有关此问题的任何帮助/建议.我需要以下任一问题的答案:

  1. 如何禁用ffmpeg的自动流信息检测并指定我自己的格式(mjpeg),或
  2. 如何在OpenCV中使用openRTSP?

问候,

c++ opencv mjpeg rtsp live555

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

画布受到跨源数据的污染

我正在加载来自第三方网站的动作jpeg,我可以信任.我正在尝试,getImageData()但浏览器(Chrome 23.0)抱怨说:

Unable to get image data from canvas because the canvas has been tainted by
cross-origin data.
Run Code Online (Sandbox Code Playgroud)

SO上有一些类似的问题,但他们使用的是本地文件,而我正在使用第三方媒体.我的脚本在共享服务器上运行,我没有远程服务器.

我试过img.crossOrigin = 'Anonymous'或img.crossOrigin = ''(参见关于CORS的Chromium博客上的这篇文章),但它没有帮助.关于我如何getImageData在具有跨源数据的画布上的任何想法?谢谢!

javascript canvas cross-domain mjpeg cors

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