1. android vitamio使用不能訪問mms流媒體協議
沒用過vitamio,姑且說下我的看法。你要覺得靠譜就試試,不靠譜就一笑置之好了
看Log顯示是從http請求的頭文件中讀取數據時出的錯
如果你有Chrome瀏覽器(其他瀏覽器有些也可以,但我不熟悉),就打開開發者工具,輸入你要播放的視頻的url,跳轉。如果在瀏覽器中能正常播放,就記下你http請求的頭文件信息,如下圖紅圈中的內容
然後檢查vitamio中有沒有setHttpHeader或setUserAgent之類的方法,把你記下的信息放進去,偽造一個http頭文件再試驗看看能不能在android上播放
2. 手機端ios和android瀏覽器 如何實現mms廣播電台在線音頻播放
從軟體的功能角度來講,Mms分為對話列表,消息列表,簡訊編輯,彩信編輯,簡訊顯示,彩信顯示和配置。
從實現的角度來看,它分為GUI展示層,發送/接收,彩信解析,彩信附件,信息數據等,這些分類對應著源碼中的各種包。
源碼導航
Mms的源碼的位置在於android/packages/apps/Mms
其中Mms/src/com/android/mms裡面都是Mms相關的代碼,而Mms/src/org/w3c/dom裡面是一個類庫,主要用於彩信格式的解析和顯示。這里主要講一下Mms/src/com/android/mms下面的一些包和類的主要用途。
ui---GUI展示層,用於展示對話列表,消息列表,消息編輯頁,彩信附件編輯,彩信展示,播放幻燈片。負責直接與用戶交互。
•ConversationListAdapter.java---對話列表的Adapter用於給顯示層ConversationList綁定數據。
•ConversationListItemData.java---代表對話列表中的每一項的數據結構,裡面含有要在對話列表中展示的信息。
•ConversationList.java------這是對話列表的顯示窗口Activity,它是一個ListActivity,這幾個類都是對話列表的相關類,用於顯示,編輯和管理所有的對話。
•ComposeMessageActivity.java----這個是核心的窗口Activity,編輯信息,顯示一條對話Thread中的所有往來信息。MessageListView會加在其上面,另外,AttachmentEditor也會加在其上面。這個Activity也負責響應外部應用程序,發送SENDTO或SEND等請求Intent,比如外部應用想要發送信息,等就由這個Activity來響應。
•MessageItem.java---代表一個信息的抽象數據,它包含了信息相關的所有內容,比如信息的主題,消息內容,來信地址,附件內容等等。它的所有數據都是公共的內部成員,都可以直接訪問。
•MessageListAdapter.java---用於給消息列表顯示層(由ComposeMessageActivity創建,綁定到MessageListView上)綁定數據。
•MessageListView.java---用於顯示消息列表,繼承自ListView,其生命周期由ComposeMessageActivity來控制,顯示與否也由它來控制。
•MessageListItem.java---是一個布局,用於顯示和控制消息列表中的每一個消息的顯示。
•AttachmentTypeSelectorAdapter.java---用於添加附件件時的一個支持的附件列表,它就是一個菜單。
•AttachmentEditor.java---用於在編輯MMS彩信信息時,顯示已添加的附件,它的生命周期由ComposeMessageActivity來控制,顯示與否也是由ComposeMessageActivity來控制,當有彩信附件時,它就會顯示,否則就被Hide。它是一個布局管理器,管理著下面四個布局,根據附件的類型動態的顯示下面四個View中的某一個。
•AudioAttachmentView.java---在編輯信息器中用於顯示音頻附件,它是繼承自線性布局。並不在代碼中直接使用,而是在布局文件中來當成布局管理器使用。
•ImageAttachmentView.java---在編輯信息器中用於顯示圖片附件,它是繼承自線性布局。並不在代碼中直接使用,而是在布局文件中來當成布局管理器使用。
•SlideshowAttachmentView.java---在編輯信息器中用於顯示幻燈片附件,它是繼承自線性布局。並不在代碼中直接使用,而是在布局文件中來當成布局管理器使用。
•VideoAttachmentView.java---在編輯信息器中用於顯示視頻附件,它是繼承自線性布局。並不在代碼中直接使用,而是在布局文件中來當成布局管理器使用。
•SlideshowActivity.java—用來全屏播放幻燈片,也即幻燈片的展示,因為彩信的創建和播放都是以幻燈片的方式進行的,也即一張一張的,每張上面可以文字,圖片,視頻和音頻,每一張有瀏覽時長。
•SlideshowEditActivity.java---以列表方式管理幻燈片,也即是把所有的幻燈片用列表顯示出來,用戶可添加一頁幻燈片,也可以點擊進入編輯某頁幻燈片,用於創建和編輯幻燈片。
•SlideshowEditor.java---用於編輯某頁幻燈片,比如添加元素,刪除元素和替換元素,這里的元素可以是圖片,視頻,音頻和文字。也可以用於編輯整頁幻燈片,比如刪除某頁幻燈片,調整這頁幻燈片在所有幻燈片中的位置等。它是一個具體操作幻燈片的封裝,SlideEditorActivity創建它並使用它來完成紀燈片的編輯。
•SlideshowPresenter.java---用於展示所有的幻燈片,也就是播放所有的幻燈片。由SlideshowActivity來創建和使用。
•SlideViewInterface.java---定義了一些用於顯示一頁幻燈片中的內容的介面,如設置圖像,設置視頻,設置音頻,播放視頻,播放音頻,暫停,隨機定位等等。附件顯示的View:AudioAttachmentView,ImageAttachmentView,SlideshowAttachmentView和VideoAttachmentView均實現了此介面,這樣AttachmentEditor就可以用統一的介面來控制內容的播放,而不用關心具體的內容是什麼。
•SlideEditorActivity.java---用於編輯某頁幻燈片,比如添加音頻,添加視頻,添加圖像,添加文字等。它只是提供用戶界面,讓用戶來操作各種按扭以達到添加元素,替換元素或是刪除元素。而對具體的幻燈片的操作是通過SlideshowEditor來完成的,它主要負責與用戶交互。
•SlideListItemView.java--- SlideshowEditActivity中列表的每一項的布局管理,繼承自LinearLayout。
•MmsThumbnailPresenter.java---用於在消息列表中,顯示彩信的縮略圖,因為彩信的內容不固定,可能是圖片,可能是音頻,可能是視頻也可能是幻燈片,所以用這個類來處理並顯示彩信的縮略圖。
•MessagingPreferenceActivity.java---Mms的配置信息編輯器,用來編輯和更改配置信息,繼承息PreferenceActivity。它負責與用戶交互,顯示和更改配置。在Mms啟動時,MmsConfig會從SharedPreference中讀出配置信息,在運行時其他的類的配置信息都是從MmsConfig中獲取的,MmsConfig提供了很多Get方法以獲取配置信息。
•Presenter.java---用來展示附件的一個抽象類。
•PresenterFactory.java---工廠方法。
•RecipientsAdapter.java
•RecipientsEditor.java---用於顯示信息編輯頁面上面的收信人的編輯框,它可以有自動補全的功能,補全的數據由RecipientsAdapter來提供。
•ViewInterface.java---代表一個View的基類,用於Slideshow顯示內容或是取縮略圖。可以取View的長寬高等。
•BasicSlideEditorView.java---編輯某一頁幻燈片時所用的布局,也就是在SlideEditorActivity.java中使用。
•EditSlideDurationActivity.java---顧名思義,用於編輯某一頁幻燈片的瀏覽時長。
•ManageSimMessages.java---這個是在設置中使用的,用來管理SIM里的消息。在設置中有一項是管理SIM卡上面的消息。在Mms的設置Settings中有一個選項可以設置是把信息存儲在SIM卡,還是存儲在手機里。在收信時SmsReceiverService會查看這個設置然後把收到的信息寫到相應的地址。ManageSimMessages也是以列表方式顯示SIM裡面的信息,提供了二個菜單:把信息存入手機和刪除。
•NumberPickerButton.java---用於顯示選擇數字的按扭,在配置裡面用。
•NumberPickerDialog.java---用於顯示選擇數字的對話框,在配置裡面用。
•NumberPicker.java---用於在配置的時候選擇數字。這幾個NumerPicker主要是用於Settings中的。
•DeliveryReportActivity.java---信息發送情況報告。以列表的方式來顯示
•DeliveryReportAdapter.java---相應的Adapter
•DeliveryReportItem.java---相應的數據,每一項的數據
•DeliveryReportListItem.java---相應每一項的布局。
data---用於操作當前正在編輯的信息的相關數據,比如聯系人列表,比如當前對話,比如當前消息。負責管理當前正在編輯的信息和當前所處的對話以及當前信息用到的聯系人。這些類都是在編輯信息的時候使用,由於這些多半都是用來管理數據的,而又無法直接做為對象傳遞給編輯器。所以它們的很多方法都是靜態的,也就是這些類都近似單鍵。
•WorkingMessage.java---用來管理當前正在編輯的消息,它從創建,草稿到發送完成後一直存在,只要打開了編輯信息的頁面就會創建一個WorkingMessage,直到退出編輯頁面。
•Conversation.java---用來管理對話Threads,通常用來管理當前的對話,也就是進入的對話和正在進行操作的對話,它也用來管理對話列表,比如查詢對話列表。
•Contact.java---用來代表一個聯系人的信息,和管理聯系人,載入聯系人信息,其中還有相應的Cache。因為一個聯系人的數據是比較多的包含名字,名,姓,各種電話號碼,各種地址等等。因為Mms中直接使用Contact來作為聯系人,所有信息都是直接從其中獲取。另外,由於信息交互中也會涉及到聯系人,因為收發信時可以直接使用一串電話號碼,這時就需要有如添加聯系人的功能。Contact中有很多非同步的操作,比如載入聯系人信息的時候或者更新Cache的時候都需要非同步操作以不阻塞調用者。
•ContactList.java---是一個Contact的List列表它繼承自ArrayList<Contact>。用來管理一個Contact列表,或管理多個Contact。因為每個信息可以發送給多個聯系人,這時就需要用到ContactList來管理這些收信人。也提供了一些方便存儲和傳遞Contact的方法,比如把多個Contact轉成String,或者轉成String數組等。
•RecipientIdCache.java---用於保存所用到的Contact的Id和地址(電話)。每次WorkingMessage會更新這個Cache,然後ContactList會優先從這個Cache中查詢聯絡人。
dom---用於解析彩信內容smil的工具包
drm---用於處理DRM的媒體文件的工具包
layout---為了滿足特殊需要而改寫的布局元素
model---這裡面定義了彩信支持的附件數據結構和附件的組織方式。彩信可包含的內容有圖片,視頻,音頻和文字。這些內容可以單獨存在,也可以組合在一起。如果組合在一起就變成了幻燈片。用戶可以用幻燈片的方式來創建含有多個媒體的附件,圖文並茂的展示。每張幻燈片上面可以加視頻,音頻,圖片和文字,但通常一張幻燈片上面只允許加一個圖片或視頻,文字是都可以添加的,音頻在沒有視頻的情況下只可以添加的。播放的時候可以設置每張幻燈片的播放時長,以及文字的滾動速度等等。
•CarrierContentRestriction.java---是具體的彩信附件檢查站,對於不支持的附件,或者附件大小超出限制,或者圖像解析度不對,或者圖像超出尺寸,會拋出異常:,ResolutionException,ExceedMessageSizeException,ContentRestrictionException。
•ContentRestriction.java是用於檢查附件的介面,外部直接使用這相介面,而具體實現是CarrierContentRestriction
•ContentRestrictionFactory.java是創建附件檢查的工廠方法。外部通過這個工廠來創建一個ContentRestriction對象,然後使用其中定義的檢查方法來進行附件內部檢查。
•SmilHelper.java用於解析和處理附件中的Smil的工具類。
•IModelChangedObserver.java介面,用於監聽附件內容有變化。
•Model.java---彩信附件的數據組織方式和管理方式是每一個附件都是一個Model的子類,它不但用於管理附件的具體數據,比如Uri,大小,文件名,位置等,也可以用於在GUI顯示附件和查看附件。
•LayoutModel.java---繼承自Model用於管理可視的附件的布局的類。它用來管理RegionModel等的基本元素。它就好比ViewGroup或LinearLayout,RelativeLayout等一些布局管理器,用來組織並管理布局基本元素也就是RegionModel的子類ImageModel,TextModel和VideoModel。
•RegionModel.java---繼承自Model用於管理可視附件和布局,比如圖像,視頻和文字。特別是在顯示可視附件的時候,用於控制可視附件在屏幕中的位置。一個RegionModel代表著一張幻燈片上的一塊區域,它是幻燈片上的布局基本元素。好比UI元素中的View,但多在使用時都是使用它的子類,也就是ImageModel,TextModel和VideoModel。
•RegionMediaModel.java---繼承自MediaModel,是用於多媒體附件中的可視部分的布局控制,主要用在附件的顯示和播放幻燈片時的控制。它的子類是ImageModel,TextModel和VideoModel。
•MediaModel.java---繼承自Model,代表媒體的數據結構,管理具體的附件數據,同時也用於管理附件的顯示控制,比如圖像的顯示,音頻和視頻的播放控制等。
•MediaModelFactory.java---用於從一個P附件中解析出來MediaModel,也就是把P轉化為Mms內部的附件數據。
•ImageModel.java—繼承自RegionMediaModel用於管理圖像附件和控制圖像附件的顯示。
•VideoModel.java---繼承自RegionMediaModel用於管理視頻附件和控制視頻附件的播放。
•AudioModel.java----繼承自MediaModel用於管理音頻附件和控制音頻附件的播放
•SlideModel.java----繼承自Model用於管理一組附件,這些附件同一次顯示給用戶。就好像幻燈片的一片一樣,每一個SlideModel裡面有一個可以存儲Model的列表,可以包含文字,音頻,圖像或視頻,其上面的附件同時顯示出來。
•SlideshowModel.java---繼承自Model,用於管理一個彩信中的所有附件。其內含有一個存儲SlideModel的列表,用於保存和控制一條彩信中的所有附件。另外它也負責顯示這些附件,把一個個SlideModel組織起來,播放。它也負責著把這些Mms形式的附件(各種Model)轉化為Android的附件P,和從P提出各自Model,因為Slideshow是應用程序層的彩信處理方式,而能發送和接收的彩信數據是P。
•TextModel.java---繼承自RegionMediaModel用於管理文字附件和控制文字附件的顯示,比如按時間來滾動
util---這裡面是整個Mms共享的工具類,其中全部都是單鍵或是直接使用類,不可以創建對象和以對象方式來使用
•AddressUtils.java---關於地址的工具類,目前只有一個getFrom()方法,用於獲取發信人地址。
•DraftCache.java---用於標識哪些對話Thread有Draft,哪些沒有,也就是用於管理和查詢對話的草稿狀態,有草稿還是沒有。它裡面維護了一個HashSet,裡麵包含了所有含有草稿的Thread Id。它裡面也有一個HashSet用於存儲OnDraftChangedListener,即當Thread的Draft狀態有變化時,DraftCache會調用相應的Listener以告知相應模塊,這個對話的草稿狀態有所變化。可以通過DraftCache.setDraftState(threadId, state)來設置某個對話的草稿狀態; 可以通過DraftCache.hasDraft(threadId)來查詢某個對話是否含有草稿。
•Recycler.java---是一個抽象的工具類,裡面定義了SmsRecycler和MmsRecycler,用於刪除陳舊的消息,或者刪除超過信息數量限制的信息。使用方法都是Recycler.getSmsRecycler.deleteOldMessages(context) 或者Recycler.getMmsRecycler.deleteOldMessages(context)
•SmileyParser.java---把標點式的表情符號轉化為圖形的表情,比如把用圖標笑臉來代替。
•DownloadManager.java---不要被名字騙到,它並不是真正意義上的下載管理器,因為它並不負責任何與下載文件過程或下載文件的管理。它是用於管理與下載相關的配置信息,比如是否是自動下載,以及下載過程的各種通知,比如Notification Bar和Toast提示等。
•RateController.java
•SendingProgressTokenManager.java
transaction---對於Mms來講是最底層的一個包,用戶不可見,它負責發信息的最後處理和收信息的最初處理。主要是負責發送信息和接收信息。它並不是真正的發送和接收信息。是由系統Frameworks裡面來負責接收和發送信息。這個包只是對於Mms應用層來講是發送和接收。
•AbstractRetryScheme.java
•DefaultRetryScheme.java—這二個類是實現一種Retry機制,因為信息的發送與接收會受到環境的限制,比如現在手機沒信號,或是網路連接不成功,那麼就會把信息放到Pending隊列裡面,等一段時間再重新嘗試發送與接收。這里的二個類就是為了實現此Retry機制。
•HttpUtils.java—彩信發送與接收的最底層實現者,它負責用HTTP協議接收和發送彩信到MMSC彩信服務中心。
•MessageSender.java—像其名字所預示的那樣,它是為了發送信息而封裝的一個介面,它裡面只有一個方法sendMessage(),UI層只需要調用實現了這個介面的類即可發送信息。
•MessagingNotification.java—專門負責在Status Bar上面做Notification,比如新接收到了信息,或是信息發送失敗,或是接收失敗等。它被UI層,和底邏輯層共用著。
•MmsMessageSender.java—繼承自MessageSender,專門用於發送彩信。它並不是做發送的事情,而是做一些錯誤檢查和前期准備工作,然後啟動TransactionService來做發送相關的事情。
•NotificationTransaction.java—繼承自Transaction,負責接收彩信和更新通知(Notification)。當有一個新彩信時,Frameworks會先發出一個簡訊,稱作彩信通知(NotificationIndication),其內含有彩信相關的信息(MMSC, 彩信的ContentLocation(URL)等),之後是由應用程序自己去MMSC用ContentLocation取彩信。這個NotificationTransaction就是專門用於處理彩信通知的,它會從MMSC上取出彩信數據(P),把它寫入資料庫中,然後更新Notification。需要注意的是,只有彩信的設置是自動獲取(「auto retrieve」)時,它才會去下載彩信,否則,它只處理彩信通知(Notification Indication),而不去下載彩信。
•Observable.java—裡面定義了觀察對象,Transaction是它的一個子類,其他的實體Transaction都是觀察對象,裡面有一個列表保存著觀察者的引用,當一個Transaction完成時,或是有異常時就會調用notifyObservers()方法來把狀態通知給觀察者。
•Observer.java—觀察者,TransactionService實現了這個介面。它是所有Transaction的觀察者,以監聽他們的狀態和處理結果,因為所有的Transaction都 是非同步的,所以才用觀察模式來通知Transaction的處理結果。
•PrivilegedSmsReceiver.java—繼承自SmsReceiver簡訊收信的事件監聽者,負責監聽新簡訊事件android.provider.Telephony.Intents.SMS_RECEIVED_ACTION(「android.provider.Telephony.SMS_RECEIVED」);當接收到這個Intent時表明有一個新簡訊。它會喚起SmsReceiverServier來處理簡訊。
•ProgressCallbackEntity.java
•PushReceiver.java—一個BroadcastReceiver專門用於接收彩信事件android.provider.Telephony.WAP_PUSH_RECEIVED_ACTION(「android.provider.Telephony.WAP_PUSH_RECEIVED」),它會先做一些預處理,然後啟動TransactionService,TransactionService又會創建NotificationTransaction來處理這個彩信通知。
•ReadRecTransaction.java
•RetrieveTransaction.java—繼承自Transaction,用於主動獲取彩信數據。當彩信設置為非自動獲取時,需要用戶觸發獲取,TransactionService會創建一個RetrieveTransaction來獲取彩信數據(P),存入資料庫,更新Notification等。
•RetryScheler.java
•SendTransaction.java—繼承自Transaction,用於發送彩信數據。
•SimFullReceiver.java
•SmsMessageSender.java—發送簡訊的封裝,繼承自MessageSender。它會啟動SmsReceiverService來發送。
•SmsReceiver.java—是一個BroadcastReceiver,不要被其名字唬到,它並不負責接收新簡訊通知,相反,它用於發送信息,接收發送信息請求,並喚起SmsReceiverService來處理發送。這里可能是Android命名規則的原因,Android里的四大組件都喜歡把其組件的名字加上,比如ComposeMessageActivity,是一個Activity,TransactionService是一個Service,而這里SmsReceiver是一個BroadcastReceiver,它與接收簡訊(receiving Sms)沒有關系。當然了,這完全是一個糟糕的命名。
•SmsReceiverService.java—它是一個Service,專門用於處理簡訊的發送與接收。它是由SmsReceiver和PrivilegedSmsReceiver監聽事件,然後啟動它的,自己並不會監聽Intent事件。
•SmsRejectedReceiver.java
•SmsSingleRecipientSender.java—繼承自SmsMessageSender,它針對一個收信人,調用Frameworks層介面發送信息,對於Mms應用來說,這是發送簡訊的最後一站,對就是說對於應用來說,它會把簡訊發送出去。
•TransactionBundle.java—Transaction所用的一個數據結構,用於給Transaction傳送數據。
•Transaction.java—各種Transaction的基類,它裡面定義了二個方法getP(),sendP()這二個方法是從MMSC取彩信數據,和向MMSC發送數據。它是對HttpUtils的一層包裝。
•TransactionService.java—是一個Service,接收各種Transaction請求,然後處理Transaction。每個Transaction都 會開啟新的線程非同步的處理,所以當處理完成時又會通過Observer來通知TransactionService。
•TransactionSettings.java—彩信相關配置信息的數據結構,比如MMSC,Proxy,Port等。請求方可能會提供這些數據,如果提供就使用;否則就會從Telephony資料庫載入默認的數據,這些數據與運營商和APN的設置有關。
•TransactionState.java—標識每一個Transaction處理情況的數據結構,很簡單,只是標明處理成功還是失敗,用於Transaction回調Observer(TransactionService)時用。
還有com/android/mms根目錄下面的一些文件,其中絕大多數是定義的基類異常和一些公共的類。
•MmsApp.java---Mms Application會在應用進程啟動的時候做一些必要的初始化工作,比如配置,下載,聯系人,對話,Smiley解析器和通知等。
•MmsConfig.java---管理Mms的一些常用配置,比如彩信大小上限,彩信圖片尺寸上限,收信人的個數上限等等。這些配置信息是保存在在res/xml/mms_config.xml裡面。MmsApp在初始化時會調用MmsConfig.init(),在這裡面會調用loadMmsSettings來解析mms_config.xml從而得到所需要的配置信息。其他的模塊只通過MmsConfig來訪問這些配置信息。
•LogTag.java---有關日誌跟蹤信息的控制。它可以方便的控制日誌輸出級別。但是實際上整個Mms代碼中使用這個LogTag的地方並不多。
3. android中怎麼獲取播放的流媒體的格式
Android手機收聽mms格式流媒體電台的方法 [i=s] 本帖最後由 eth7 於 2010-1-10 21:21 編輯 [/i] 入手HTC Hero之後一直在尋找Android平台下可以收聽mms格式流媒體電台的軟體,國內和港台的中文電台多數是這種格式的。
4. mms是什麼mms可以干什麼mms在哪裡出現根網站有關的嗎流媒體是什麼
MMS為Multimedia Messaging Service的縮寫,中文譯為多媒體簡訊服務。中國移動公司把它定名為「彩信」,可以用於傳送文字、圖片、動畫、音頻和視頻等多媒體信息。
MMS是Multimedia Message Service的簡稱,中文名為多媒體信息服務。MMS的工業標準是由兩個組織,WAP Forum(WAP論壇)和3GPP(3G Partnership Project:3G夥伴計劃)所制訂的。因此,MMS是設計成可以在WAP協議的上層運行,它不局限於傳輸格式,既支持電路交換數據格式(circuit-switched data),也支持通用分組無線服務GPRS格式(general packet radio service)。其工作原理為利用高速傳輸技術EDGE(Enhanced Data rates for GSM Erolution是一種提高數據速率的新技術,是GSM向第三代移動通信系統IMT-2000過渡的台階。它也被稱為"GSM 384",因為這種技術能使數據速率由目前的9.6kbit/s提高到384kbit/s,這種速率可以支持語音、網際網路瀏覽、電子郵件、會議電視等多種高速數據業務)和GPRS的支持下,以WAP(無線應用協議)為載體傳送視頻、圖片、聲音和文字。
5. 為什麼我不能下載MMS協議的流媒體
MMS協議是一種流媒體傳輸協議
WINDOWS
MEDIA
PLAYER就支持在線播放這個格式的文件
較低版本的FLASHGET是不支持MMS
RSTP等格式文件下載的
將MMS改成HTTP(hyper
text
transfer
protocol)超文本傳輸協議
連接還是能建立,但是由於流媒體的一大特點是文件傳輸過程中需要緩沖,而HTTP協議下是不支持的,於是就會下下來多個同名的文件
所以要想下載MMS格式的文件
下載工具很重要
自己想到以前的一些經驗在這里說一說
希望對你有幫助
6. 內網如何建立mms媒體流,手機如何打開mms媒體流
ADSL的IP是非固定類IP地址,會常常有變動,這個你核實過嗎?也就是說,除了那家公司,另外別的公網用戶可以用這個地址看嗎?一定要同時判定:即當你轉播時,除了公司內網不能看,其他用戶可以看嗎?第二,這個不能看的內網,是否做了相關限制;我們以前內網就封掉了所有流媒體協議
7. 求一個在安卓上支持MMS流媒體的播放器
MXPlayer就支持網路視頻啊!非常好的播放器,可以秒殺所有播放器 ,但看到你說的是內網,內網需要手機與網路連通啊,可以通過WIFI接入到內網
8. android開發Vitamio是否可以錄制視頻
android上,視頻/音頻流直播是極少有人關注的一部分。每當我們討論流媒體,RTMP(Real Time Messaging Protocol)是不可或缺的。RTMP是一個基本的視頻/音頻直播流協議,但是不幸的是Android標準的VideoView不支持RTMP的播放。因此,如果想在android上播放RTMP直播流,你必須使用支持RTMP協議的庫。在本教程中我們將討論如何通過使用安卓的 [Vitamio] 庫播放由 RTMP 協議傳輸的流媒體。
Android Vitamio 庫
Vitamio是一個android和ios上基於FFmpeg的開源項目。Vitamio為我們提供了一個清潔、簡單、全面、真實的硬體加速解碼器和渲染器API,Vitamio是一個支持多種音視頻格式 如 FLV, TS/TP, WMV, DivX, Xvid等多種標准格式的非常強大的庫。所不同的是,它也支持類似.mkv和.srt嵌入和外掛字幕播放。但是它帶有一個許可證,因此在使用它之前請先獲得認證。在這個android RTMP例子中,我們不僅討論RTMP直播流,而且也會討論m3u8流(HLS),RTSP流和 MMS (Microsoft Media Stream)。首先讓在我們的項目中引用Vitamio庫。
在Android Studio中引用Vitamio庫的步驟如下:
1.下載Vitamio bundle
2.解壓並且在Android Studio上File->Import Mole
3.指定到VitamioBundle路徑,選擇vitamio文件夾 點擊完成
4.在build.gradle(Mole: app)依賴部分添加依賴項目(『:vitamio』)
5.打開build.gradle (Mole: vitamio) – 改變最小sdk版本為7
6.不要忘記在manifest.xml中添加internet許可權
7.完成!
Android RTMP流
在講述如何使用之前,讓我們先了解下RTMP。Real Time Messaging Protocol (RTMP)是一個Adobe Systems所擁有的一個協議。該協議是Adobe公司擁有的開發音視頻流的flash player。後來該協議的部分被公開,供公眾使用。更多請查看這里.這個協議大多用於IPTV和實時視頻點播流,但它也用於其他領用。
在android上,標準的VideoView不支持RTMP播放。但WebView可以播放RTMP流。這解決了播放RTMP流的問題,但是我認為web apps 不能提供一個很好的界面和體驗。因此這這個android RTMP例子中我們將運用第三方庫-Vitamio 直播RTMP流的流媒體。在工程中引用Vitamio之後,請在你的layout文件添加Vitamio的VideoView:
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >
<io.vov.vitamio.widget.VideoView android:id="@+id/vitamio_videoView"
android:layout_width="wrap_content"
android:layout_height="wrap_content" />
</LinearLayout>123456789101112
另外請編寫你的activity如下:
MainActivity.java
package com.truiton.rtmpplayer; import android.net.Uri; import android.os.Bundle; import android.support.v7.app.ActionBarActivity; import java.util.HashMap; import io.vov.vitamio.LibsChecker; import io.vov.vitamio.MediaPlayer; import io.vov.vitamio.widget.MediaController; import io.vov.vitamio.widget.VideoView; public class MainActivity extends ActionBarActivity {
private static final String TAG = "MainActivity"; private String path; //private HashMap<String, String> options;
private VideoView mVideoView; @Override
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (!LibsChecker.checkVitamioLibs(this)) return;
setContentView(R.layout.activity_main);
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "rtmp://rrbalancer.broadcast.tneg.de:1935/pw/ruk/ruk"; /*options = new HashMap<>();
options.put("rtmp_playpath", "");
options.put("rtmp_swfurl", "");
options.put("rtmp_live", "1");
options.put("rtmp_pageurl", "");*/
mVideoView.setVideoPath(path); //mVideoView.setVideoURI(Uri.parse(path), options);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});
}
}041424344454647
雖然上面代碼很清晰明了,但需要指出的是請修改你播放RTMP流的路徑。在android上,有時可能使用帶報頭路徑來播放RTMP流。幸運的是,Vitamio RTMP播放器也支持這種方式。因此,所有類型的RTMP流可以使用Vitamio庫。上面的例子會是這個樣子:
Android Vitamio 直播視頻播放功能的實現
Android RTSP流媒體
實時流協議(RTSP)通過多媒體伺服器傳輸內容,例如YouTube使用RTSP流發布內容。關於RTSP流比較容易的部分是,它可以通過android標準的VideoView來完成,想了解更多,請參考我的VideoView例子。
但是如果你使用Vitamio庫,可以更好的播放RTSP流。事實上Vitamio也支持RTSP流的回播。和上面過程是一樣的,包括Vitamio的VideoView在布局文件,並使用路徑變數指定的RTSP url
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "rtsp://wowzaec2demo.streamlock.net/vod/mp4:BigBuckBunny_115k.mov";
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});12345678910111213
Android m3u8 流媒體
「如何在android上播放m3u8視頻」是android開發者最常見的問題之一。通過Http 協議進行視頻流直播最簡單的辦法就是使用標準的 VideoView. 但只能在android3.0以上的設備上播放m3u8流。因為在Android 3.0引入HTTP/ HTTPS直播和HTTP/ HTTPS漸進式流媒體協議,在android3.1完全支持HTTPS。
如果你希望在早期的版本上實現支持android m3u8流的HTTP實時流媒體 (HLS)。應該考慮使用Vitamio庫,這個庫支持在android API7以上播放m3u8。使用方式,同樣的在布局文件中使用Vitamio的VideoView,並指定的HTTP實時流媒體URL。
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "http://93.184.221.133/00573D/236/236-0.m3u8";
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});12345678910111213
Playing m3u8 stream on Android with Vitamio would look something like this:
在androi上使用Vitamio播放m3u8流效果如下:
Android Vitamio 直播視頻播放功能的實現
Android MMS 流
Vitamio庫是一個強大的庫,還支持Microsoft媒體伺服器(MMS)流中的播放。 MMS是網路流媒體協議,主要用於網路廣播和電台直播。使用Vitamio用於在anroid的MMS流和其他協議沒有什麼不同。所有你需要做的只是更換路徑變數指向一個MMS url:
mVideoView = (VideoView) findViewById(R.id.vitamio_videoView);
path = "mms://beotelmedia.beotel.net/studiob";
mVideoView.setVideoPath(path);
mVideoView.setMediaController(new MediaController(this));
mVideoView.requestFocus();
mVideoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() { @Override
public void onPrepared(MediaPlayer mediaPlayer) {
mediaPlayer.setPlaybackSpeed(1.0f);
}
});123456789101112
結論
通過上面的討論,可以確定地說,Vitamio是一個強大的多平台庫(ios and android)。通過使用Vitamio庫 能播放多種類型的視頻格式和協議如RTMP, RTSP, HTTP Live, and HTTP漸進式流協議。另外一個很好的功能是,vitamio支持字幕和多音軌的播放。Vitamio的唯一的缺點是,它不是完全的開源。
閱讀全文
9. android流媒體開發有開源庫嗎
開源的沒有 不開源好用的倒是有一個,叫:
Vitamio
用過,很好使。
http://www.cnblogs.com/over140/archive/2012/08/31/2665299.html
---------------------------------------------------------
是一款Android與iOS平台上的全能多媒體開發框架
項目地址:https://github.com/yixia/VitamioBundle
網站介紹:http://www.vitamio.org/docs/
特點:(1) 全面支持硬體解碼與GPU渲染
(2) 能夠流暢播放720P甚至1080P高清MKV,FLV,MP4,MOV,TS,RMVB等常見格式的視頻
(3) 在Android與iOS上跨平台支持 MMS, RTSP, RTMP, HLS(m3u8)等常見的多種視頻流媒體協議,包括點播與直播。
10. mms流媒體的真實地址怎樣獲得
MMS:是微軟的流媒體協議。是在網路上傳輸的地址,不一定是上傳後獲得的原始地址。通常只能在線播放,聽說用Moles
Downloader
可以捕捉mms流媒體的真實地址。也不知道是不是這樣,你有興趣可以試試。