无法在视频视图android中播放视频表单网址

问题描述 投票:0回答:1

我正在尝试从自己的本地服务器在视频视图中播放视频。我给它服务器的URL。

http://admin:[email protected]:8732/cam4/ERecordings/4_UNIVIEW_192.168.1.13/01-07-2020/14-39-23.mp4

我可以在任何浏览器中访问此链接并播放视频,但我的应用无法播放。

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

       final VideoView videoView = findViewById(R.id.videoplayer);
        MediaController mediaController = new MediaController(this);
        mediaController.setAnchorView(videoView);
        final ProgressDialog progressDialog = new ProgressDialog(this);
        progressDialog.setMessage("Buffering please wait!!");
        progressDialog.show();
       // Uri uri = Uri.parse("https://archive.org/download/ksnn_compilation_master_the_internet/ksnn_compilation_master_the_internet_512kb.mp4");
        Uri uri = Uri.parse("http://admin:[email protected]:8732/cam4/ERecordings/4_UNIVIEW_192.168.1.13/01-07-2020/14-39-23.mp4");
        videoView.setMediaController(mediaController);
        videoView.setVideoURI(uri);
        //videoView.setVideoPath("http://playready.directtaps.net/smoothstreaming/ISMAAACHE/Taxi3_AACHE.mp4");
        videoView.requestFocus();
        videoView.start();
        try{
            videoView.setOnPreparedListener(new MediaPlayer.OnPreparedListener() {
                @Override
                public void onPrepared(MediaPlayer mp) {
                    progressDialog.dismiss();
                }
            });
        }
        catch (Exception e){
            Toast.makeText(this,"can not play ", Toast.LENGTH_SHORT).show();
        }

    }

}

权限:为了测试,我已授予该应用程序的所有许可。

<uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
    <uses-permission android:name="android.permission.WAKE_LOCK" />
    <uses-permission android:name="android.permission.CHANGE_WIFI_MULTICAST_STATE" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
    <uses-permission android:name="android.permission.CAMERA" />
    <uses-permission android:name="android.permission.RECORD_AUDIO" />
    <uses-permission android:name="android.permission.FLASHLIGHT" />
    <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>

错误:

W/MediaPlayer: Couldn't open http://admin:[email protected]:8732/cam4/ERecordings/4_UNIVIEW_192.168.1.13/01-07-2020/14-39-23.mp4: java.io.FileNotFoundException: No content provider: http://admin:[email protected]:8732/cam4/ERecordings/4_UNIVIEW_192.168.1.13/01-07-2020/14-39-23.mp4

即使在移动设备中,我也可以从任何浏览器访问它。甚至Vlc和Mx播放器android应用程序都可以播放。如果我要放置任何私有服务器地址,那么它就可以正常运行。我在同一个wifi网络上。

更新:我在我的android清单中添加了权限android:usesCleartextTraffic =“ true”,但现在出现错误

E/MediaPlayerNative: error (1, -2147483648)
E/MediaPlayer: Error (1,-2147483648)
D/VideoView: Error: 1,-2147483648

更新2:-我将视频文件放在IIS服务器中,这次它可以正常工作。但是在我的主程序中,我正在使用apache服务器。之前我使用的是Libvlc android集成,它能够播放视频,但videoview android无法播放相同的URL。以下网址正常工作。

String url = "http://192.168.0.4/a1.ts";
java android video android-videoview
1个回答
0
投票

尝试一下,它将为您服务,

try {
        val link = "https://www.radiantmediaplayer.com/media/bbb-360p.mp4"
        val videoView = findViewById(R.id.videoview) as VideoView
        val mediaController = MediaController(this)
        mediaController.setAnchorView(videoView)
        val progressDialog = ProgressDialog(this)
        progressDialog.setMessage("Loading video please wait!!!")
        progressDialog.show()
        val video = Uri.parse(link)
        videoView.setMediaController(mediaController)
        videoView.setVideoURI(video)
        videoView.requestFocus();
        videoView.start()
        try {
            videoView.setOnPreparedListener(object : MediaPlayer.OnPreparedListener {
                override fun onPrepared(mp: MediaPlayer) {
                    progressDialog.dismiss()
                }
            })
        } catch (e: Exception) {
            Toast.makeText(this, "can not play ", Toast.LENGTH_SHORT).show()
        }


    } catch (e: Exception) {
        Toast.makeText(this, "Error loading video", Toast.LENGTH_SHORT).show()
    }

AndroidManifest.xml.file中的权限

<uses-permission android:name="android.permission.INTERNET" /> 
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.