13

**HI I am trying to play a live news video in my flutter app it is .m3u8 format but get above error. Using all of the updated dependencies. I want to play live news in my flutter app. I have the url you can also try it. URL: http://161.97.162.167:1936/live/tnnnews/playlist.m3u8 When I use another url with .m3u8 it plays on flutter app but when I paste the live url code it throws me the above error. **

Code

import 'package:video_player/video_player.dart';
import 'package:flutter/material.dart';


class VideoApp extends StatefulWidget {
  @override
  _VideoAppState createState() => _VideoAppState();
}

class _VideoAppState extends State<VideoApp> {
  VideoPlayerController _controller;

  @override
  void initState() {
    super.initState();
    _controller = VideoPlayerController.network(
        'http://161.97.162.167:1936/live/tnnnews/playlist.m3u8')
      ..initialize().then((_) {
        // Ensure the first frame is shown after the video is initialized, even before the play button has been pressed.
        setState(() {});
      });
  }

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Video Demo',
      home: Scaffold(
        body: Center(
          child: _controller.value.isInitialized
              ? AspectRatio(
            aspectRatio: _controller.value.aspectRatio,
            child: VideoPlayer(_controller),
          )
              : Container(),
        ),
        floatingActionButton: FloatingActionButton(
          onPressed: () {
            setState(() {
              _controller.value.isPlaying
                  ? _controller.pause()
                  : _controller.play();
            });
          },
          child: Icon(
            _controller.value.isPlaying ? Icons.pause : Icons.play_arrow,
          ),
        ),
      ),
    );
  }

  @override
  void dispose() {
    super.dispose();
    _controller.dispose();
  }
}
Sanny khan
  • 177
  • 1
  • 1
  • 7

11 Answers11

5

Put this in your AndroidManifest.xml

<application ...
android:usesCleartextTraffic="true"
Jeferson Mota
  • 75
  • 1
  • 3
2

This issue happened with me and after searching I found the issue is in link itself As the library will only work if the extension of your link is .mp4 and if not you have to parse it to contain the .mp4 extension

0

Perform a Flutter clean and run the application .

Ibrahim 7
  • 9
  • 2
0

Hey i got the same error today in 2022/19/8 .Just adding fijkplayer: ^0.10.0 in your project pubsec.yaml file it would work then.

AbirZayn
  • 11
  • 3
0

My AndroidManifest.xml already have this line and it's not working. So, the issue is in link. After link you have to add extension like .mp4 It is working for me.

0

I got this error using an MP4 video stored in the project assets. To solve the problem I decreased the dimensions of the video from 2160x4096 to 1080x2048.

Johan
  • 1
0

For me this solves the problem:

controller = VideoPlayerController.asset(widget.video)
  ..initialize().then((value) {
    setState(() {
      controller.play();
    });
  });
0

I know this is pretty late, but to anyone who is still struggling in 2023 because of this disastrous bug, which you'd probably run into upon changing the videos in your flutter app running on physical devices. Calling the following code (onControllerChange method) can help you get rid of it when you are changing your video (loading next or previous video). You have to dispose and create (initialize) the controller every time you change the video

Future <void> onControllerChange () async {
                    if (_videoPlayerController == null) { //if current controller is null
                      initializeController(); //method to initialize your video controller
                    } else {
                      final oldController = _videoPlayerController;
                      await oldController.dispose();
                      initializeController();
                    }
}

    
late VideoPlayerController _videoPlayerController;
initializeController () {
            _videoPlayerController = VideoPlayerController.network(
                    'your video url')
                  ..initialize().then((_) {
                    setState(() {}); //here you could use Provider or any other state management approach. I use bloc
                  });
}
    

 
Mohammad Khan Awan
  • 164
  • 1
  • 3
  • 8
0

if you have already added android:usesCleartextTraffic="true" in your manifest application tag. just uninstall the build completely and install new one. that fixed in my case.

Asad
  • 1,241
  • 3
  • 19
  • 32
-1

I've done this and it worked for me

  • uninstall the app
  • run flutter clean
  • run flutter pub get
  • run your application again
-2

Video url should be started with https not http.

video_player package doesn't support the video which starts with http.

Muktadir Sony
  • 344
  • 4
  • 9