패키지, 저장소 및 앱 카테고리 검색

패키지 상세v2.1.0

cast

Chromecast 장치를 탐지하고 연결하는 데 사용할 수 있는 Dart 패키지

30일 다운로드
1.7만
좋아요
94
Pub 점수
80

패키지 설치

flutter pub add cast

패키지 개요

공개 정보를 바탕으로 생성한 선택 가이드입니다.

캐스트 패키지는 플러터 애플리케이션에서 크롬캐스트 장치를 탐지하고 연결할 수 있도록 설계된 Dart 라이브러리입니다. 개발자는 앱에서 오디오, 비디오 및 기타 콘텐츠를 호환되는 크롬캐스트 기기로 스트리밍할 수 있습니다. 이 패키지는 원활한 장치 감지와 미디어 제어를 지원하여 스마트 TV 및 스트리밍 하드웨어와 통합된 미디어 중심 앱을 구축하는 데 이상적입니다. 단순성을 중시해 설계되었으며, 하위 프로토콜에 대한 깊은 지식 없이도 캐스팅 기능을 쉽게 사용할 수 있는 직관적인 API를 제공합니다. eivo.co에서 유지보수되며 커뮤니티 기여를 위해 GitHub에서 이용 가능합니다.

사용 사례

  • Chromecast 장치로 스트리밍 미디어 전송
  • 티비 또는 홈 엔터테인먼트 앱 개발
  • 원격 재생 제어 활성화
  • 스마트 홈 생태계와의 통합
  • 다기기 미디어 경험 만들기

주요 기능

  • 자동 Chromecast 장치 탐지
  • 오디오 및 비디오 캐스팅 지원
  • 간단하고 직관적인 API
  • 플랫폼 간 호환성(플랫폼별 구현 포함)
  • 오픈소스이며 커뮤니티 유지보수

적합한 대상

  • 미디어 앱을 개발하는 개발자
  • 스마트 TV 또는 스트리밍 장치를 대상으로 하는 앱
  • 기기 간 캐스팅이 필요한 프로젝트
  • IoT 또는 홈 오토메이션 통합 작업을 수행하는 팀
  • 다중 화면 경험을 목표로 하는 Flutter 앱

고려 사항

  • 완전한 기능을 위해 Android 및 iOS 플랫폼 설정이 필요합니다
  • Chromecast 호환 장치에 한정
  • 복잡한 미디어 스트림에 대해 추가 구성이 필요할 수 있습니다
  • 외부 네트워크 연결에 의존
  • 비미디어 캐스팅 사용 사례에는 적합하지 않습니다

원본 README

연결된 소스 저장소의 README 원문 스냅샷입니다. 최신 내용은 저장소에서 확인하세요.

Pub Likes Pub Popularity Pub Points

cast

Dart package to discover and connect with Chromecast devices

Installation

Add this to your package's pubspec.yaml file:

dependencies:
  cast: ^2.1.0
iOS

Required iOS 13 minimum. Since iOS 14 a few more steps are required https://developers.google.com/cast/docs/ios_sender/ios_permissions_changes

In ios/Runner/Info.plist add:

<key>NSBonjourServices</key>
<array>
  <string>_googlecast._tcp</string>
  <string>_YOUR_APP_ID._googlecast._tcp</string>
</array>

<key>NSLocalNetworkUsageDescription</key>
<string>${PRODUCT_NAME} uses the local network to discover Cast-enabled devices on your WiFi
network.</string>

Usage

List devices:

Widget build(BuildContext context) {
  return FutureBuilder<List<CastDevice>>(
    future: CastDiscoveryService().search(),
    builder: (context, snapshot) {
      if (snapshot.hasError) {
        return Center(
          child: Text(
            'Error: ${snapshot.error.toString()}',
          ),
        );
      } else if (!snapshot.hasData) {
        return Center(
          child: CircularProgressIndicator(),
        );
      }

      if (snapshot.data!.isEmpty) {
        return Column(
          children: [
            Center(
              child: Text(
                'No Chromecast founded',
              ),
            ),
          ],
        );
      }

      return Column(
        children: snapshot.data!.map((device) {
          return ListTile(
            title: Text(device.name),
            onTap: () {
              _connectToYourApp(context, device);
            },
          );
        }).toList(),
      );
    },
  );
}

Connect to device:

Future<void> _connect(BuildContext context, CastDevice object) async {
  final session = await CastSessionManager().startSession(object);

  session.stateStream.listen((state) {
    if (state == CastSessionState.connected) {
      _sendMessage(session);
    }
  });

  session.messageStream.listen((message) {
    print('receive message: $message');
  });

  session.sendMessage(CastSession.kNamespaceReceiver, {
    'type': 'LAUNCH',
    'appId': 'YouTube', // set the appId of your app here
  });
}

CastSessionManager is used to keep track of all sessions.

Send message:

void _sendMessage(CastSession session) {
  session.sendMessage('urn:x-cast:namespace-of-the-app', {
    'type': 'sample',
  });
}

Except for the launch message, you should wait until the session have a connected state before sending message.

Note

Some informations about the protocol used https://docs.rs/crate/gcast/0.1.5/source/PROTOCOL.md

$ pub global activate protoc_plugin
$ export PATH="$PATH":"$HOME/.pub-cache/bin"
$ protoc -I=./lib/cast_channel --dart_out=./lib/cast_channel ./lib/cast_channel/cast_channel.proto --plugin "pub run protoc_plugin"

Author

카테고리

의존성

의존성 목록 2 개

소스 저장소

이 패키지를 사용하는 프로젝트