小编Man*_*arm的帖子

Android:将相机作为mjpeg流式传输

经过几天搜索SO和google我开始放弃了,所以我想我也可以在这里发帖.

我正在创建一个应该提供某种视频聊天的Android应用程序.由于这应该是尽可能接近到实时的,我也读到了各种协议,并决定尝试MJPEG对于初学者(不与音频有关现在).

现在流式传输数据让我疯狂.连接建立后,应用程序开始将相机预览帧写入流,但VLC和mplayer都不会开始播放视频.监视连接显示数据已到达.

连接 此代码由异步任务执行,成功通知侦听器:

try
    {
        ServerSocket server = new ServerSocket(8080);

        socket = server.accept();

        server.close();

        Log.i(TAG, "New connection to :" + socket.getInetAddress());

        stream = new DataOutputStream(socket.getOutputStream());
        prepared = true;
    }
    catch (IOException e)
    {
        Log.e(TAG, e.getMessage();
    }
Run Code Online (Sandbox Code Playgroud)

在我的电脑上,我执行'mplayer http://tabletIP:8080',平板电脑注册一个连接(从而启动我的流光和相机预览).这也适用于VLC.

Streaming将标头写入流:

if (stream != null)
{
    try
    {
        // send the header
        stream.write(("HTTP/1.0 200 OK\r\n" +
                      "Server: iRecon\r\n" +
                      "Connection: close\r\n" +
                      "Max-Age: 0\r\n" +
                      "Expires: 0\r\n" +
                      "Cache-Control: no-cache, private\r\n" + 
                      "Pragma: no-cache\r\n" + 
                      "Content-Type: multipart/x-mixed-replace; " …
Run Code Online (Sandbox Code Playgroud)

java streaming android mjpeg

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

Android NDK:load_library:找不到srand

我有一个android项目,我使用本机代码来处理SIP(使用libosip2和libeXosip2).我的本机代码与库的源一起编译到一个模块中.

代码编译得很好,生成的库具有我期望它拥有的所有符号,但是当我尝试加载生成的库时,我收到以下错误:

E/eXosip.loadLibrary(9210): java.lang.UnsatisfiedLinkError: Cannot load library: reloc_library[1307]:  1941 cannot locate 'srand'...
Run Code Online (Sandbox Code Playgroud)

我的Application.mk看起来像这样:

APP_STL         := gnustl_shared
APP_ABI         := armeabi-v7a
APP_CPPFLAGS    += -fexceptions
Run Code Online (Sandbox Code Playgroud)

我确实使用ndk-depends检查了未捕获的依赖项,这给了我

libeXosip_jni.so
libstdc++.so
liblog.so
libgnustl_shared.so
libm.so
libdl.so
libc.so
Run Code Online (Sandbox Code Playgroud)

添加loadLibrary("gnustl_shared")没有帮助(这是在"libs/armeabi-v7 /"中也找到的唯一一个提到的库).

我的Android.mk:

LOCAL_PATH  := $(call my-dir)
$(shell (cd $(LOCAL_PATH); sh extract_stuff.sh; cd $(OLDPWD)))


include $(CLEAR_VARS)
OSIP        := libosip2-4.1.0
EXOSIP      := libeXosip2-4.1.0
LOCAL_MODULE    := eXosip

LOCAL_C_INCLUDES    := $(LOCAL_PATH)/$(OSIP)/include \
                       $(LOCAL_PATH)/$(EXOSIP)/include

LOCAL_SRC_FILES := $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osipparser2/*.c)) \
                   $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(OSIP)/src/osip2/*.c)) \
                   $(patsubst $(LOCAL_PATH)/%, %, $(wildcard $(LOCAL_PATH)/$(EXOSIP)/src/*.c))

LOCAL_CFLAGS …
Run Code Online (Sandbox Code Playgroud)

java android sip android-ndk unsatisfiedlinkerror

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

实时/零延迟视频流:要使用哪些编解码器参数?

我正在编写一个Android应用程序,其中包括从台式PC发送和接收视频流.为了使应用程序正常工作,我们需要尽可能少的延迟,必要时牺牲视频质量.我们正在gstreamer 1.45两端使用,但是对于当前的管道,我们在Galaxy Note S2上至少有0.5秒的延迟,那就是两个设备都在同一网络上(后来这应该通过VPN工作).

发件人管道

appsrc name=vs_src format=time do-timestamp=true
    caps="video/x-raw, format=(string)RGB, width=(int)640, height=(int)480, framerate=(fraction)15/1000" 
    ! videoconvert 
    ! x264enc speed-preset=ultrafast tune=zerolatency byte-stream=true threads=1 key-int-max=15 intra-refresh=true ! h264parse ! rtph264pay pt=96
    ! queue ! udpsink name=vs_sink host=%s port=%d async=false
Run Code Online (Sandbox Code Playgroud)

接收器管道

udpsrc name=vr_src 
    caps="application/x-rtp, media=(string)video, clock-rate=(int)90000, payload=(int)96, encoding-name=(string)H264"
    ! rtpjitterbuffer 
    ! rtph264depay ! h264parse ! avdec_h264 
    ! videorate ! videoconvert
    ! glimagesink name=vr_sink async=false
Run Code Online (Sandbox Code Playgroud)

设置threads=2或更高会发出gstreamer警告,表明它是在没有多线程支持的情况下编译的.我知道有些设备提供硬件解码器,但可靠地访问它们的唯一方法似乎是通过encodebin/ decodebin.我已经尝试使用decodebin但由于某种原因它抱怨它无法找到所需的插件(例如No decoder to handle …

android video-streaming gstreamer h.264

8
推荐指数
1
解决办法
8960
查看次数

FFMPEG 流 RTP:未设置时基

我正在尝试创建一个小演示,以了解使用 ffmpeg 以编程方式流式传输的感觉。我正在使用这个问题中的代码作为基础。我可以编译我的代码,但是当我尝试运行它时,我总是收到此错误:

[rtp @ 0xbeb480] 未设置时基

问题是,我已经设置了时基参数。我什至尝试为流(以及与流关联的编解码器)设置它们,尽管据我所知这不是必需的。这是我的代码中的相关部分:

AVCodec* codec = avcodec_find_encoder(AV_CODEC_ID_H264);
AVCodecContext* c = avcodec_alloc_context3(codec);
c->pix_fmt = AV_PIX_FMT_YUV420P;
c->flags = CODEC_FLAG_GLOBAL_HEADER;
c->width = WIDTH;
c->height = HEIGHT;
c->time_base.den = FPS;
c->time_base.num = 1;
c->gop_size = FPS;
c->bit_rate = BITRATE;

avcodec_open2(c, codec, NULL);
struct AVStream* stream = avformat_new_stream(avctx, codec);

// TODO: causes an error
avformat_write_header(avctx, NULL);
Run Code Online (Sandbox Code Playgroud)

在接近末尾调用“avformat_write_header”时发生错误。检查所有可能失败的方法(如 avcodec_open2),我只是删除了检查以使代码更具可读性。

挖掘谷歌和 ffmpeg 源代码没有产生任何有用的结果。我认为这真的很基本,但我被卡住了。谁能帮我?

streaming ffmpeg rtp h.264

6
推荐指数
1
解决办法
6602
查看次数

使用相互依赖的值在矩阵中进行矢量化计算

我在多个时间分辨率下跟踪多个离散时间序列,产生SxRxB矩阵,其中S是时间序列的数量,R是不同分辨率的数量,B是缓冲区,即每个系列记住的值.每个系列都是离散的,并使用有限范围的自然数来表示其值.我会在这里称这些"符号".

对于每个系列,我想计算在所有测量中,任何先前测量符号直接在任何当前测量符号之前的频率.我已经用如下所示的for循环解决了这个问题,但是出于显而易见的原因想要对其进行矢量化.

我不确定我的数据结构方式是否有效,所以我愿意接受那些建议.特别是我认为比率矩阵可以做得与众不同.

提前致谢!

def supports_loop(data, num_series, resolutions, buffer_size, vocab_size):
    # For small test matrices we can calculate the complete matrix without problems
    indices = []
    indices.append(xrange(num_series))
    indices.append(xrange(vocab_size))
    indices.append(xrange(num_series))
    indices.append(xrange(vocab_size))
    indices.append(xrange(resolutions))

    # This is huge! :/
    # dimensions:
    #   series and value for which we calculate,
    #   series and value which precedes that measurement,
    #   resolution
    ratios = np.full((num_series, vocab_size, num_series, vocab_size, resolutions), 0.0)

    for idx in itertools.product(*indices):
        s0, v0 = idx[0],idx[1]  # the series and symbol for which we …
Run Code Online (Sandbox Code Playgroud)

python numpy vectorization market-basket-analysis

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