建议IPC采用RTMP(server+rtmppush)的流媒体框架。此技术方案的优势:

1、RTMP协议是标准的。

2、通过服务器中转的方式,完全没有NAT穿透的问题。可以在VPS上面安装srs(Simple Rtmp Server)就行。

3、FMS同时支持iOS和android手机自带的原生播放器。

设备上实现的rtmp push,由server来控制其是否开始push to FMS。这样当没有使用时,就不会平白消耗服务器的CPU及带宽。这样的运营成本应该是可以接受的。

测试一:ubuntu上面建立FMS,IPC采集音视频,通过rtmp push到FMS上面。然后在win7上面用flash player来观看。

http://winlinvip.github.io/srs.release/trunk/research/players/srs_player.html?server=192.168.2.9&app=live&stream=livestream&port=1935

URL: rtmp://192.168.2.9:1935/live/liveview

可以看出,延时在900ms左右。

http://winlinvip.github.io/srs.release/trunk/research/players/srs_player.html?server=192.168.2.10&app=live&stream=liveview&port=1935#

问题记录

一、在arm-linux平台上面启动srs失败

# mkdir objs

# ./srs -c srs.conf

[1970-01-01 00:49:54.489][trace][610][0]config parse complete

[1970-01-01 00:49:54.491][trace][610][0]write log to file ./objs/srs.log

[1970-01-01 00:49:54.491][trace][610][0]you can: tailf ./objs/srs.log

[1970-01-01 00:49:54.492][trace][610][0]@see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLog

# ls objs/

srs.log

# cat objs/srs.log

[1970-01-01 00:49:54.493][trace][610][0]srs checking config...

[1970-01-01 00:49:54.546][trace][610][0]retrieve local ipv4 ip=192.168.2.10, index=0

[1970-01-01 00:49:54.546][trace][610][0]detect intranet address: 192.168.2.10, ifname=eth0

[1970-01-01 00:49:54.547][warn][610][0][2]stats network use index=0, ip=192.168.2.10

[1970-01-0100:49:54.548][warn][610][0][2] stats disk list: sda sdb xvda xvdb

[1970-01-01 00:49:54.549][trace][610][0]write log to file ./objs/srs.log

[1970-01-01 00:49:54.549][trace][610][0]you can: tailf ./objs/srs.log

[1970-01-01 00:49:54.551][trace][610][0]@see: https://github.com/ossrs/srs/wiki/v1_CN_SrsLog

[1970-01-01 00:49:54.552][trace][610][0]srs(ossrs) 2.0.200

[1970-01-01 00:49:54.553][trace][610][0]license: The MIT License (MIT), Copyright (c) 2013-2015 SRS(ossrs)

[1970-01-01 00:49:54.553][trace][610][0]primary/master: SRS/1.0release

[1970-01-01 00:49:54.553][trace][610][0]authors: winlin,wenjie.zhao

[1970-01-01 00:49:54.554][trace][610][0]contributors: winlin<winlin@vip.126.com>wenjie.zhao<740936897@qq.com> xiangcheng.liu<liuxc0116@foxmail.com>naijia.liu<youngcow@youngcow.net> alcoholyi<alcoholyi@qq.com>byteman<wangchen2011@gmail.com> chad.wang<chad.wang.cn@gmail.com>suhetao<suhetao@gmail.com> Johnny<fengjihu@163.com>karthikeyan<keyanmca@gmail.com> StevenLiu<lq@chinaffmpeg.org>zhengfl<zhengfl_1989@126.com> tufang14<breadbean1449@gmail.com> allspace<allspace@gmail.com>niesongsong<nie950@gmail.com> rudeb0t<nimrod@themanxgroup.tw>

[1970-01-01 00:49:54.554][trace][610][0]uname: Linux freeman-desktop 2.6.32-74-generic #142-Ubuntu SMP Tue Apr 2810:02:35 UTC 2015 i686 GNU/Linux

[1970-01-01 00:49:54.555][trace][610][0]build: 2015-12-30 16:08:34, little-endian

[1970-01-01 00:49:54.555][trace][610][0]configure:  --disable-all --with-hls--without-ssl --with-nginx --with-http-api --with-ingest --without-ffmpeg--with-http-server

[1970-01-01 00:49:54.556][trace][610][0]features: --prefix=/usr/local/srs --with-hls --without-hds --without-dvr--with-nginx --without-ssl --without-ffmpeg --without-transcode --with-ingest--without-stat --without-http-callback --with-http-server--without-stream-caster --with-http-api --without-librtmp --without-research--without-utest --without-gperf --without-gmc --without-gmp --without-gcp--without-gprof --without-arm-ubuntu12 --without-mips-ubuntu12 --log-trace

