如何使用 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 (将#修改为@)