我們正在研究將兩個m3u8合爲一體的服務器端解決方案。我們之前一直使用FFMPEG來連接兩個流並創建一個新流。這一切工作正常。contrib hls js跳過m3u8的一部分,如何防止這個
但是,由於性能問題,我們決定通過分析原始m3u8文件並將它們連成一體來重新設計實現。
這似乎工作正常,我們能夠分析原始文件並重建m3u8。在此之後,我們爲客戶提供'新'm3u8,一切都在播放。 我們對第二個m3u8文件進行同樣的處理,再次,一切正常,我們也能夠播放這個文件。
我們嘗試的下一件事是連接兩個文件成爲一個。這似乎工作得很好,我們把這些片段放在另一個片段上,然後將其提供給玩家。 在safari中,這個作品很有魅力,因爲我們不需要任何額外的插件/ javascript/etc。
Chrome,使用video.js和video-contrib-hls,開始播放流,似乎工作。但是,它基本上只是跳過串聯的流(哪一個是第二個)。您可以看到電影的運行時間縮短,並且該部分被玩家忽略。
無論如何圍繞這個問題?
下面是一個示例部分或我們連接的m3u8(我已經改變了網址)。
#EXTM3U
#EXT-X-VERSION:5
#EXT-X-PLAYLIST-TYPE:VOD
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-TARGETDURATION:20
#EXT-X-PROGRAM-DATE-TIME:2016-12-01T18:16:11.743000+00:00
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x00000000000000000000000000000000
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G00000000.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x0000000000000000000000000000000B
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G0000000B.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x0000000000000000000000000000000C
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G0000000C.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x0000000000000000000000000000000D
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G0000000D.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x0000000000000000000000000000000E
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G0000000E.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x0000000000000000000000000000000F
#EXTINF:4.0960,
http://subdomain1.someurl.com/slices/648/456/123/G0000000F.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=123&v=123&r=g",IV=0x00000000000000000000000000000010
#EXTINF:2.64830,
http://subdomain1.someurl.com/slices/648/456/123/G00000010.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000000
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000000.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000001
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000001.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000002
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000002.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000003
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000003.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000004
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000004.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000005
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000005.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000006
#EXTINF:4.0960,
https://subdomain2.someurl.com/slices/4da/456/789/D00000006.ts?x=0&si=0
#EXT-X-KEY:METHOD=AES-128,URI="https://localhost/check2?b=789&v=789&r=d",IV=0x00000000000000000000000000000007
#EXTINF:3.09250,
https://subdomain2.someurl.com/slices/4da/456/789/D00000007.ts?x=0&si=0
#EXT-X-ENDLIST
我已經發現鉻一些調試信息,似乎緩存器所讀(因爲它是第二個文件播放,它重新從0開始) '00:00:57 466 \t debug \t跳過拼接幀生成:0us處的第一個新緩衝區在0us處的現有緩衝區處或之前開始。 00:00:57 605 \t info \t視頻編解碼器:avc1.42C00D' – bekks8