迅雷是如何實現邊下邊看的,其實可以分幾個層級來說:
1)比如普通的http模式的影片檔案,這種基本所有播放器,比如ffmpeg架構的,都支援直接http協議的流模式邊下邊播,而且支援拖動的。這一部分實際是ffmpeg等底層內建好的基礎功能。
原理就是如同前面幾位樓主所提到的,會先獲取影片的格式資訊、關鍵幀等資訊,然後在使用者拖動的時候,根據關鍵幀等資訊,找到對應的關鍵幀的位置的二進位制資料,填充播放。
2)如果是p2p,比如torrent這種種子檔案,其實ffmpeg他們是不支援這類協議的。這種情況下,一般p2p播放器的做法是將p2p協議的傳輸層下載到的資料,再封裝一次http協議餵給播放器,這樣播放器就直接跟一個http層通訊,http層把range等指令,傳達給p2p層排程下載,去下載指定位置區域的資料。
和迅雷的p2p影音一樣,點量也有一款點雲影音,就是一套程式碼可以在PC、Android、IOS下都可以一樣執行的p2p影音產品。
目前點雲影音這款p2p軟體的原理就是這樣的:
1)播放器在播放磁力鏈、或者torrrent檔案時,呼叫點量P2P引擎,p2p引擎裡面透過torrent或者磁力鏈資訊,去透過tracker、DHT尋找周圍的peer鄰居,然後獲取資料。
2)p2p獲取到的資料,透過播放器可以支援的協議,返回給播放器,播放器來看,這就是一個標準的mp4/flv等影片檔案,所以他可以正常播放
3)播放器在拖動時,p2p引擎自動切換下載位置,並返回資料。
希望上述資訊可以幫到你
迅雷是如何實現邊下邊看的,其實可以分幾個層級來說:
1)比如普通的http模式的影片檔案,這種基本所有播放器,比如ffmpeg架構的,都支援直接http協議的流模式邊下邊播,而且支援拖動的。這一部分實際是ffmpeg等底層內建好的基礎功能。
原理就是如同前面幾位樓主所提到的,會先獲取影片的格式資訊、關鍵幀等資訊,然後在使用者拖動的時候,根據關鍵幀等資訊,找到對應的關鍵幀的位置的二進位制資料,填充播放。
2)如果是p2p,比如torrent這種種子檔案,其實ffmpeg他們是不支援這類協議的。這種情況下,一般p2p播放器的做法是將p2p協議的傳輸層下載到的資料,再封裝一次http協議餵給播放器,這樣播放器就直接跟一個http層通訊,http層把range等指令,傳達給p2p層排程下載,去下載指定位置區域的資料。
和迅雷的p2p影音一樣,點量也有一款點雲影音,就是一套程式碼可以在PC、Android、IOS下都可以一樣執行的p2p影音產品。
目前點雲影音這款p2p軟體的原理就是這樣的:
1)播放器在播放磁力鏈、或者torrrent檔案時,呼叫點量P2P引擎,p2p引擎裡面透過torrent或者磁力鏈資訊,去透過tracker、DHT尋找周圍的peer鄰居,然後獲取資料。
2)p2p獲取到的資料,透過播放器可以支援的協議,返回給播放器,播放器來看,這就是一個標準的mp4/flv等影片檔案,所以他可以正常播放
3)播放器在拖動時,p2p引擎自動切換下載位置,並返回資料。
希望上述資訊可以幫到你