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 播放器等諸多方案,都是播放不完整。html
可是通過flvmeta -U或者-k修復後,基本上均可以完整播放了。由此推測是flv metadata信息和播放器不兼容。
用flv header分析工具查看,看起來沒啥問題。比較困惑。
一樣遇到問題的,還有srs羣裏的其餘開發者:ios
在srs的issue裏面也提到了這個問題:web
可是今天遇到一個web播放器卻能夠完整播放-cuplayeride
看代碼也是video.js改版而來。有機會研究一下看看。工具
http://www.cuplayer.com/cuplayer/help/Help410.html測試
同一個文件,修復前:spa
$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 }
修復後:code
$ 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 ] } }