微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 Flutter 从 IP 地址流式传输实时视频?

如何解决如何使用 Flutter 从 IP 地址流式传输实时视频?

我正在探索现有的 Flutter 包来播放视频文件Flutter 视频播放器示例和 Chewie 包的示例可以很好地播放来自 Internet 地址的视频文件。但是,我正在尝试从我的计算机网络摄像头流式传输数据,为此,我遵循了一个示例来流式传输 RaspBerry 相机视频,该视频使用 VLC 的视频流包 https://www.youtube.com/watch?v=tPcuBo5QAW4

我在 Linux 笔记本电脑和浏览器 (http://192.168.2.19:8081) 上发出“运动”命令,我可以看到网络摄像头视频。现在我尝试使用与视频中相同的示例,但是,我看不到任何流媒体视频。可以找到安装此命令的说明here。以下是我的代码

import 'package:Flutter/material.dart';
import 'package:Flutter_vlc_player/vlc_player.dart';
import 'package:Flutter_vlc_player/vlc_player_controller.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,title: 'Flutter Demo',theme: ThemeData(
        primarySwatch: Colors.blue,),home: MyHomePage(title: 'WebCam Stream'),);
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key,this.title}) : super(key: key);

  final String title;

  @override
  _MyHomePageState createState() => _MyHomePageState();
}

class _MyHomePageState extends State<MyHomePage> {
  String _streamUrl;
  VlcPlayerController _vlcViewController;

  @override
  void initState() {
    // Todo: implement initState
    super.initState();
    _vlcViewController = new VlcPlayerController();
  }

  void _incrementCounter() {
    setState(() {
      _streamUrl = (_streamUrl != null) ? null : 'http://192.168.2.19:8081';
    });
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text(widget.title),body: SingleChildScrollView(
        child: Center(
          child: Column(
            mainAxisAlignment: MainAxisAlignment.center,mainAxisSize: MainAxisSize.min,children: <Widget>[
              _streamUrl == null
                  ? Container(
                      child: Center(
                        child: RichText(
                          text: TextSpan(children: [
                            TextSpan(
                              text: 'Stream Closed',style: TextStyle(
                                  fontSize: 14.0,fontWeight: FontWeight.bold,color: Colors.white,background: Paint()..color = Colors.red),)
                          ]),)
                  : Expanded(
                      child: new VlcPlayer(
                        defaultHeight: 480,defaultWidth: 640,url: _streamUrl,controller: _vlcViewController,placeholder: Container(
                          width: 640,height: 480,)
            ],floatingActionButton: FloatingActionButton(
        onpressed: _incrementCounter,tooltip: 'Increment',child: Icon(_streamUrl == null ? Icons.play_arrow : Icons.pause),// This trailing comma makes auto-formatting nicer for build methods.
    );
  }
}

请帮我解决这个问题。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。