目前的方案 source–>flv

程序员认为rtsp或者其他源 转 flv是可行的一条路,这个没有问题,但是是不是可以直接转fmp4呢,当然是可行的,实际上flv.js 只是把flv格式转成fmp4而已,但是这里有一个问题,在投屏协议中是没有flv格式的,要支持还是直接用http协议或者rtsp协议比较合适,还有一条就是修改投屏协议,但这个不能大规模变,因为你不可能去改变每个设备接收端的协议,sink端可以说是死的,不容改变。

修改的方案,source–>fmp4

dlna协议的httpserver必须自己做,在程序请求url后,如http://xxxxxx/a.mp4 接收请求后必须从源里面把h264和aac修改成为fmp4的内存模式,使用ffmpeg是一个比较简单的方法,当然也可以从数据上直接组

#define BUF_LEN 1024*1024
uint8_t * Buf = NULL;
if (avformat_alloc_output_context2(&O_FContext, NULL, "mp4", NULL) < 0)return false;
Buf = (uint8_t*)av_malloc(sizeof(uint8_t)*(BUF_LEN));
O_FContext->pb = avio_alloc_context(Buf, BUF_LEN,1,(void*)this,NULL,write_buffer,NULL);
if (O_FContext->pb == NULL)
{avformat_free_context(O_FContext);O_FContext = NULL;HTTP501_return();return;
}
O_FContext->pb->write_flag = 1;
O_FContext->pb->seekable = 1;
O_FContext->flags=AVFMT_FLAG_CUSTOM_IO;
O_FContext->flags |= AVFMT_FLAG_FLUSH_PACKETS;
O_FContext->flags |= AVFMT_NOFILE;
O_FContext->flags |= AVFMT_FLAG_AUTO_BSF;
O_FContext->flags |= AVFMT_FLAG_NOBUFFER;

为了达到通的效果,建议使用go 或者node去写http服务,c语言写要写更多,写成了以后再使用c或者c++去写一个httpserver,这样更方便于验证。

rtsp 接源或其他源

ws方式

最方便的是使用rtsp源,使用live555可以随手建立一个rtsp源来测试,编译好live555后,使用ffmpeg来做一个h264 或者h265的源是非常简单的,

fffmpeg -i aa.mp4 -vcodec copy -an -f h264 a.264

接下去就是做httpserver和wsserver,我使用boost库,部分人使用websocketpp也是很好,但是有兼容性问题,我使用里面的协程方式自己写了一个ws的server,减少了依赖。

http方式

http可以使用go 或者 node 去写一个server,直接做转发用,打通pipe通道就可以了

