srs录制视频时间戳有点问题
srs2或者srs3目前最新的版本和之前的版本,使用dvr功能录制flv文件。
使用本地播放器,如ffplay、potplayer、vlc、KMP和MPV等,都是正常的播放完整视频。
但是使用web flash播放器,都会遇到一个问题,对于大多数录制发flv文件,最后几秒钟播放不出来。
我测试过flv.js、video.js、cyberplayer、dplayer、flowplayer、jwplayer、neplayer、strobe、sewise、网易、百度等,
外加我自己用as3.0写的flash 播放器等诸多方案,都是播放不完整。
但是经过flvmeta -U或者-k修复后,基本上都可以完整播放了。由此推测是flv metadata信息和播放器不兼容。
用flv header分析工具查看,看起来没啥问题。比较困惑。
同样遇到问题的,还有srs群里的其他开发者:
在srs的issue里面也提到了这个问题:
但是今天遇到一个web播放器却可以完整播放-cuplayer
看代码也是video.js改版而来。有机会研究一下看看。
http://www.cuplayer.com/cuplayer/help/Help410.html
同一个文件,修复前:
$flvmeta -r bad.flv
{
'width':
'height':
'videodatarate':
'framerate':
'audiodatarate':
'audiosamplerate':
'audiosamplesize':
'stereo': false
'author': 'Jeffer'
'service': 'SRS/2.0.247(ZhouGuowen)'
'filesize':
'duration': 15.518
}
修复后:
$ flvmeta -r good.flv
{
'hasMetadata' => true
'hasVideo' => true
'hasAudio' => true
'duration' => 15.619
'lasttimestamp' => 15.518
'lastkeyframetimestamp' => 15.159
'width' =>
'height' =>
'videodatarate' => 376.225470581
'framerate' => 24.6494653947
'audiodatarate' => 62.1023473014
'audiosamplerate' =>
'audiosamplesize' =>
'stereo' => false
'filesize' =>
'videosize' =>
'audiosize' =>
'datasize' =>
'metadatacreator' => 'flvmeta 1.2.1'
'metadatadate' => Fri, Dec :: +
'audiocodecid' =>
'videocodecid' =>
'audiodelay' =>
'canSeekToEnd' => false
'hasCuePoints' => false
'cuePoints' => [
]
'hasKeyframes' => true
'keyframes' => {
'times': [ 0.079
0.676
1.324
1.925
2.522
3.113
3.78
4.361
4.957
5.557
6.162
6.766
7.359
7.964
8.572
9.163
9.778
10.379
10.977
11.579
12.165
12.775
13.354
13.963
14.56
15.159
]
'filepositions': [ ]
}
}
srs录制视频时间戳有点问题的更多相关文章
- bandicam如何录制视频
我们一般都很熟悉这类软件:屏幕录制专家和kk录制等,这些都是国内比较优秀的作品.不过exe的封装格式以及录制的清晰度让人很纠结.所以这里要为大家分享的是一款韩国人写录制软件Bandicam.Bandi ...
- Android手机录制视频 实时传输(转载)
最近调研android视频录制.另一部手机实时观看,大致有以下几种思路. 1. android手机充当服务器,使用NanoHTTPD充当服务器,另一部手机或者pc通过输入http://手机的ip:80 ...
- 【Android】 Android实现录音、播音、录制视频功能
智能手机操作系统IOS与Android平分天下(PS:WP与其他的直接无视了),而Android的免费招来了一大堆厂商分分向Android示好,故Android可能会有“较好”的前景. Android ...
- iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频
iOS AVCaptureVideoDataOutputSampleBufferDelegate 录制视频 应用场景: 使用AVFoundation提供的API, 我们可以从 AVCaptureVid ...
- 使用MediaRecorder录制视频短片
MediaRecorder除了可用于录制音频之外,还可用于录制视频,使用MediaRecorder录制视频与录制音频的步骤基本相同.只是录制视频时不仅需要采集声音,还需要采集图像.为了让MediaRe ...
- iOS 三种录制视频方式
随着每一代 iPhone 处理能力和相机硬件配置的提高,使用它来捕获视频也变得更加有意思.它们小巧,轻便,低调,而且与专业摄像机之间的差距已经变得非常小,小到在某些情况下,iPhone 可以真正替代它 ...
- android开发,静音录制视频,在一般清晰度的前提下保证文件大小越小越好
public void startRecord() { mediarecorder = new MediaRecorder();// 创建mediarecorder对象 mCamera = getCa ...
- 转:android 录制视频的Demo
转:http://blog.csdn.net/peijiangping1989/article/details/7049991 在这里给出自己的一个测试DEMO,里面注释很详细.简单的视频录制功能. ...
- Android使用的开发MediaRecorder录制视频
MediaRecorder除了使用录制音频.还可用于录制视频.关于MediaRecorder的具体解释大家能够參考<Android开发之MediaRecorder类具体解释>.使用Medi ...
随机推荐
- vuex的实用知识点
本文系统介绍vuex的全部内容 为什么用vuex 组件通信知道吧,相信很多同学,刚学的时候很难懂,实时上在实际应用中,大型项目如果使用最原始的组件通信会非常的麻烦,主要体现在多层嵌套的组件之间的通信, ...
- MongoDB数据导入hbase + 代码
需求: 从mongoDB里面查出来数据,判断是否有该列簇,如果有则导入此条数据+列簇,如果没有,则该条数据不包含该列簇 直接贴出代码: package Test; import java.util.A ...
- loop
-- ------------------------loop---------------------------delimiter $DROP PROCEDURE IF EXISTS my_cou ...
- oracle --(一)数据块(data Block)
基本关系:数据库---表空间---数据段---分区---数据块 数据块(data Block)一.数据块Block是Oracle存储数据信息的最小单位.这里说的是Oracle环境下的最小单位.Orac ...
- 由浅入深漫谈margin属性
margin 在中文中我们翻译成外边距或者外补白(本文中引用外边距).他是元素盒模型(box model)的基础属性. 一.margin的基本特性 margin 属性包括 margin-top, ma ...
- C++读入整行字符串的方法
string s; getline(cin,s); cout<<s<<endl; ]; scanf("%[^\n]%*c",s); printf(" ...
- 面试题: Struts2
1. Struts2与Struts1的联系与区别是什么?为什么要用Struts2? 答案: struts1与struts2都是mvc框架的经典实现模式. Struts2不是从Struts1升级而来,而 ...
- JavaPersistenceWithHibernate第二版笔记-第七章-002Mapping an identifier bag(@CollectionId、@ElementCollection、@CollectionTable、@Type)
一.结构 A bag is an unordered collection that allows duplicate elements, like the java.util.Collection ...
- Conda / Miniconda——软件包管理系统使用
conda是一个非常好的python包管理软件,但是它的Minicoda是一个非常好的生信软件包管理软件,更多conda介绍多google. Miniconda简直就是生信人的福音,尤其是像我这种传统 ...
- loj10088 出纳员问题
传送门 分析 我们设pre[i]为到第i个时段的雇佣员工的总数量,sum[i]表示时段i的可雇佣员工的总数量,r[i]表示时段i所需工人的数量.由此我们不难求出: 0<=pre[i]-pre[i ...