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': 640 'height': 360 'videodatarate': 0 'framerate': 30 'audiodatarate': 0 'audiosamplerate': 16000 'audiosamplesize': 16 'stereo': false 'author': 'Jeffer' 'service': 'SRS/2.0.247(ZhouGuowen)' 'filesize': 886665 'duration': 15.518 }
修复后:
$ flvmeta -r good.flv { 'hasMetadata' => true 'hasVideo' => true 'hasAudio' => true 'duration' => 15.619 'lasttimestamp' => 15.518 'lastkeyframetimestamp' => 15.159 'width' => 640 'height' => 360 'videodatarate' => 376.225470581 'framerate' => 24.6494653947 'audiodatarate' => 62.1023473014 'audiosamplerate' => 44100 'audiosamplesize' => 16 'stereo' => false 'filesize' => 887531 'videosize' => 756782 'audiosize' => 127073 'datasize' => 1143 'metadatacreator' => 'flvmeta 1.2.1' 'metadatadate' => Fri, 28 Dec 2018 14:05:29 +0800 'audiocodecid' => 10 'videocodecid' => 7 'audiodelay' => 0 'canSeekToEnd' => false 'hasCuePoints' => false 'cuePoints' => [ ] 'hasKeyframes' => true 'keyframes' => { 'times': [ 0 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': [ 1126 1211 29490 61842 95910 127295 159701 191618 222317 253650 287278 322568 358992 398205 440079 477691 517690 557115 595044 629137 660857 694796 729066 765104 797166 826118 860260 ] } }