基于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 生成二维码
package com.sun.erwei; import java.awt.Graphics2D;import java.awt.geom.AffineTransform;import java.a ...
- Openjudge-NOI题库-Pell数列
题目描述 Description Pell数列a1, a2, a3, ...的定义是这样的,a1 = 1, a2 = 2, ... , an = 2 * an − 1 + an - 2 (n > ...
- 扔鸡蛋问题详解(Egg Dropping Puzzle)
http://blog.csdn.net/joylnwang/article/details/6769160 经典的动态规划问题,题设是这样的:如果你有2颗鸡蛋,和一栋36层高的楼,现在你想知道在哪一 ...
- Python--三元运算与lambda表达式
三元运算: if 1 ==1: name = 'Tim' else: name = 'SB' 利用三元运算来完成上述4句语句任务: name = 'Tim' if 1==1 else 'SB' lam ...
- TcpListener 示例
using System; using System.IO; using System.Net; using System.Net.Sockets; using System.Text; class ...
- redis7--hash set的操作
数据类型Hash(1)介绍hash数据类型存储的数据与mysql数据库中存储的一条记录极为相似Redis本身就类似于Hash的存储结构,分为key-value键值对,实际上它的Hash数据就好像是在R ...
- tftp服务器最简单安装配置
注:转载他人 这是在debian下面操作的1.安装tftp-server sudo apt-get install tftpd-hpa sudo apt-get install tftp-hpa(如果 ...
- iOS开发工具箱
工欲善其事 必先利其器 最新重新安装了MacBook Air和Mac Pro的系统,彻底解决了一编译就报硬盘空间不足的问题.平时开发中比较常用的工具都需一一安装. XCode:没什么好说的,外星人都知 ...
- Android非常有用的开源库介绍整理
Android开源库 自己一直很喜欢Android开发,就如博客副标题一样,我想做个好的App. 在摸索过程中,GitHub上搜集了很多很棒的Android第三方库,推荐给在苦苦寻找的开发者,而且我会 ...
- 2016腾讯we大会的时间——2016年11月6日
作为腾讯公司主办的一场国际化创新盛会,WE大会由腾讯公司自2013年以来每年举办,WE大会已迎来第四年,每年大会都会邀请全球互联网思想家.前沿创新团队来进行现场演讲和分享,分享最前沿的思想和技术,创造 ...