2011-10-12 12 views
6

मेरे पास एक ऐप है जिसे मैं आईओएस और एंड्रॉइड दोनों के लिए लिख रहा हूं। मेरे पास एक सामग्री पृष्ठ है जिसके साथ मुझे UIWebView/WebView में .mp4 वीडियो को लिंक/प्ले करने की आवश्यकता है। वीडियो को ऐप में शामिल किया जा रहा है ताकि यह ऑफ़लाइन काम कर सके।एक वेबव्यू में एक ऐप स्थानीय वीडियो (.mp4) बजाना

आईओएस के साथ मैं बस (एक परियोजना फाइल करने के लिए स्रोत के साथ) एक वीडियो टैग इस्तेमाल किया और फिर NSNotifications इस्तेमाल किया पूर्णस्क्रीन और परिदृश्य के लिए वीडियो (एप्लिकेशन सामान्य रूप से पोर्ट्रेट मोड में चलता है)। काम हो गया।

एंड्रॉयड पर मैं कुछ समस्याएं आ रही हैं।

सबसे पहले, जब आप वीडियो पोस्टर के रूप में स्थानीय छवि का उपयोग करते हैं तो यह ऐप को दुर्घटनाग्रस्त कर देता है (स्पष्ट रूप से एक ज्ञात बग - रिमोट छवि का उपयोग करके समस्या हल होती है - हालांकि ऑफ़लाइन मोड के लिए बहुत मदद नहीं होती है)।