[1970-01-01 00:49:54.557][trace][610][0]conf: srs.conf, limit: 1000

[1970-01-01 00:49:54.557][trace][610][0]writev limits write 1024 iovs a time

[1970-01-01 00:49:54.557][warn][610][0][2]SRS 2.0.200 is not stable, please use stable branch 1.0release instead

[1970-01-01 00:49:54.558][trace][610][0]cpu is arm, glibc 2.2

[1970-01-01 00:49:54.558][warn][610][0][2]check feature rtmp handshake: off

[1970-01-01 00:49:54.559][trace][610][0]check feature hls: on

[1970-01-01 00:49:54.559][warn][610][0][2]check feature hds: off

[1970-01-01 00:49:54.559][warn][610][0][2]check feature http callback: off

[1970-01-01 00:49:54.560][trace][610][0]check feature http api: on

[1970-01-01 00:49:54.560][trace][610][0]check feature http server: on

[1970-01-01 00:49:54.561][trace][610][0]check feature http parser: on

[1970-01-01 00:49:54.561][warn][610][0][2]check feature dvr: off

[1970-01-01 00:49:54.562][warn][610][0][2]check feature transcode: off

[1970-01-01 00:49:54.562][trace][610][0]check feature ingest: on

[1970-01-01 00:49:54.562][warn][610][0][2]check feature system stat: off

[1970-01-01 00:49:54.563][trace][610][0]check feature compile nginx: on

[1970-01-01 00:49:54.563][warn][610][0][2]check feature compile ffmpeg: off

[1970-01-01 00:49:54.563][warn][610][0][2]stream caster: off

[1970-01-01 00:49:54.564][trace][610][0]MR(merged-read): on, @see https://github.com/ossrs/srs/issues/241

[1970-01-01 00:49:54.564][trace][610][0]MR(merged-read) default 0 sleep 350

[1970-01-01 00:49:54.564][trace][610][0]MW(merged-write) default sleep 350

[1970-01-01 00:49:54.565][trace][610][0]read chunk stream cache cid [0, 16)

[1970-01-01 00:49:54.565][trace][610][0]default gop cache 1, play queue 30s

[1970-01-01 00:49:54.566][trace][610][0]complex send algorithm enabled.

[1970-01-01 00:49:54.566][warn][610][0][2]TCP_NODELAY enabled, may hurts performance.

[1970-01-01 00:49:54.566][trace][610][0]auto guess socket send buffer by merged write

[1970-01-01 00:49:54.567][trace][610][0]system default latency in ms: mw(0-350) + mr(0-350) + play-queue(0-30000)

[1970-01-01 00:49:54.569][trace][610][0]http: root mount to ./objs/nginx/html

[1970-01-01 00:49:54.570][trace][610][0]start deamon mode...

[1970-01-01 00:49:54.579][trace][611][0]father process exit. ret=0

[1970-01-01 00:49:54.628][trace][610][0]grandpa process exit.

Linux. ret=1013(No such file or directory)

[1970-01-01 00:49:54.588][error][612][0][2]init st failed. ret=1013(No such file or directory)

#

跟进去发现:

#ifdef __linux__

// check epoll, some old linux donot support epoll.

// @see https://github.com/ossrs/srs/issues/162

if (!srs_st_epoll_is_supported()) {

ret = ERROR_ST_SET_EPOLL;

srs_error("epoll required on Linux. ret=%d", ret);

return ret;

}

#endif

#define ERROR_ST_SET_EPOLL                  1013

这说明是linux内核没有启动epoll

二、可以发布rtmp url,但连上去没有流。

--with-http-callback –with-ssl必须包括在里面。

