實踐證明運用CVideoPlayerUtility::OpenUrlL()是可以播放rtsp的流檔案的。主要參考S60_Platform_Video_Example_v2_0_en.zip
把裡面的CVideoPlayerAdapter::InitControllerL方法中的OpenFileL改成OpenUrlL(url),就可以了;
如:
CVideoPlayerUtility *iPlayer = CVideoPlayerUtility::NewL(*this, EMdaPriorityNormal,
EMdaPriorityPreferenceNone, aWs,
aScreenDevice,aWindow,aScreenRect,
aClipRect);
TBuf <128> urlBuf;
urlBuf.Copy(_L("rtsp://stream.zoovision.com/musicvideos/well_make_a_lover_of_you.3gp"));
//TRAPD(unsupported, iPlayer->OpenFileL(iMediaFile->Des()));
HBufC* tmpHBuf = HBufC::NewLC(urlBuf.Length());
TPtr ptr(tmpHBuf->Des());
ptr.Copy(urlBuf);
TRAPD(unsupported, iPlayer->OpenUrlL(tmpHBuf->Des()));
CleanupStack::Pop(tmpHBuf);
如果安裝到真機上還不能播放,可能跟mmp的能力有關,在mmp->option選項裡選擇capability,我選擇了
LocalServices UserEnvironment ReadUserData WriteUserData NetworkServices
或者直接在mmp檔案中加上:
CAPABILITY LocalServices UserEnvironment ReadUserData WriteUserData NetworkServices
打包,簽名,安裝,運行,ok,我在3rd版本的真機上(模擬器沒搞定,可能是網路設定沒設對,不管了)和3rd_fp2版本的模擬器上都正常播放了。
額外話題:今天安裝改項目sis時突然出現“未授予所需的程式接入許可權”,開始以為是認證到期,但簽名其他項目還是好的,左思右想,原來是一開始選擇capability的時候全部都選了,結構可想而知了,當然不行了,修改成以上的capability後,再刪除sdk下該項目相關的檔案,重新編譯,打包,簽名,ok,全部搞定。