搜索插件、代码仓与 APP 分类

插件详情v0.1.0

yoyo_player

yoyo_player 是一个视频播放器,允许您通过选择画质来选择 HLS 视频流

近 30 天下载
49
喜欢数
125
Pub 分数
40

安装插件

flutter pub add yoyo_player

插件介绍

基于插件公开信息、社区数据与项目使用情况整理的选型参考。

yoyo_player 是一个专为 HLS(HTTP 实时流)播放设计的 Flutter 视频播放器包,支持动态画质选择。它允许用户在播放过程中切换不同的视频画质级别,根据网络状况提升流媒体体验。该包以简洁和高性能为目标,可无缝集成到 Flutter 应用中。支持自适应流媒体,并提供简洁的 API 来管理播放控制和画质设置。非常适合需要灵活视频分发的多媒体应用。

适合场景

  • 流式视频质量切换
  • Flutter 应用中的自适应视频播放
  • 使用 HLS 的实时视频流
  • 按需视频,支持多种分辨率
  • 构建具有用户质量控制的媒体播放器

主要特点

  • HLS 流媒体支持
  • 动态质量选择
  • 与 Flutter 的简单集成
  • 自适应码率处理
  • 简洁且极简的 API 设计

适合对象

  • 媒体应用
  • 按需视频平台
  • 直播流应用
  • 教育内容传递
  • 需要响应式视频播放的应用程序

使用建议

  • 需要HLS兼容的视频源
  • 仅限iOS和Android(无网页/桌面支持)
  • 无内置 UI 组件
  • 依赖外部HLS流的可用性
  • 可能需要为自定义播放逻辑进行额外配置

原始 README

以下为关联源码仓库的 README 原文快照,最新内容请访问源码仓库。

KoHtut

YoYo Video Player

YoYo Video Player is a HLS(.m3u8) video player for flutter. The video_player is a video player that allows you to select HLS video streaming by selecting the quality. YoYo Player wraps video_player under the hood and provides base architecture for developers to create their own set of UI and functionalities.

Pub Version (including pre-releases)

Features

  • You can select multiple quality and open
  • On video tap play/pause, mute/unmute, or perform any action on video.
  • Auto hide controls.
  • (.m3u8) HLS Video Streaming Support

Install & Set up

  1. Add dependency, open the root directory pubspec.yamlFile independencies:Add the following code below
yoyo_player: #latest
  1. Installation dependencies (please ignore if it has been installed automatically)
 cd Project directory
 flutter packages get
  1. Introduce the library in the page
import 'package:yoyo_player/yoyo_player.dart';

Usage

A simple usage example:

  YoYoPlayer(
          aspectRatio: 16 / 9,
          url:  "",
          videoStyle: VideoStyle(),
          videoLoadingStyle: VideoLoadingStyle(),
  ),

Change Icon

 videoStyle: VideoStyle(
    play : Icon(Icons.play_arrow),
    pause : Icon(Icons.pause),
    fullscreen : Icon(Icon(Icons.fullscreen)),
    forward : Icon(Icons.skip_next),
    backward : Icon(Icons.skip_previous),
 )

Change Video Loading

   videoLoadingStyle: VideoLoadingStyle(loading : Center(child: Text("Loading video")),

Play With Subtitle

        body: YoYoPlayer(
          aspectRatio: 16 / 9,
          //url ( .m3u8 video streaming link )
          //example ( url :"https://sfux-ext.sfux.info/hls/chapter/105/1588724110/1588724110.m3u8" )
          //example ( url :"https://player.vimeo.com/external/440218055.m3u8?s=7ec886b4db9c3a52e0e7f5f917ba7287685ef67f&oauth2_token_id=1360367101" )
          url:  " ",
          videoStyle: VideoStyle(),
          videoLoadingStyle: VideoLoadingStyle(
            loading: Center(
              child: Text("Loading video"),
            ),
          ),
        ),

Player Option

Player

Attributes Type Description
url String Video source ( .m3u8 & File only)
videoStyle VideoStyle Video Player style
videoLoadingStyle VideoLoadingStyle Video Loading Style
aspectRatio double Video AspectRaitio [aspectRatio : 16 / 9 ]
onfullscreen VideoCallback video state fullscreen
openingvideo VideoCallback video type ( eg : mkv,mp4,hls)

Player custom style (VideoStyle)

Attributes Type Description
play Widget You can use any Widget you want
pause Widget You can use any Widget you want
fullscreen Widget You can use any Widget you want
forward Widget You can use any Widget you want
backward Widget You can use any Widget you want
playedColor Color You can use any Icon style you want
qualitystyle TextStyle You can use any Text style you want
qashowstyle TextStyle You can use any Text style you want

Player Loading custom style (VideoStyle)

Attributes Type Description
loading Widget You can use any loading style you want

How is it created ?

  • The data in the source url (m3u8) is regex checked and the child m3u8 files are created and saved according to the respective rules.
  • It starts creating child m3u8 files as soon as the video starts playing
  • Each time a video is completed or the main url changes, child m3u8 files are checked and deleted.

The child m3u8 files are created as follows:

  • If viedo quality yoyo[vido-quality].m3u8

  • If video quality & audio quality yoyo[video-quality][audio-quality].m3u8

Support M3U8

  • #EXT-X-MEDIA
  • #EXT-X-STREAM-INF(not for ios)

Player Screenshot

Contributors

  • Min Si Thu
  • Ko Htut

MIT License

Copyright (c) 2020 Ko Htut (Ko Min Than Htut)

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

所属分类

依赖

依赖清单 7 项

源码仓库

使用此插件的项目

暂无相关数据。