基于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 ...
随机推荐
- cursor属性
cursor光标类型 auto default none context-menu help pointer progress wait cell crosshair text vertical-te ...
- [SOJ] Ordering Tasks
1940. Ordering Tasks Constraints Time Limit: 1 secs, Memory Limit: 32 MB Description John has n task ...
- background-size (设置背景图片的大小)
设置背景图片的大小,以长度值或百分比显示(数值包括 长度length和百分比percentage),还可以通过cover和contain来对图片进行伸缩. 语法:background-size: au ...
- HDU 2177 取(2堆)石子游戏 (威佐夫博弈)
题目思路:威佐夫博弈: 当当前局面[a,b]为奇异局时直接输出0 否则: 1.若a==b,输出(0 0): 2.将a,b不停减一,看能否得到奇异局,若有则输出: 3.由于 ak=q*k(q为黄金分割数 ...
- Using YARN with Cgroups testing in sparkml cluster
部署服务器: sparkml 集群 ########### sparkml ########## sparkml-node1 # yarn resource manager sparkml-node2 ...
- redis 2
http://www.infoq.com/cn/articles/tq-redis-memory-usage-optimization-storage 在Ubuntu下安装reids redis-2. ...
- 【.NET】转载:使用FileStream批量上传文件。
先看效果图: 代码(没什么难度的一个案例,进度条为第三方控件ProgressODoom.dll,自己去网上下.) using System; using System.Collections.Gene ...
- php登录利用$token验证
<?php $module = $_GET['module']; $action = $_GET['action']; $token = md5sum($module.date('Y-m-d', ...
- shell中$(( )) 与 $( ) 还有${ }的区别
http://blog.chinaunix.net/uid-14351756-id-2820651.html $( ) 与 ` ` (反引号)在 bash shell 中,$( ) 与 ` ` (反引 ...
- 使用bootstrap建立响应式网页——通栏轮播图(carousel)
1.bootstrap提供了js插件——轮播图 我们还是照旧,直接拿过来用,需要改的地方再说. 2.修改 小屏幕看小图,大屏图看大图:这个可以利用自定义属性(data-XXX)data-img-lg( ...