簡體   English   中英

我應該嘗試流式傳輸 mp3

[英]Should I Try to be Streaming mp3s

我正在 python 中開發一個程序,它可以播放來自各種網站的音頻文件,主要是 mp3。 我播放這些文件的第一個想法是嘗試使用請求流式傳輸它們然后解碼塊,搜索將是請求 header 中的某種范圍。

因此,我嘗試對此進行一些測試,但在將小塊數據轉換為可播放形式時遇到了一些問題。 在我深入研究並嘗試修復它們之前,我想知道是否需要流式傳輸。 像 vlc 這樣的程序是這樣處理的嗎? 你會如何處理它?

我做了很多谷歌搜索,但沒有找到任何有用的東西。

是的,如果您在下載時播放,則流式傳輸是 go 的方式。

這通常不需要您提出任何特殊要求。 只需發出請求,在數據進入時對其進行解碼,對其進行緩沖,如果您的緩沖區已滿,則對 stream 施加背壓。

最終發生的事情是 TCP window 大小將減小,從而減慢服務器傳輸給您的速度,直到它與播放速率相匹配。 (在實踐中,這意味着 window 會很快歸零,然后突然打開幾個數據包並再次歸零,因為如今的互聯網連接通常比所需的速度快得多。)

現在,如果您失去連接,您仍然可能希望處理遠程請求。 也就是說,如果我聽了幾分鍾的音頻然后失去了連接(例如從 WiFi 更改為 LTE 時),您的應用程序可以重新連接並請求從中斷點開始的所有字節。 瀏覽器會這樣做。 當使用常見的 HTTP CDN 時,這一點變得更加重要,因為這些 CDN 對長時間保持打開的連接的容忍度較低。 通常,如果 TCP window 大小保持為零 2 分鍾,則預計 TCP 連接將關閉。

您可以下載 Wireshark 或其他一些數據包嗅探器的副本,並觀察在 VLC 中播放這些 HTTP 流之一時通過網絡發生的情況。 您將更好地了解幕后發生的事情。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM