用flash as3写了一段推流测试demo,参考srs_publisher和simplest_as3_rtmp_streamer。
推流到srs2服务器,录制为flv文件。
测试一轮结果如下:

Web Flash推上来的流,经过srs录制为flv。
srs设置jitter_time full; dvr_plan segment; dvr_duration 180; 实际录制180s。
flowplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
jwplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
sewiseplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 seek功能可后期添加。
strobe 可以播放服务器flv文件 有声音有视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
srs设置jitter_time zero;貌似也可以,笔记本测试过。

srs设置jitter_time off; dvr_plan session;
flowplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
jwplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
sewiseplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
strobe 可以播放服务器flv文件 有声音有视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。

srs设置jitter_time zero; dvr_plan session;
flowplayer 可以播放服务器flv文件 有声音没视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
jwplayer 可以播放服务器flv文件 有声音有视频 长宽比不对 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
sewiseplayer 可以播放服务器flv文件 有声音有视频 有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。
strobe 可以播放服务器flv文件 有声音有视频 没有时间标签 不支持seek。(ffmpeg,yamdi,flvmeta) 修复meta后 正常播放 有时间标签 支持seek。

一段时间以来都没有解决这个问题,以为就是这样的。也和网友讨论过这个问题,被当做srs feature处理了。
这几天研究录制的文件,发现录制的flv和其他平台录制的flv格式不太一样。
使用FlvParse分析一下录制flv文件的结构,发现:
经过ffmpeg转化的flv,有字段onMetaData,而web flash推流录制发flv没有。

  

经过查找接口,发现as3也有onMetaData接口,我并未调用。添加如下代码解决:

 // add metaData for stream
var metaData:Object = new Object();
metaData.title = "SptCallCenter";
metaData.author = "Jeffer";
metaData.width = av_hd_width;
metaData.height = av_hd_height;
metaData.videodatarate = av_hd_Vbitrate/1000;
metaData.framerate = av_hd_fps;
//send metadata
metaData.videocodecid = 7;
metaData.audiosamplerate = 16000;
metaData.audiocodecid = 4;
media_stream.send("@setDataFrame", "onMetaData", metaData);

web flash推流录制测试研究的更多相关文章

  1. web flash推流h264视频取消cbr

    flash as3.0 推视频H264关于视频质量 初次设置代码如下: h264Setting.setProfileLevel(H264Profile.BASELINE, H264Level.LEVE ...

  2. 基于flash的web视频对讲直播测试

    由于项目的需求,要在web上实现视频通话的需求.现成的方案有WebRTC,基于浏览器的成熟方案,但是这个方案和公司项目需求有几个点冲突.后来考虑到基于flash的方案.参考雷神的博客 simplest ...

  3. 安全测试 一次关于WEB的URL安全测试

    一次关于WEB的URL安全测试 by:授客 QQ:1033553122     测试思路: 时间精力问题,对web安全这块也没咋深入研究,但因为某个小插曲,公司要求先做个简单的安全测试,主要是针对UR ...

  4. Web端网站兼容性测试如何进行?来看看浏览器的兼容性测试要点

    软件兼容性测试工作的目标是保证软件按照用户期望的方式进行交互.随着用户对来自各种类型软件之间共享数据能力和充分利用空间同时执行多个程序能力的要求,测试软件之间能否协作变得越来越重要. 平台的兼容性,包 ...

  5. 《Python Web 接口开发与测试》---即将出版

    为什么要出这样一本书? 首先,今年我有不少工作是跟接口自动化相关的,工作中的接口自动化颇有成效. 我一直是一个没有测试大格局的人,在各种移动测试技术爆发的这一年,我却默默耕耘着自己的一亩三分地儿(We ...

  6. 【LR】录制测试脚本中的基本菜单

    学习来源: MBoo,小强老师性能测试及Loadrunner培训  ——录制测试脚本: 1.Vuser -> run-time settings ->General Run Logic : ...

  7. Web服务器性能/压力测试工具http_load、webbench、ab、Siege使用教程 - VPS侦探

    Web服务器性能/压力测试工具http_load.webbench.ab.Siege使用教程 - VPS侦探 http://soft.vpser.net/test/http_load/http_loa ...

  8. maven构建web项目,用jetty测试的配置pom.xml

    maven构建web项目,用jetty测试的配置pom.xml <project xmlns="http://maven.apache.org/POM/4.0.0" xmln ...

  9. [原创]Burp Suite web应用程序渗透测试神器

    [原创]Burp Suite web应用程序渗透测试神器 一 Burp Suite介绍 Burp Suite是Web应用程序测试的最佳工具之一,其多种功能可以帮我们执行各种任务.请求的拦截和修改,扫描 ...

随机推荐

  1. DVWA平台v1.9-Command Injection

    命令拼接: &:简单的拼接,第一条命令和第二条命令间没有什么制约关系 &&:第一条命令执行成功了,才会执行第二条命令 |:第一条命令的输出作为第二条命令的输入 ||:第一条命令 ...

  2. 包学会之浅入浅出Vue.js:开学篇

    2016年,乃至接下来整个2017年,如果你要问前端技术框架什么最火,那无疑就是前端三巨头:React.Angular.Vue.没错,什么jQuery,seaJs,gulp等都逐渐脱离了热点.面试的时 ...

  3. 【新手向】Centos系统文件权限的系统阐述与演示

    在linux服务器日常管理中,我们会经常管理查看文件或者文件夹的权限内容以保证服务的正常运行.今天就和大家聊聊文件权限的那些事. 查看文件的权限情况可以用 ll 命令例: ll -d /kid #查看 ...

  4. 安卓读取SD卡的容量

    在开发中,我们经常会用到SD卡,那么在对SD卡进行读写的时候,我们经常需要判断SD卡的剩余容量是否足够.因此,这次我们来写写获取SD卡容量的程序. 该注意的地方,我都在程序里面有注明了.看程序基本就懂 ...

  5. wait命令

    wait命令用来等待指令的指令,直到其执行完毕后返回终端.该指令常用于shell脚本编程中,待指定的指令执行完成后,才会继续执行后面的任务.该指令等待作业时,在作业标识号前必须添加备份号"% ...

  6. php异步执行函数

    1.在unix系统中,使用popen和pclose可以创建管道(通信途径)来连接到其他程序.   2.能够执行服务器命令的php函数有: exec(commond,$output) 接收一个命令,把得 ...

  7. a标签中href=""的几种用法(转)

    a标签中href=""的几种用法   标签: html / a标签 / javascript 46371 众所周知,a标签的最重要功能是实现超链接和锚点.而且,大多数人认为a标签最 ...

  8. SQL查询语句 [1]

    一.使用字符串作为条件查询 在 Home/controller/UserController.class.php 下插入 <?php namespace Home\Controller; use ...

  9. vue-resource基础介绍

    1.vue-resource 的请求api是按照rest风格设计的,它提供了7种请求api get(url, [data], [options]); head(url,[data],[options] ...

  10. 在Mac OS里安装和升级Git

    在此记录,给自己看,也给别人参考. 进入终端,查看当前Git版本,输入指令:git --version 输入which git回车,可以查看当前git在什么位置 经查,版本:2.10.0,版本较低,为 ...