基于Flash与window平台本地程序通信实现媒体流发布
0 Web场景下的媒体流发布可以采用Flash原生API实现,但是Flash H264视频压缩参数不可控、音频无法AAC编码,所以一般采用浏览器插件方式,但是浏览器插件有版本兼容问题、不稳定,所以可以专门开发一个程本地程序,并且本地程序除了提供高压缩外还可以实现虚拟视频、美颜等功能。
1 开发一种window平台本地发布媒体流客户端程序,该程序完成音视频采集、DSHOW虚拟摄像头、虚拟视频功能、编码、发布媒体流媒体、伴奏管理等功能,本程序安装时将虚拟摄像头注册到window系统。
2 window平台本地程序在运行后,建立6个信令监听socket,为防止网络安全软件或服务发出绑定端口告警从而影响用户体验与防止与本机的其它程序的监听端口冲突与,6个信令监听socket绑定网络地扯127.0.0.1、端口分别为843(用于Flash快速获取策略访问控制文件),12168,22168,32168,42168,52168。
3 window平台本地程序在运行后用户通过界面设定物理摄像头或其它虚拟摄像头,同时排除前述由本程序生成的虚拟摄像头,该程序跟据用户选定的摄像头名称,创建DShow采集管理器与视频采集Filter,并视频采集Filter加入到DShow采集管理器,开始采集视频。
4 通过网页加载Flash,Flash运行后,用户通过界面选择前述虚拟摄像头、音频采集设备,创建Camara对像以前述虚拟摄像头为参数调用其相关方法开始采集视频,然后同Video对像关联以便进行视频预览,并保存用户所选择的音频采集设备名称;同时创建5个Flash TCP socket,同时向地扯为127.0.0.1、端口分别为12168,22168,32168,42168,52168的网络地扯发起连接,其中哪个socket先返回建立成功就记录哪个socket为USocket(为长连接且周期发送保活心跳通知),同时关闭其它4个socket,进入第5步;若全部失败,提示用户安装window平台本地推流程序(给出下载地扯),然后进入基于Flash原生API实现的流媒体推流流程。
5 Flash通过USocket向window平台本地推流程序发送开始推流通知,同时附带音频采集设务名称及音频编码码率、视频编码码率、发布流服务器地扯等信息,window平台本地推流程序收到后,开始创建音采集DShow Filter,将其加入第3步创建的DShow采集管理器中;同流媒体服务器建立网络连接;将采集到的音视频进行编码(音频采用AAC+SBR、视频采用H246 High Profile以实现音视频高效编码);通过前述网络连接将编码数据进行RTMP和或RTP封包后发送给流媒体服务器。
基于Flash与window平台本地程序通信实现媒体流发布的更多相关文章
- Chrome插件:本地程序实现验证码破解(浏览器与本地进程通信)
利用chrome调用本地程序破解图片验证码background.js var port = null, tabId, fname = "vcode.chrome.v1.item.01&quo ...
- window平台基于influxdb + grafana + jmeter 搭建性能测试实时监控平台
一.influxdb 安装与配置 1.1 influxdb下载并安装 官网无需翻墙,但是下载跳出的界面需要翻墙,我这里提供下载链接:https://dl.influxdata.com/influxdb ...
- 一个实现浏览器网页与本地程序之间进行双向调用的轻量级、强兼容、可扩展的插件开发平台—PluginOK中间件
通过PluginOK中间件插件平台(原名本网通WebRunLocal)可实现在网页中的JavaScript脚本无障碍访问本地电脑的硬件.调用本地系统的API及相关组件,同时可彻底解决ActiveX组件 ...
- Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解
Android中实现java与PHP服务器(基于新浪云免费云平台)http通信详解 (本文转自: http://blog.csdn.net/yinhaide/article/details/44756 ...
- 最简单的基于Flash的流媒体示例:RTMP推送和接收(ActionScript)
===================================================== Flash流媒体文章列表: 最简单的基于Flash的流媒体示例:RTMP推送和接收(Acti ...
- Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率..
Atitit.hybrid混合型应用 浏览器插件,控件的实现方式 浏览器运行本地程序的解决方案大的总结---提升用户体验and开发效率.. 1. hybrid App 1 1.1. Hybrid Ap ...
- 基于GPU的图像处理平台
基于GPU的图像处理平台 1. (309)英伟达推Jetson TX1 GPU模块力推人工智能 1.1 产品概述 Jetson TX1 GPU模块,主要针对近年来蓬勃发展的人工智能市场,包括无人机. ...
- 基于TCP与UDP协议的socket通信
基于TCP与UDP协议的socket通信 C/S架构与初识socket 在开始socket介绍之前,得先知道一个Client端/服务端架构,也就是 C/S 架构,互联网中处处充满了 C/S 架构(Cl ...
- AgileEAS.NET SOA 中间件平台.Net Socket通信框架-简单例子-实现简单的服务端客户端消息应答
一.AgileEAS.NET SOA中间件Socket/Tcp框架介绍 在文章AgileEAS.NET SOA 中间件平台Socket/Tcp通信框架介绍一文之中我们对AgileEAS.NET SOA ...
随机推荐
- 拒绝深坑!记录找了多半天时间的C++编译失败的错误
采用新的源码,和原来的服务改动也不是很大,但是拒绝深坑啊,找了半天以为是源码的问题,结果倒好原来是环境的问题,还是要感谢一个神一样的人物的帮助 编译的时候一直出现undefined reference ...
- trove instance service 总结
def create(self, req, body, tenant_id): # TODO(hub-cap): turn this into middleware LOG.info(_LI(&quo ...
- [SOJ] 畅通工程续
Description 某省自从实行了很多年的畅通工程计划后,终于修建了很多路.不过路多了也不好,每次要从一个城镇到另一个城镇时,都有许多种道路方案可以选择,而某些方案要比另一些方案行走的距离要短很多 ...
- redisTemplate keys方法 为空
我遇到的原因是spring.xml配置有问题,应该为: <bean id="redisTemplate" class="org.springframework.da ...
- 面试题-Java基础-垃圾回收
1.Java中垃圾回收有什么目的?什么时候进行垃圾回收? 垃圾回收的目的是识别并且丢弃应用不再使用的对象来释放和重用资源. 2.System.gc()和Runtime.gc()会做什么事情? 这两个方 ...
- 提取出图像中感兴趣的部分,cvSetImageRoi,Rect
在做人脸检测的时候,需要从摄像头拍摄视频中把检测到的人脸区域提取出来,网上找了很多博客,发现多数都是在用cvSetImageRoi函数,该函数声明如下:void cvSetImageROI(IplIm ...
- java中|与||有什么区别?那么&与&&呢
||当左边为真时,就不运行右边的表达式了|当左边为真,还是会运算右边的表达式&&当左边为假时,就不会运算右边的表达式&当左边为假时,还是会运算右边的表达式
- 批处理改hosts
@echo off color 0F @attrib -r "%windir%\system32\drivers\etc\hosts" @echo ######测试配置 beg & ...
- sublime text 设置
https://packagecontrol.io/installation#Simple 下载 php 自动补全 点击菜单栏的:Preferences: 选择:Setting-User项: 然后在大 ...
- Intellij IDEA下导出Java工程的可运行JAR包
Intellij IDEA下导出Java工程的可运行JAR包 昨天一直向导出一个Java工程的可运行JAR包,然后查阅网上的资料以及自己一遍一遍的尝试,均以失败告终.可以导出JAR包,但是导出的JAR ...