用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);

最新文章

  1. [Azure附录]1.在Windows Server 2012中安装Active Directory域服务
  2. iOS设计模式 - 命令模式
  3. js中关于prototype学习(2015年1月5号晚)
  4. ios 调用打印机
  5. redis的实现过程
  6. C++ string的常用功能
  7. python学习小结1:for循环控制语句
  8. UVa 1638 (递推) Pole Arrangement
  9. TigerDLNA for ios 集成Tlplayer
  10. real-time application
  11. CMD模块定义规范
  12. 数据类型和Json格式[转]
  13. 批处理SQL语句
  14. 只有勇敢的人、鲁莽的人和绝望的人才会追求大的变革 – D.J. Anderson
  15. nginx开启后主机无法访问虚拟机的nginx解决方案
  16. 转:Loadrunner上传文件解决办法(大文件)
  17. 编写PHP代码总结
  18. Section 1.1 Greedy Gift Givers
  19. [Java] [Lock] [Synchronized VS ReentrantLock]
  20. 1到n的整数中,1出现的次数

热门文章

  1. 第九章 Servlet工作原理解析(待续)
  2. angular之增删改查
  3. javascript——正则表达式(RegExp、String)(未完工)
  4. linux命令-passwd
  5. Android 媒体编解码器(转)
  6. bash: telnet: command not found
  7. Spring事务SPI及配置介绍
  8. Android 自定义格式的对话框
  9. JavaScript中常用的函数
  10. varnish安装