vivo videos studio reproductor reproducir poner para fuente fondo como codigo android video webview android-webview mp4

videos - reproductor de video para android codigo fuente



Reproducción de un video local de la aplicación(.mp4) en una vista web (1)

Tengo una aplicación que estoy escribiendo para iOS y Android. Tengo una página de contenido con la que necesito vincular / reproducir un video .mp4 en UIWebView / WebView. El video se incluirá en la aplicación para que pueda funcionar sin conexión.

Con iOS, acabo de utilizar una etiqueta de video (con fuente en un archivo de proyecto) y luego utilicé NSNotifications para pantalla completa y ajusto el video (la aplicación normalmente se ejecuta en modo vertical). Trabajo hecho.

En Android tengo algunos problemas.

En primer lugar, cuando usas una imagen local como póster de video, la aplicación se bloquea (aparentemente, un error conocido, el uso de una imagen remota soluciona el problema, aunque no es de mucha ayuda para un modo fuera de línea).

En segundo lugar, no juega. He intentado con un archivo remoto y local (al que se hace referencia como archivo: ///android_asset/html/video.mp4).

He probado el .mp4 desde el navegador de Android y funciona bien, así que sé que el video está bien.

Intenté una táctica diferente usando un enlace a un video. Encontré un ejemplo en el siguiente enlace (tengo que usar el caché de google para verlo): 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

Mi código es el siguiente:

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");

Con un enlace de video remoto, intenta abrir el navegador de Android y luego vuelve a la aplicación. Con un enlace de video local, parece cargar el reproductor, pero me aparece "No se puede reproducir el video. Lo siento, este video no se puede reproducir".

Este es mi log 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

También probé el enfoque anterior en shouldOverrideUrlLoading, que tiene el mismo resultado.

Gracias


Estaba atrapado en un problema similar. Finalyl Lo hice funcionar usando etiqueta HTML5 de "video"

  • Hay algo en el sistema operativo Android que impide abrir el video de los activos. Tuve que copiar el html y el video a la tarjeta SD. Luego puede usar la ruta de la tarjeta SD en lugar de la ruta de los activos.
  • No te olvides de usar android: hardwareAcceletrated = "true" para tu actividad de webview