基于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 ...
随机推荐
- 我的JAvA第三天
- Maven pom项目部署
maven控制台运行程序 <plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>exec- ...
- mysql 提示too many connections”的解决办法
最近使用python多线程连接mysq打数据,安装好mysql后,使用500线程连接发现提示:too many connections, 查询方法得知是需要进行配置才行: 产生这种问题的原因是: 连接 ...
- linux-c/c++调试利器gdb、ddd小试
linux-c/c++调试利器gdb.ddd小试 原文链接: http://deepfuture.iteye.com/blog/749148 博客分类: C++/C/lisp CC++C#LinuxU ...
- 使用Session防止表单重复提交
本文出处:http://www.cnblogs.com/xdp-gacl/p/3859416.html 在平时开发中,如果网速比较慢的情况下,用户提交表单后,发现服务器半天都没有响应,那么用户可能会以 ...
- Windows下NexusPHP搭建PT站过程
搭建环境:Win7+XAMPP(5.5) 网站根目录: D:\IT\XAMPP5.5\htdocs\ 1 下载源码程序http://sourceforge.net/projects/nexusphp/ ...
- 淘淘商城_day04_课堂笔记
今日大纲 实现首页的大广告位功能 实现内容管理系统 首页的大广告 什么是大广告 JS效果: 点击下面的序号选择查询哪个广告 自动切换 点击图片查询具体的页面 以上是由前端团队来开发. 数据结构 说明: ...
- 2-jQuery - AJAX load() 方法【进阶篇】
第一篇的AJAX load() 方法过于简单,补充一下,完整的. 格式 $(selector).load(URL,data,callback); 源码 <!DOCTYPE html> &l ...
- UVa 12100 Printer Queue (习题 5-7)
传送门:https://uva.onlinejudge.org/external/121/12100.pdf 题意:队列中待打印的任务(1 <= n <= 100)带有优先级(1-9), ...
- apache 安装mod_rewrite
如果你的服务器apache还没有安装,那很简单,在编译apache时将mod_rewrite模块编译进去就可以.如果你的apache已经安装好了,现在只想编译出mod_rewrite.so模块,在ap ...