Flutter Native Player for Flutter

A Flutter plugin for Android, iOS for playing back video on a Widget surface.

20220406_163756

Installation

Copy and paste to dependencies:

flutter_native_player: ^1.0.6

Note: iOS requires 9.0 or higher and Android requires SDK 16 or higher

Example:

import 'package:flutter/material.dart';
import 'package:flutter_native_player/flutter_native_player.dart';
import 'package:flutter_native_player/model/player_resource.dart';
import 'package:flutter_native_player/model/player_subtitle_resource.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatefulWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  State<MyApp> createState() => _MyAppState();
}

class _MyAppState extends State<MyApp> {

  String videoUrl = "https://p-events-delivery.akamaized.net/2109isftrwvmiekgrjkbbhxhfbkxjkoj/m3u8/vod_index.m3u8";
 final playerSubtitleResource = [
    PlayerSubtitleResource(
      language: "English",
      subtitleUrl: "https://raw.githubusercontent.com/Pisey-Nguon/Player-Resource/master/%5BEnglish%5D%20Apple%20Event%20%E2%80%94%20October%2013%20%5BDownSub.com%5D.srt",
      ),
  PlayerSubtitleResource(
      language: "Japanese",
      subtitleUrl: "https://raw.githubusercontent.com/Pisey-Nguon/Player-Resource/master/%5BJapanese%5D%20Apple%20Event%20%E2%80%94%20October%2013%20%5BDownSub.com%5D.srt",
      )
  ];

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        appBar: AppBar(
          title: const Text('Flutter Native Player'),
      ),
      body: Center(
          child: FlutterNativePlayer(
                  playerResource: PlayerResource(videoUrl: videoUrl, playerSubtitleResource: playerSubtitleResource),
			      playWhenReady: true,
			      width: double.infinity,
			      height: 250
			      ),
		      ),
	      ),
      );
  }
}

Configuration:

  1. playWhenReady if it's true it's going to play immediately after fetching data success but if it's false that after fetching data success it's not played.
  2. playerSubtitleResource if null or empty list it's going to hide subtitle button.

Supported Formats

  • For Android, the backing player is ExoPlayer, please refer here for list of supported formats.
  • For iOS, the backing player is AVPlayer. The supported formats vary depending on the version of iOS, AVURLAsset class has audiovisualTypes that you can query for supported av formats.

Libraries

custom_controller/material/progress_bar/audio_video_progress_bar
constant
method_manager/download_state
hls/hls_parser/drm_init_data
model/duration_state
hls/hls_parser/exception
hls/fetch_hls_master_playlist
flutter_native_getx_controller
flutter_native_player
hls/hls_parser/format
hls/hls_parser/hls_master_playlist
hls/hls_parser/hls_media_playlist
hls/hls_parser/hls_playlist_parser
hls/hls_parser/hls_track_metadata_entry
hls/hls_parser/metadata
hls/hls_parser/mime_types
model/playback_speed
method_manager/playback_state
custom_controller/material/dialog/player_clickable_widget
custom_controller/player_overlay/player_controller
hls/player_kid_data_holder
hls/player_kid_hls_utils
subtitles/player_kid_subtitle
subtitles/player_kid_subtitle_segment
subtitles/player_kid_subtitles_configuration
subtitles/player_kid_subtitles_drawer
subtitles/player_kid_subtitles_factory
subtitles/player_kid_subtitles_source
subtitles/player_kid_subtitles_source_type
hls/player_kid_track
hls/player_kid_utils
custom_controller/player_overlay/player_loading
custom_controller/material/dialog/player_material_bottom_sheet
method_manager/player_method_manager
custom_controller/player_overlay/player_overlay_controller
custom_controller/material/dialog/player_pin_header_widget
custom_controller/configuration/player_progress_colors
model/player_resource
model/player_subtitle_resource
custom_controller/player_overlay/player_widget
hls/hls_parser/playlist
model/quality_model
hls/hls_parser/rendition
hls/hls_parser/scheme_data
hls/hls_parser/segment
utils/time_utils
hls/hls_parser/util
hls/hls_parser/variant
hls/hls_parser/variant_info