android 未从VideoView中的Uri链接播放视频

t9aqgxwy  于 2023-04-04  发布在  Android
关注(0)|答案(1)|浏览(139)

我一直试图在VideoView中播放视频,这似乎是正常工作的情况下,当视频保存在res/raw文件夹中,但当使用视频的URL来获取和播放视频时,它似乎不起作用。我在清单文件中给出了互联网权限:
<uses-permission android:name="android.permission.INTERNET"/>
使用下面的代码:

val tv:TextView=findViewById(R.id.tv)
    val vv:VideoView=findViewById(R.id.vidView)
    var uri= Uri.parse("http://techslides.com/demos/sample-videos/small.mp4")
    //local resource playing
    //var localUri=Uri.parse("android.resource://$packageName/${R.raw.blood_video}")
    var mc=MediaController(this)
    vv.setMediaController(mc)
    vv.setVideoURI(uri)
    vv.requestFocus()
    vv.setOnPreparedListener {
        vv.start()
    }

我不打算
mc.setAnchorView(vv)
因为我看不出它有什么区别(至少在我正在研究的这样一个简单的层面上)
日志目录:

2022-07-05 14:46:06.222 18430-18430/com.example.videoapp W/MediaPlayer: Couldn't open http://techslides.com/...
java.io.FileNotFoundException: No content provider: http://techslides.com/demos/sample-videos/small.mp4
    at android.content.ContentResolver.openTypedAssetFileDescriptor(ContentResolver.java:1673)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1503)
    at android.content.ContentResolver.openAssetFileDescriptor(ContentResolver.java:1420)
    at android.media.MediaPlayer.attemptDataSource(MediaPlayer.java:1104)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1076)
    at android.media.MediaPlayer.setDataSource(MediaPlayer.java:1100)
    at android.widget.VideoView.openVideo(VideoView.java:412)
    at android.widget.VideoView.access$2200(VideoView.java:83)
    at android.widget.VideoView$7.surfaceCreated(VideoView.java:694)
    at android.view.SurfaceView.updateSurface(SurfaceView.java:802)
    at android.view.SurfaceView$2.onPreDraw(SurfaceView.java:171)
    at android.view.ViewTreeObserver.dispatchOnPreDraw(ViewTreeObserver.java:1088)
    at android.view.ViewRootImpl.performTraversals(ViewRootImpl.java:2930)
    at android.view.ViewRootImpl.doTraversal(ViewRootImpl.java:1811)
    at android.view.ViewRootImpl$TraversalRunnable.run(ViewRootImpl.java:7970)
    at android.view.Choreographer$CallbackRecord.run(Choreographer.java:967)
    at android.view.Choreographer.doCallbacks(Choreographer.java:791)
    at android.view.Choreographer.doFrame(Choreographer.java:726)
    at android.view.Choreographer$FrameDisplayEventReceiver.run(Choreographer.java:952)
    at android.os.Handler.handleCallback(Handler.java:883)
    at android.os.Handler.dispatchMessage(Handler.java:100)
    at android.os.Looper.loop(Looper.java:214)
    at android.app.ActivityThread.main(ActivityThread.java:7417)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:492)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:980)

我在android方面没有太多的经验,但我已经检查了所有我能检查的地方,无论我写的是什么,似乎对其他人都有效。

**注意:**已在实际的Android 10设备上测试,而不是AVD。

我正在建设的应用程序的用户将需要点击和播放视频的一些职位,所以,请建议我,如果有另一个/更喜欢的方式来播放视频,因为我能找到的是这一点。

yvt65v4c

yvt65v4c1#

我在Pixel 3a中遇到了同样的问题,并通过在我的AndroidManifest.xml应用程序标签上添加android:usesCleartextTraffic=“true”来解决它。
希望这对你也有效

相关问题