我正在嘗試開發適用於Android手機的流媒體AV媒體服務器作爲客戶端。這立即給我制約了開發一個使用RTSP的服務器。我熟悉Java編程,並發現可以使用Netty(Java NIO)來填補此協議的Java Media Framework中的其他巨大缺口。我玩過它並沒有取得真正的成功。我知道live555,但我的日程安排很緊,並不想開始搞亂C++,因爲我對這個主題知之甚少。我一直被困在這個問題上好幾個星期,沒有什麼真正的表現。由於Android市場上有許多專有應用程序,因此必須流式傳輸至android。如果有一種簡單的方法來實現一個RTSP AV媒體服務器,它只需流傳輸.mp4或.3gp和.mp3以便在不使用live555庫的情況下使用android,那麼是否能夠有經驗和有關此主題的知識?如果沒有,我只需要快速熟悉C++。先謝謝你。開發適用於Android的流媒體服務器
回答
好吧,很簡單,因爲這是使用HTTP流式傳輸。
我在WinXP上用IIS創建了一個名爲'Music'的虛擬文件夾,並將其指向包含mp3文件的文件夾。這是流式傳輸文件所需的完整活動(名稱硬編碼)。
順便說一句,它叫做SimpleNetRadio,就像我最初開始玩Shoutcast流一樣。
package com.mycompany.SimpleNetRadio;
import android.app.Activity;
import android.media.AsyncPlayer;
import android.media.AudioManager;
import android.net.Uri;
import android.os.Bundle;
public class SimpleNetRadio extends Activity
{
private AsyncPlayer ap = null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
@Override
protected void onStart() {
super.onStart();
ap = (AsyncPlayer) getLastNonConfigurationInstance();
}
@Override
protected void onStop() {
super.onStop();
if (ap != null)
ap.stop();
}
@Override
protected void onResume() {
super.onResume();
if (ap == null) {
ap = new AsyncPlayer("Simple Player");
ap.play(this, Uri.parse("http://192.168.1.1/Music/02%20-%20Don't%20Stop%20Believin'.mp3"), true, AudioManager.STREAM_MUSIC);
}
}
@Override
public Object onRetainNonConfigurationInstance() {
return ap;
}
}
你也應該能夠與更多的代碼與MediaPlayer的做到這一點 - 這將更好地處理錯誤條件,也不會需要更多的工作。
它也可以用於https和mp4嗎? – 2013-05-02 14:21:50
@AdilMalik:對不起,我不知道。我從來沒有試過。上面的代碼非常獨立,您需要做的就是創建一個Android項目並將上面的代碼複製/粘貼到它中,然後嘗試。 – Squonk 2013-05-02 19:39:40
我不確定您的具體需求是什麼,但對於靜態文件,您可能會嘗試將Amazon S3和CloudFront相結合,我相信它支持RTSP。
嗨,歡迎回復。這個主題看起來非常有趣,但它並不是我正在尋找的東西。我希望開發服務器,以便它可以在家庭聯網的計算機上進行惡意安裝。 – user673090 2011-04-05 23:26:07
使用Netty開發RTSP流媒體服務器是相當直接的任務,不需要太多時間。我自己寫了它,它像魅力一樣工作。你可以看看使用Netty框架開始的一些其他服務器的示例實現。
- 1. 用於Window和Linux的開源音頻流媒體服務器?
- 2. 流媒體到Adobe媒體服務器
- 3. 流媒體音頻不適用於Android
- 4. Microsoft媒體流媒體服務 - 我可以將其用於自適應流媒體嗎?
- 5. 流媒體視頻達爾文流媒體服務器問題
- 6. 開源Web服務/ WCF媒體流
- 7. 開發適用於Windows Phone 8的媒體播放器
- 8. 流媒體服務器的備份
- 9. 適用於Android/iPhone應用程序的廣告媒體 - 服務器端
- 10. 音樂流媒體服務
- 11. WCF流媒體服務
- 12. 達爾文流媒體服務器 - 自適應比特率?
- 13. 設置Flash流媒體服務器
- 14. 音頻流媒體到服務器
- 15. 處理流媒體服務器
- 16. DIY:視頻流媒體服務器
- 17. iPhone HTTP流媒體服務器組件
- 18. 通過amzon服務器流媒體
- 19. Flash媒體服務器(FMS)流錄製
- 20. 爲Spotify構建流媒體服務器
- 21. 視頻流媒體服務器軟件
- 22. Ios流到Wowza媒體服務器
- 23. 無法從MJPEG流媒體服務器
- 24. 流媒體服務器和主機
- 25. Android媒體播放器流媒體
- 26. 開源的Mac視頻流媒體服務器解決方案?
- 27. 亞馬遜雲媒體服務器流媒體幫助
- 28. 閃存媒體服務器流媒體:內容保護
- 29. 從Azure媒體服務發佈媒體
- 30. 從Android相機到服務器的流媒體直播視頻
@ user673090:我不明白這句話......「這立即給我制定了一個使用RTSP的服務器的限制條件」......爲什麼你不得不使用RTSP?我可以在IIS中創建一個虛擬目錄,指向我的PC上的音樂文件夾,並通過Wi-Fi連接使用HTTP將不超過幾行代碼流mp3文件傳輸到我的Android設備。好吧,我並不是說這就是你稱之爲「健壯」的AV服務器解決方案,但它肯定不需要RTSP。詳細說明您爲什麼需要RTSP以及它與Android有什麼關係。 – Squonk 2011-04-05 23:50:27
嗨,感謝您的回覆。我真的一直在苦於RTSP轉移到Android。這個結論已經被繪製並且與Android相關的原因是,如果RTP要通過傳輸協議使用,則必須使用RTSP。現在我意識到HTTP也可以用於流(逐步),這很快成爲一個更好的選擇。您能否詳細說明您如何以及如何通過HTTP將音樂流式傳輸至手機。謝謝。 – user673090 2011-04-06 00:07:11
@ user673090:好的,我理解RTP和RTSP之間的關係,但我仍不明白什麼會讓您認爲流式傳輸到Android設備將需要RTP。給我10分鐘,我會張貼一些代碼來演示我的HTTP示例。 – Squonk 2011-04-06 00:18:52