दूसरा यह नहीं खेलता है। मैंने एक दूरस्थ और स्थानीय फ़ाइल दोनों की कोशिश की है (फ़ाइल के रूप में संदर्भित: ///android_asset/html/video.mp4)।

मैं Android ब्राउज़र से .mp4 परीक्षण किया है और यह ठीक खेलता है तो मुझे पता है कि वीडियो ठीक है।

मैं बजाय एक वीडियो के साथ लिंक का उपयोग कर एक अलग कील कोशिश की है। मैं इस लिंक से एक उदाहरण पाया (देखने के लिए गूगल कैश का उपयोग करना पड़): http://webcache.googleusercontent.com/search?q=cache:EVz7nwc8718J:www.codelark.com/2010/05/12/android-viewing-video-from-embedded-webview/+http://www.codelark.com/2010/05/12/android-viewing-video-from-embedded-webview/&cd=1&hl=en&ct=clnk&gl=uk

मेरे कोड इस प्रकार है:

webengine = (WebView) findViewById(R.id.webview); 
webengine.getSettings().setJavaScriptEnabled(true); 
webengine.getSettings().setPluginsEnabled(true); 
webengine.getSettings().setAllowFileAccess(true); 
webengine.setDownloadListener(new DownloadListener() 
{ 
    public void onDownloadStart(String url, String userAgent, String contentDisposition, String mimeType, long size) 
    { 
     Intent viewIntent = new Intent(Intent.ACTION_VIEW); 
     viewIntent.setDataAndType(Uri.parse(url), mimeType);  
    try 
    { 
     startActivity(viewIntent); 
    } 
    catch (ActivityNotFoundException ex) 
    { 
     Log.w("sta", "Couldn't find activity to view mimetype: " + mimeType); 
    } 
} 

}); 
webengine.loadUrl("file:///android_asset/html/index.html"); 
एक दूरस्थ वीडियो लिंक यह एंड्रॉयड ब्राउज़र को खोलने और उसके बाद की कोशिश करता है के साथ

ऐप पर वापस बेल्स। एक स्थानीय वीडियो लिंक के साथ यह खिलाड़ी लोड करने के लिए प्रकट होता है, लेकिन मैं मिल "वीडियो नहीं चला सकता - क्षमा करें, यह वीडियो नहीं चलाया जा सकता है"

यह मेरा logcat लॉग है:

I/ActivityManager( 168): Starting: Intent { act=android.intent.action.VIEW dat=file:///android_asset/html/standrewsanimation.mp4 typ=video/mp4 cmp=com.cooliris.media/.MovieView } from pid 4299 
W/ActivityManager( 168): Trying to launch com.cooliris.media/.MovieView 
I/WindowManager( 168): Setting rotation to 1, animFlags=1 
I/ActivityManager( 168): Config changed: { scale=1.0 imsi=234/20 loc=en_GB touch=3 keys=1/1/2 nav=1/1 orien=2 layout=18 uiMode=17 seq=40} 
D/PhoneApp( 301): updateProximitySensorMode: lock already released. 
I/ApplicationPackageManager(3982): cscCountry is not German : H3G 
D/MovieView(3982): onCreate 
I/MovieView(3982): registerBroadcastRecievers 
D/MovieViewControl(3982): getFilePathByUri URI : file:///android_asset/html/standrewsanimation.mp4 
D/MovieViewControl(3982): getFilePathByUri path from DB - Path : null 
D/MovieViewControl(3982): getFilePathByUri path from uri - Path : /android_asset/html/standrewsanimation.mp4 
D/MovieViewControl(3982): checkDRMContent() path : /android_asset/html/standrewsanimation.mp4 URI : file:///android_asset/html/standrewsanimation.mp4 
W/System.err(3982): java.io.FileNotFoundException: File is not present 
W/System.err(3982): at android.drm.mobile2.OMADRMManager.IsDrmFileByExt(OMADRMManager.java:1032) 
W/System.err(3982): at com.cooliris.media.VideoDRMUtil.checkIsOMADrm(VideoDRMUtil.java:169) 
W/System.err(3982): at com.cooliris.media.MovieViewControl.checkDRMContent(MovieViewControl.java:236) 
W/System.err(3982): at com.cooliris.media.MovieViewControl.<init>(MovieViewControl.java:168) 
W/System.err(3982): at com.cooliris.media.MovieView$1.<init>(MovieView.java:68) 
W/System.err(3982): at com.cooliris.media.MovieView.onCreate(MovieView.java:68) 
W/System.err(3982): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
W/System.err(3982): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615) 
W/System.err(3982): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667) 
W/System.err(3982): at android.app.ActivityThread.access$1500(ActivityThread.java:117) 
W/System.err(3982): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935) 
W/System.err(3982): at android.os.Handler.dispatchMessage(Handler.java:99) 
W/System.err(3982): at android.os.Looper.loop(Looper.java:123) 
W/System.err(3982): at android.app.ActivityThread.main(ActivityThread.java:3687) 
W/System.err(3982): at java.lang.reflect.Method.invokeNative(Native Method) 
W/System.err(3982): at java.lang.reflect.Method.invoke(Method.java:507) 
W/System.err(3982): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) 
W/System.err(3982): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:625) 
W/System.err(3982): at dalvik.system.NativeStart.main(Native Method) 
I/VideoView(3982): start() 
D/MovieView(3982): onStart 
D/MovieView(3982): onResume 
D/MovieViewControl(3982): onResume() 
D/VideoView(3982): onMeasure() 
I/VideoView(3982):  Setting size: 480x320 
D/VideoView(3982): onMeasure() 
I/VideoView(3982):  Setting size: 480x320 
V/AudioPolicyManager( 95): stopOutput() output 1, stream 1, session 301 
V/AudioPolicyManager( 95): getNewDevice() selected device 0 
V/AudioPolicyManager( 95): getNewDevice() selected device 0 
V/AudioPolicyManager( 95): setOutputDevice() output 1 device 0 delayMs 150 
V/AudioPolicyManager( 95): setOutputDevice() setting same device 0 or null device for output 1 
I/ActivityManager( 168): Displayed com.cooliris.media/.MovieView: +287ms 
V/PVPlayer( 95): PVPlayer constructor 
V/PVPlayer( 95): construct PlayerDriver 
V/PlayerDriver( 95): constructor 
V/PlayerDriver( 95): OpenCore hardware module loaded 
V/PlayerDriver( 95): start player thread 
V/PlayerDriver( 95): startPlayerThread 
V/PlayerDriver( 95): InitializeForThread 
V/PlayerDriver( 95): OMX_MasterInit 
V/PlayerDriver( 95): OsclScheduler::Init 
V/PlayerDriver( 95): CreatePlayer 
V/PlayerDriver( 95): AddToScheduler 
V/PlayerDriver( 95): PendForExec 
V/PlayerDriver( 95): OsclActiveScheduler::Current 
V/PlayerDriver( 95): StartScheduler 
V/PVPlayer( 95): send PLAYER_SETUP 
V/PlayerDriver( 95): Send player code: 2 
V/PlayerDriver( 95): CommandCompleted 
V/PlayerDriver( 95): Completed command PLAYER_SETUP status=PVMFSuccess 
V/PVPlayer( 95): setDataSource(/android_asset/html/standrewsanimation.mp4) 
V/PVPlayer( 95): setVideoSurface(0x5dbb8) 
V/PVPlayer( 95): setVideoSurface(0x5f1d0) 
V/PVPlayer( 95): prepareAsync 
V/PVPlayer( 95): data source = /android_asset/html/standrewsanimation.mp4 
V/PlayerDriver( 95): Send player code: 3 
V/PlayerDriver( 95): handleSetDataSource 
V/PlayerDriver( 95): handleSetDataSource- scanning for extension 
V/PlayerDriver( 95): HandleInformationalEvent: PVMFInfoErrorHandlingStart 
V/PlayerDriver( 95): HandleInformationalEvent: type=26 UNHANDLED 
W/MediaPlayer(3982): info/warning (1, 26) 
V/PlayerDriver( 95): CommandCompleted 
V/PlayerDriver( 95): Completed command PLAYER_SET_DATA_SOURCE status=PVMFErrNotSupported 
E/PlayerDriver( 95): Command PLAYER_SET_DATA_SOURCE completed with an error or info PVMFErrNotSupported 
E/MediaPlayer(3982): error (1, -4) 
V/PVPlayer( 95): run_init s=-2147483648, cancelled=0 
V/PlayerDriver( 95): HandleInformationalEvent: PVMFInfoErrorHandlingComplete 
W/PlayerDriver( 95): PVMFInfoErrorHandlingComplete 
I/PowerManagerService( 168): Ulight 3->3|12 
I/MediaPlayer(3982): Info (1,26) 
E/MediaPlayer(3982): Error (1,-4) 
D/VideoView(3982): Error: 1,-4 
D/VideoView(3982): onMeasure() 
I/VideoView(3982):  Setting size: 480x320 
D/VideoView(3982): onMeasure() 
I/VideoView(3982):  Setting size: 480x320 

मैं भी कोशिश की है उपरोक्त दृष्टिकोण में चाहिएऑवरराइडउर्ल लोडिंग जिसमें एक ही परिणाम है।

धन्यवाद

उत्तर

1

मैं इसी तरह की समस्या में फंस गया था। Finalyl मैं "वीडियो" एचटीएमएल 5 टैग

  • का उपयोग कर रहे एंड्रॉयड ओएस में कुछ ऐसा है जो संपत्ति से वीडियो खोलने रोकने है द्वारा काम कर बात मिल गया। मुझे एसडीकार्ड में एचटीएमएल और वीडियो कॉपी करना पड़ा। फिर आप संपत्ति पथ के बजाय sdcard पथ का उपयोग कर सकते हैं।
  • न एंड्रॉयड उपयोग करने के लिए भूल जाते हैं: अपने वेबव्यू गतिविधि के लिए hardwareAcceletrated = "true"
+1

एंड्रॉयड: hardwareAcceletrated = "true" अब वेबव्यू में avalible एक दिन नहीं है ... मैं एक ही समस्या में वीडियो खेलने के लिए हो रहा है संपत्ति फ़ोल्डर से वेब दृश्य –

संबंधित मुद्दे