簡體   English   中英

將stagefright和NuPlayer反向移植到Android 2.2

[英]Backport stagefright and NuPlayer to Android 2.2

我的要求是能夠在我的Android應用中播放實時視頻流。 流將通過RTSP / RTP。 我無法控制來源; 並且看起來RTP有效負載不滿足《開發人員指南》中概述的要求視頻編碼建議 具體而言,視頻源似乎違反了以下要求:

對於3GPP和MPEG-4容器,moov原子必須在任何mdat原子之前,但必須在ftyp原子之后

基本上,看起來我們獲得了原始H264數據(未包裝在容器中)。

現在,

  1. 我無法使用Android 2.2 Samsung Galaxy Tab上的MediaPlayer類播放此流。
  2. 但是,我可以在Android 2.3 Samsung Galaxy S上播放它。
  3. 一些第三方應用程序(MX Player)也能夠在2.2 Galaxy Tab上播放相同的流。

在上述情況2和3中,DDMS日志均指出內部使用Stage Fright框架,而在情況1中,則使用PVP(即OpenCore)。 所有這些使我得出以下結論:

  1. OpenCore框架無法播放我的流。
  2. 即使在Android 2.2上,也可以使用Stagefright播放我的視頻流

這使我想到了一個問題:

將stagefright移植到Android 2.2涉及什么?

此外,我在AOSP來源中注意到,較新的NuPlayer現在負責播放RTSP流。 題:

  1. 是否可以將NuPlayer回舊版本的Android(2.2或2.3)?
  2. 如果是這樣,我需要怎么做才能在應用程序中使用它?

我知道我可以檢查源代碼並使用NDK來構建stagefright和NuPlayer(盡管我從未在NDK級別上工作過)。 我不知道我的應用程序如何才能使用此NuPlayer。

我遇到了類似的問題,但是找到了一個解決方案。 您必須修補系統build.prob文件。 請看看我的問題,我也發布了答案。

默認情況下,stagefright在build.prop文件中保持禁用狀態。 您必須啟用它並重新啟動設備。 然后,您可以訪問滿足您需求的stagefright框架。

對於RTSP流,請在您的遠程機器中下載live555MediaServer.exe文件,並將某些媒體文件保留在同一位置。 打開live555MediaServer.exe文件。

使用以下代碼-

private final String RTSP_FILE = "rtsp://<remote machine IP>/<file name>";

mVideoView.setVideoURI(Uri.parse(RTSP_FILE));

暫無
暫無

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

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