rtsp直接转http fmp4相关推荐

  1. nodejs ffmpeg 超级工具 rtsp fmp4 rtmp

    1.为何使用nodejs作为测试工具 1 .nodejs作为一个非常棒的工具,启动http协议使用express或者koi这种工具非常方便 2 .性能卓越,单线程启动不用担心有访问加锁问题 3.在使用 ...

  2. rtsp,rtp,gb28181直接转化为html5播放(二)

    承接上一节 udp服务器接流转html5播放 效果 先看效果: 服务器拉rtsp流,直接转成flv,不经过推流,浏览器使用ws直接连接写得我们写得服务器播放,因为websocket本身是跨域得,可以直 ...

  3. 流媒体协议初探(MPEG2-TS、RTSP、RTP、RTCP、SDP、RTMP、HLS、HDS、HSS、MPEG-DASH)

    目录 一.综述 需求分析 协议定制 二.MPEG2-TS协议 三.RTSP协议.RTP.RTCP.SDP RTSP RTP.RTCP.SDP 四.RTMP 五.HLS.HDS.HSS HLS HDS和 ...

  4. FFmpeg 命令行和API方式转换rtsp或264成Fragmented MP4

    FMP4概念 fmp4,是适应于现代浏览器的一种流媒体格式. 和mp4格式不同的是,以往的mp4格式化也分为header信息和payload信息,一个大的mp4就会有一个很大的头信息,不适合与现在的网 ...

  5. 利用RTVS实现html5无插件播放rtsp、rtmp

    引言 最近经常有人咨询RTVS能否播摄像头的rtsp的流,RTVS暂只支持接入JT/T 1078协议,并不支持rtsp等格式. 但可以借助RTVSDev模拟器将rtsp.rtmp.hls或本地文件等视 ...

  6. 流媒体网络协议 -- RTSP

    RTSP RTSP介绍 1. 与HTTP协议的异同 2. RTSP的特性 RTSP原理 1. RTSP会话交互过程 2. RTSP客户端状态机 3. RTSP server保活机制 RTSP请求与回应 ...

  7. 媒体文件格式分析之FMP4

    媒体文件格式分析之FMP4 MP4 中最基本的单元就是Box,它内部是通过一个一个独立的Box拼接而成的.所以,这里,我们先从 Box 的讲解开始,每个 Box 是由 Header 和 Data 组成 ...

  8. 关于rtsp的时间戳问题

    这里主要关注的rtp包的时间戳,在rtsp中,播放器的1S钟的定义是和媒体的采样率有关的. 例如视频的采样率是90K,那么最小时间粒度(单位)是1/90000秒,再转换成ms就是 1/90毫秒,这个就 ...

  9. rtsp有没有好使_轻量级RTSP服务和内置RTSP网关有什么不同?

    好多开发者疑惑,什么是内置RTSP网关,和轻量级RTSP服务又有什么区别和联系?本文就以上问题,做个简单的介绍: 轻量级RTSP服务 为满足内网无纸化/电子教室等内网超低延迟需求,避免让用户配置单独的 ...

最新文章

  1. Volley 请求提示:com.android.volley.ClientError
  2. vs2019 MFC 中 cannot open include file 'afxres.h' 问题解决方法
  3. 各种远程通信协议比较RMI、MINA、ESB、Burlap、Hessian、SOAP、EJB和JMS等
  4. BZOJ 1552/1506 [Cerc2007]robotic sort
  5. mysql常用命令操作
  6. 2017.9.11 数列 失败总结
  7. python的matplotlib库怎么安装_为Python安装matplotlib库
  8. 一次cpu占用高的定位分析
  9. 利用级数求和推导泊松分布的期望方差
  10. 查看linux用户编码,linux查看服务器编码
  11. 找工作知识储备(2)---数组字符串那些经典算法:最大子序列和,最长递增子序列,最长公共子串,最长公共子序列,字符串编辑距离,最长不重复子串,最长回文子串
  12. ylbtech-dbs:ylbtech-7,welfareSystem(福利发放系统)
  13. Echarts实现成都市地图下钻
  14. 使用you-get下载blbl视频
  15. 进行计算机系统管理调度监控和维护的软件是,MES车间调度监控系统软件
  16. hart协议c语言,简述HART协议命令和语言
  17. 一包辣条如何逆袭,从屌丝品牌成为有逼格的产品?
  18. 简单自定义MVC优化
  19. IDEA TODO标签使用
  20. 声声不息,新“声”报到

热门文章

  1. python课程设计
  2. 写给互联网上从业的Web程序员
  3. 二十五还是单身的十大原因
  4. 驯龙大师稳了!iQOO Neo6游戏实测:两款手游均接近满帧
  5. 诺基亚贝尔完成5G毫米波NR-DC和200MHz载波带宽测试
  6. 万象双环设计+原色双影像极致体验 华为P50标准版9月29日正式开售
  7. 全网沸腾!鸿蒙手机要来了
  8. 虽然苏伊士运河大堵塞了,但是全球“玩家”收获了真实的快乐
  9. RedmiK40系列首销5分钟破30万台 旗舰焊门员实至名归
  10. 国内第四大运营商中国广电成立:5G 192号段要来了!