Unable to play video from server url in VideoPlayer : Flutter
This address use http
, if this link support https
, you can directly use https
To use with http
and
to deal with Cleartext HTTP traffic to site not permitted
You can edit android\app\src\main\AndroidManifest.xml
and add android:usesCleartextTraffic="true"
code snippet
<application
android:name="yourName"
android:label="yourLable"
android:usesCleartextTraffic="true"
Qutbuddin Bohra
Updated on December 22, 2022Comments
-
Qutbuddin Bohra over 1 year
I unable to play video from my server using Video Player lib of flutter When i try to
flutter
video is working fine and played, but if i play my server sideurl
video show me error and black screen. So kindly please help me to short out this query.code is
import 'package:audioplayers/audioplayers.dart'; import 'package:flutter/material.dart'; import 'package:video_player/video_player.dart'; class MyVideoPlayerPage extends StatefulWidget { String myvideo; MyVideoPlayerPage({this.myvideo}); @override _MyVideoPlayerPageState createState() => _MyVideoPlayerPageState(myvideo); } class _MyVideoPlayerPageState extends State<MyVideoPlayerPage> { String myvideo; _MyVideoPlayerPageState(this.myvideo); VideoPlayerController _controller; Future<void> _initializeVideoPlayerFuture; @override void initState() { // TODO: implement initState super.initState(); _controller = VideoPlayerController.network( //'http://ochapchap.com/public/propertyImage/1594746367.VID-20200713-WA0001.mp4' // 'http://techslides.com/demos/sample-videos/small.mp4', 'https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4' ); _initializeVideoPlayerFuture = _controller.initialize(); _controller.setLooping(true); _controller.setVolume(1); } @override void dispose() { _controller.dispose(); super.dispose(); } @override Widget build(BuildContext context) { return Scaffold( appBar: AppBar( title: Text("Video"), ), body: FutureBuilder( future: _initializeVideoPlayerFuture, builder: (context, snapshot) { if (snapshot.connectionState == ConnectionState.done) { // not wrapped in an AspectRatio widget return VideoPlayer(_controller); } else { return Center(child: CircularProgressIndicator()); } }, ), floatingActionButton: FloatingActionButton( onPressed: () { print(myvideo); setState(() { if (_controller.value.isPlaying) { _controller.pause(); } else { _controller.play(); } }); }, child: Icon( _controller.value.isPlaying ? Icons.pause : Icons.play_arrow, ), ), ); } }
but when i put this flutter dev video plays like charm. link is
https://flutter.github.io/assets-for-api-docs/assets/videos/butterfly.mp4
and my server link which does not play ishttp://ochapchap.com/public/propertyImage/1594746367.VID-20200713-WA0001.mp4
and error shown me on my link is
E/ExoPlayerImplInternal: Source error com.google.android.exoplayer2.upstream.HttpDataSource$HttpDataSourceException: Unable to connect at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:282) at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:956) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919) Caused by: java.io.IOException: Cleartext HTTP traffic to ochapchap.com not permitted at com.android.okhttp.HttpHandler$CleartextURLFilter.checkURLPermitted(HttpHandler.java:124) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.execute(HttpURLConnectionImpl.java:462) at com.android.okhttp.internal.huc.HttpURLConnectionImpl.connect(HttpURLConnectionImpl.java:131) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:550) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.makeConnection(DefaultHttpDataSource.java:454) at com.google.android.exoplayer2.upstream.DefaultHttpDataSource.open(DefaultHttpDataSource.java:280) at com.google.android.exoplayer2.upstream.StatsDataSource.open(StatsDataSource.java:83) at com.google.android.exoplayer2.source.ProgressiveMediaPeriod$ExtractingLoadable.load(ProgressiveMediaPeriod.java:956) at com.google.android.exoplayer2.upstream.Loader$LoadTask.run(Loader.java:391) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) at java.lang.Thread.run(Thread.java:919)
-
Aakash kondhalkar over 2 yearsperfect solution, thanks !!