針對早期 3G/2.5G 網絡環境下手機流媒體播放,社區開發者討論出一套可行方案:以 MMS 為傳輸載體、AMR 為編碼格式、分段分發、多線程管道式預載。本文整理關鍵技術點與 FFmpeg 分段命令、優化建議。
@inputFilename = "C:/opt/media/changjin.wma";
@outputFilename = "C:/opt/media/changjin";
for ($i=1, $j=1; $i<=1000; $i+=10, $j++) {
system("C:/software/ffmpeg.exe -i @inputFilename -ac 1 -acodec amr_nb -t 10 -ss $i @outputFilename.$j.amr");
}
參數說明:
-ac 1:單聲道-acodec amr_nb:AMR Narrowband 編碼器-t 10:每段 10 秒(測試用,實際建議 45-50 秒)-ss $i:起始偏移秒數實測:輸出檔約 17KB/10秒,符合 MMS 附件限制。
分段太小會導致播放間斷多、系統開銷大。建議:
- 多開幾條下載執行緒並行獲取
- 分段大小漸增:首段小(快速首幀),後續段逐漸加大
- 利用「AMR 播放時長 > 下載時長」的時間差,播放當下載下一段
- 減少網路握手開銷,提升流暢度
Player 支援 prefetch、realize 狀態機,配合 InputStream 可實現邊下邊播。「MMS+AMR+分段+管道預載」是早期頻寬受限環境下的務實方案。核心思想——小首段快速首幀、大後段利用播放時間差預載、多線程並行——在現代 HLS/DASH 自適應碼流技術中依然閃耀著工程智慧的光芒。