You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

flutter_vlc_player在macOS播放RTSP报错,求跨平台替代包

关于flutter_vlc_player的macOS支持及替代方案

flutter_vlc_player对macOS的支持情况

flutter_vlc_player目前不支持macOS平台,你遇到的PlatformException(channel-error, Unable to establish connection on channel.)错误,正是因为该包未实现macOS端的平台通道,无法完成Flutter与原生层的通信。

支持macOS和Windows的RTSP Flutter包推荐

1. dart_vlc

纯Dart实现的VLC媒体播放器绑定,原生支持Windows、macOS、Linux,对RTSP流的兼容性良好,无需手动配置原生依赖。

示例代码(替换你的原有实现):

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

class IPCameraScreen extends StatefulWidget {
  final String url;

  const IPCameraScreen({Key? key, required this.url}) : super(key: key);

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

class _IPCameraScreenState extends State<IPCameraScreen> {
  late Player _player;
  late VideoController _videoController;

  @override
  void initState() {
    super.initState();
    DartVLC.initialize();
    _initializePlayer();
  }

  @override
  void dispose() {
    _player.dispose();
    super.dispose();
  }

  void _initializePlayer() {
    _player = Player(id: 0);
    _videoController = VideoController(_player);
    _player.open(
      Media.network('rtsp://192.168.100.208:80/rtsp/streaming?channel=5&subtype=1'),
      autoStart: true,
    );
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('IP Camera Preview'),
      ),
      body: Center(
        child: Column(
          mainAxisAlignment: MainAxisAlignment.center,
          children: <Widget>[
            Video(
              controller: _videoController,
              aspectRatio: 16 / 9,
              placeholder: const Center(child: CircularProgressIndicator()),
            ),
          ],
        ),
      ),
    );
  }
}

2. media_kit

跨平台媒体播放框架,支持全平台(Windows、macOS、Linux、Android、iOS),支持RTSP、RTMP等多种流媒体协议,提供丰富的播放控制和自定义选项。

使用时需在pubspec.yaml中添加对应平台的依赖:

dependencies:
  media_kit: ^1.1.10+1
  media_kit_video: ^1.1.7
  media_kit_native_event_loop: ^1.0.8
  # 平台特定依赖
  media_kit_libs_macos_video: ^1.0.4  # macOS
  media_kit_libs_windows_video: ^1.0.6 # Windows

示例代码片段:

import 'package:flutter/material.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';

class IPCameraScreen extends StatefulWidget {
  final String url;

  const IPCameraScreen({Key? key, required this.url}) : super(key: key);

  @override
  State<IPCameraScreen> createState() => _IPCameraScreenState();
}

class _IPCameraScreenState extends State<IPCameraScreen> {
  late final Player player;
  late final VideoController controller;

  @override
  void initState() {
    super.initState();
    player = Player();
    controller = VideoController(player);
    player.open(Media(widget.url));
  }

  @override
  void dispose() {
    player.dispose();
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: const Text('IP Camera Preview')),
      body: Center(
        child: Video(
          controller: controller,
          aspectRatio: 16/9,
          placeholder: const CircularProgressIndicator(),
        ),
      ),
    );
  }
}

内容的提问来源于stack exchange,提问作者irfan ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 01:43:22