建议IPC采用RTMP(server+rtmppush)的流媒体框架。相关推荐

  1. 树莓派使用nginx+rtmp搭建音频直播流媒体服务器

    前言 想使用树莓派连接usb音频采集卡实时采集收音机接收到的音频,树莓派上运行着由nginx+RTMP 搭建的直播流媒体服务器,这样就可以在客户端上通过支持rtmp串流协议的播放器就可以正常接收到音频 ...

  2. rtmp协议在p2p流媒体系统中的应用(论文转载)

    ZHANG Chong, YANG Can,  YANG Ze-quan, HUANG Hui -ze (South China University of Technology, Guangzhou ...

  3. 基于RTMP协议的Flash流媒体网页直播播放器

    本文记录一些基于Flash技术的网页播放器.基于Flash的网页播放器相比于其他网页播放器来说最大的优势就是"免插件安装"了,这一点可以很大的提高用户的体验质量. 主要是几种常用的 ...

  4. 采用SpringBoot、MyBatis-Plus 、Security框架,开发的一套权限系统,实现前后端分离,完善的代码生成机制

    项目说明 harry 采用SpringBoot.MyBatis-Plus .Security框架,开发的一套权限系统,实现前后端分离,完善的代码生成机制.Harry Gitee地址 harry-vue ...

  5. 单页面二改套后台,后台采用的是迅睿CMS框架

    介绍: 本源码由单页面二改套后台,后台采用的是迅睿CMS框架 迅睿CMS基于PHP8高性能,后台简单易用,插件也很丰富,有技术的可再次开发增加功能. 迅睿CMS框架基于MIT开源协议发布,免费且不限制 ...

  6. 微软流媒体框架DirectShow

    一.DirectShow 简介 DirectShow(简称 DShow) 是一个 Windows 平台上的流媒体框架,提供了高质量的多媒体流采集和回放功能.它支持多种多样的媒体文件格式,包括 ASF. ...

  7. Java语言写一个简单的学生信息管理系统,通过JDBC连接数据库对学生信息进行增删改查,采用三层思想和DBUtils第三方框架。

    我把源代码和sql文件放GitHub上了,你们可以自行下载:https://github.com/fenglily1/student. 有问题可以留言或私信,我看到就会回. 进阶版加上页面的管理系统在 ...

  8. srs推flv流_srs流媒体服务器(simple rtmp server)如何支持h265

    2020.4.24更新: 最新的srs代码已经支持hevc了,请直接阅读srs代码进行对接. 我在srs(1.0) 地址 (https://github.com/ossrs/srs)基础上加了点扩展, ...

  9. 服务器2003不支持流媒体,Windows Server 2003搭建流媒体服务器

    有关流媒体的解释:1.流媒体是实况或预录制的音频或视频内容,通过网络或Intenret传递到客户端计算机:2.与下载的文件不同,当内容传输结束之后,不会在用户硬盘中保存任何数据. windows Se ...

  10. EasyDarwin:最新海康摄像机IPC、硬盘录像机NVR、流媒体服务器IVMS、NVR回放取流RTSP地址规则说明

    本文档主要介绍海康威视设备直播预览RTSP.录像回放RTSP.流媒体取流的RTSP URL和IE直接预览.回放的HTTP URL. RTSP为取流协议,取到码流后需要解码显示,可以通过VLC播放器或者 ...

最新文章

  1. Application Installation Failed
  2. Sentinel 1.5.0 正式发布,引入 Reactive 支持
  3. raspberry树莓派NFS搭建
  4. PHP学习笔记 - 在Eclipse中使用XDebug调试代码 | Using XDebug debug code in eclipse
  5. Mac 使用Quik Time Player为iPhone录屏后, iPhone状态条时间变为9:41
  6. Cocos2d-x 3.2 的内存管理详解
  7. yaf写入把数据库信息写入redis,再取出来传到页面上显示 2016-10-22
  8. 【RabbitMQ】基础四:路由模式(Routing)
  9. 工程流体力学笔记暂记43 (收缩喷管中的流动)
  10. 51单片机hc-sr04超声波模块控制的c语言编程,基于STM32单片机对HCSR04超声波的控制...
  11. 使用 ipmitool 实现 Linux 系统下对服务器的BMC管理
  12. HJ42 学英语(递归)
  13. 小分子构象搜索:随机方法和系统方法
  14. 【Python】元组的应用场景和定义元组
  15. Ubuntu 14.04 Linux 3D桌面完全教程,显卡驱动安装方法,compiz特效介绍,常见问题解答
  16. 什么是路由模式通配符?
  17. Python是个什么鬼?为什么建筑设计都要学它?
  18. 小功率调频发射机设计
  19. 奇数阶魔方(1998)
  20. 一元享移动怎么样_揭露铜仁移动公司138元全家享套餐中的骗局!

热门文章

  1. typora主题配置:公众号一键排版
  2. preview一直不显示,无法和代码同步变化
  3. proteus信号峰值检测仪仿真
  4. 【Qt】x509证书操作之获取证书链并验证
  5. Blender 插件开发 添加快捷键
  6. 《AP音频分析仪的使用》
  7. ei会议论文录用但不参加会议_ei会议论文还能在报纸杂志发表吗?
  8. 用BoundsChecker检测内存泄漏
  9. 关于PHP 源码 加密的 一些 学习(黑刀)
  10. 基于javaweb+jsp的在线书城书店系统(java+jdbc+Servlet+mysql)