omni_player 0.1.1 copy "omni_player: ^0.1.1" to clipboard
omni_player: ^0.1.1 copied to clipboard

Flutter媒体播放器插件,在Android/iOS上支持视频和音频播放和后台播放。支持MKV、MP4、HLS等.

example/lib/main.dart

import 'dart:async';
import 'package:flutter/foundation.dart';
import 'package:flutter/material.dart';
import 'package:omni_player/omni_player.dart';

void main() => runApp(const MyApp());

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'OmniPlayer Demo',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        colorSchemeSeed: Colors.deepPurple,
        useMaterial3: true,
      ),
      home: const PlayerPage(),
    );
  }
}

class PlayerPage extends StatefulWidget {
  const PlayerPage({super.key});

  @override
  State<PlayerPage> createState() => _PlayerPageState();
}

class _PlayerPageState extends State<PlayerPage> {
  late final OmniPlayer _player;
  final _urlController = TextEditingController();
  final _titleController = TextEditingController(text: '我的视频');

  PlayerState _state = PlayerState.idle;
  Duration _position = Duration.zero;
  Duration _duration = Duration.zero;
  double _buffered = 0.0;
  double _volume = 1.0;
  double _speed = 1.0;
  bool _looping = false;
  bool _isVideo = true;
  VideoSize? _videoSize;
  String? _errorMsg;
  int _positionIntervalMs = 500;
  List<String> _urls=[];
  bool _playlistMode = false;
  int? _playlistIndex;
  bool _isAutoAdvancing = false;

  final List<StreamSubscription> _subs = [];

  // 内置测试地址
  static const _presets = [
    ('MKV 视频', 'https://www.iandevlin.com/html5test/webvtt/upc-tobymansfieldday.mkv', true),
    ('MP4 视频', 'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/3000/L5%20%E6%95%85%E4%BA%8B/002.My%20First%20Things-%E6%88%91%E7%9A%84%E7%AC%AC%E4%B8%80%E6%89%B9%E7%89%A9%E5%93%81/062e7145786e077f83178f6d3b3f3be7.mp4', true),
    ('HLS 直播', 'https://demo.unified-streaming.com/k8s/features/stable/video/tears-of-steel/tears-of-steel.ism/.m3u8', true),
    ('MP3 音频', 'https://www.soundhelix.com/examples/mp3/SoundHelix-Song-1.mp3', false),
  ];

  @override
  void initState() {
    super.initState();
    _urls.addAll([
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/zebra.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/yawn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/yam.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/woof.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/woodchuck.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wonder.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wheelbarrow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/well.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wednesday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wear.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/walrus.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wait.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/valentine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uncle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/twine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tugboat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tuesday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trucker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trick.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toothpaste.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toothbrush.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toaster.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tire.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tickle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thursday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thank.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/taste.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/talk.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tadpole.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sydney.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surprise.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surface.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/superhero.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunglass.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sundae.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/study.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/step.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stave.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/start.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/starfish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/squint.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/squeal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/south.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soak.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snowman.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snout.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snore.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sniff.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sneeze.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slice.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skunk.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skateboard.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sissy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/showboat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shave.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/share.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sense.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/science.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/schoolwork.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/saturday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/santa.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/row.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roll.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rise.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rest.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ray.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rake.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rainstorm.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/raincoat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/radish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/quiz.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/quack.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/princess.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/present.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pour.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/potato.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pot.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pin.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pile.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/piglet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/people.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/peacock.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pay.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/papa.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/panda.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pajama.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/owlet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ostrich.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/old.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/oink.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/octopus.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/north.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/no.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/motorboat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/monday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mitten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mistake.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/miss.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mealworm.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/marshmallow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/marker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mailman.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lunchroom.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lunch.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/loon.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/look.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lick.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lemur.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ladybug.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/koala.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/knife.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/kitty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/kickball.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/kangaroo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/job.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/jellyfish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/jean.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/jasmine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hundred.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/houseboat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hoe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hiss.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hippo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hexagon.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/helper.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hamster.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hairbrush.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gumdrop.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/grub.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/grocer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/grasshopper.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/granny.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gram.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gobi.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/glide.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/giraffe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gill.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fun.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fudge.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fright.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/friday.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/freckle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/foal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flipper.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/firefly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fife.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ferryboat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fawn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fair.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/eyesight.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/eraser.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/eggnog.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/earthworm.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/earflap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dragonfly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dollar.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/daddy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cycle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cutie.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cupcake.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cuddle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/crayfish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/covering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cover.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/corral.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/conjurer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/coat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cleat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/clap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/choice.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/chile.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/children.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cheetah.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cheer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/checkout.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/change.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cattail.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/carter.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/carry.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/caretaker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/canada.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/burrow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/buddy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/brownie.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bottom.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/boom.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/block.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/blackberry.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/birdseed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/basement.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/base.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/banjo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bandanna.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/babysitter.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/aunt.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/applesauce.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/anteater.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/acorn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/zap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/write.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/win.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/weigh.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wake.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/throw.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/think.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/teach.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stare.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/squirt.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slither.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sit.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shelve.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sew.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/serve.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sell.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/see.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/say.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relax.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recycle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/read.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pull.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/protect.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/munch.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/moo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/make.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lug.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/listen.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lighten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/learn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/juggle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/join.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/imagine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hear.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gulp.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/grow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/greet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/giggle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/freeze.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/follow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flatten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fix.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/find.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/explore.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/excite.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/enjoy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/eat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dunk.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/draw.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dig.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/count.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/come.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/collect.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/clothe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/climb.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/choose.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/chew.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/carve.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/buy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/build.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/breathe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/blink.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bend.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/begin.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/beg.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/batter.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bake.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/amaze.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/agree.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/add.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wry.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wretched.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/woven.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/winged.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wide-eyed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/whipped.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/weathered.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/waterproof.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wasteful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wasted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/warring.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wanted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vascular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vain.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uphill.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/untreated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unfit.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unethical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trustworthy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/triangular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tranquil.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tibetan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thyroid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thorny.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/taped.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunken.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sullen.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stranded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stout.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stinging.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steamy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steamed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stagnant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spirited.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/speaking.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soggy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soaked.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/smug.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/silvery.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/silver.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/silky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shrill.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shameful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/segregated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rushing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/run-down.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ruined.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roomy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roasting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/right-hand.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/revolving.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/replete.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relaxing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/regal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reddish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/queer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pungent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pulmonary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/protracted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/prosthetic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/prickly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/postoperative.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/plush.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/placid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/pious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/philippine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/philharmonic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/perilous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/peacekeeping.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/paternal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/paramilitary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/papal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/overcrowded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/oceanic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/nonstick.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/negotiated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/naughty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mounted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mountainous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/moody.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/molten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/melted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/mating.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/masked.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/marching.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/manic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/low-key.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/lighted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/layered.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/khaki.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/joyous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/jolly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/irritating.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/intestinal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/inflated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/impulsive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/impartial.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/immature.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/horrendous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/honored.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hectic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/heartbreaking.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/healthful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/haunted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/hasty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/handwritten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/grizzly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/glaring.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/gilded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/galactic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/furry.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fungal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/full-blown.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fruitful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fractured.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/forbidden.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/foggy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flowering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flickering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/flaming.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/finnish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/feeble.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/fascist.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/exuberant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/estranged.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/erroneous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/enclosed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/elastic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/downhill.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dizzying.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/distraught.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/dishonest.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/disgruntled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/digestive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/desolate.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/deluxe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/delayed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/decreasing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/decreased.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/deafening.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/crumpled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/crimson.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/crazed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/conversational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/connecting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/confrontational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/concealed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/colossal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/climatic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/clear-cut.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/chilean.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/childlike.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/childish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/cautionary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/burnt.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/burned.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/buried.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bumpy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bruised.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/boiled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/blinding.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/bent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/banned.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/aristocratic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/appalled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/anti-american.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/antarctic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/alike.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/alaskan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/airtight.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/agonizing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/agitated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/affectionate.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/adorable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/zoo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/yugoslav.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/youthful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/yogurt.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/year-round.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/yacht.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/written.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wrinkled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wrinkle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wrestling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wreck.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wrap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wounded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worthy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worthless.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worrying.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worried.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/worldwide.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/workforce.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wooded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/winning.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/windy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/windshield.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/winding.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/width.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/widespread.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wicked.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wholesale.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/whistle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/whiskey.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/whip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/well-known.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/welcoming.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/welcome.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/weird.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wedge.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/weary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wealthy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wax.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/watery.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/watershed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/watercolor.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/wartime.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/walnut.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/waitress.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/waiting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vulnerability.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/voyage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/voucher.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/voluntary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/volcano.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/volcanic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/void.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vocational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vocal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vivid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/virtual.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/viral.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/violin.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/villager.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/viking.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vigorous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vietnamese.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/victorious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vibration.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vest.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vertical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/versatile.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/verge.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/velvet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/velocity.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/veil.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vegetation.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vase.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/varied.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vampire.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/valve.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/valid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vague.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/vacant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/useless.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/usage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/urgent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/urgency.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uranium.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/upward.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/upset.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/upscale.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uprising.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/upright.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/upbeat.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/up.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unwilling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unwanted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unsure.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unsuccessful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unstable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unseen.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unsafe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unreasonable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unpopular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unmarried.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unlike.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unjust.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unilateral.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uniformed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unidentified.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unhealthy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unhappy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unfortunate.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unfinished.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unfair.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uneven.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unequal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unemployed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/underwater.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/underlying.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/underground.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/undercover.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unconscious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/uncomfortable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unclear.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unborn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unaware.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unauthorized.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unanimous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/unacceptable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ultraviolet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ukrainian.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ugly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/two-way.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/twisted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/twilight.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turtle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turnover.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turning.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turkish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turf.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turbulent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/turbine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tuna.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trusted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trousers.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/troubling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tropical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/triumphant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/triple.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trio.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tribunal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trendy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trench.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/traveling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/traumatic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/transparent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/translucent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/translator.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trained.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/trademark.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tractor.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tract.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toxic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/towering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/touching.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/torso.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tornado.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/torn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/torch.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tomb.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toddler.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toasted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/toast.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/timid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tiger.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tidy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tidal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thrust.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/throne.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thrilling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thrill.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/three-dimensional.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/threatening.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thoughtful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thirsty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thinker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thesis.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thermal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/therapeutic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/theatrical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thankful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/thai.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tester.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/terrifying.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/terrified.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/terrestrial.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/terrace.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/terminal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tense.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tempting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/temper.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/televised.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/telecommunications.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/teenage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tee.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tedious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/technological.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/taut.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tattoo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tattered.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tasty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tariff.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/targeted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tap.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tangled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/talking.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/taliban.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/takeover.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/taiwanese.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tackle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/tab.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/syrup.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/syrian.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/symbolic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/swollen.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/swiss.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sweep.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/swedish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sweaty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/suspicious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/suspected.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surroundings.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surreal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surplus.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surgical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/surf.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/supportive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/superstar.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/supernatural.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/superiority.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/superficial.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/superb.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunshine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunrise.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunny.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sunglasses.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/suicidal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/succession.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/suburban.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/subscriber.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/subordinate.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/submarine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/subdued.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stylish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sturdy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stunning.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stunned.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stump.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stuffed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stuck.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stubborn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/struggling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/structured.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/structural.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/striped.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stripe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stringent.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stride.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/strict.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stricken.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stressful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stray.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/strained.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stormy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stool.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stolen.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stiff.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sticky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sticker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stew.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stereo.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stellar.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steep.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/steaming.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/statistical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stationary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/static.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stately.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/starving.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/startling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/startled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/staple.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stall.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stale.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/staircase.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stainless.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stained.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/stain.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/staggering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/squirrel.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/squash.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spotted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sporting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spokeswoman.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/split.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/splendid.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/splash.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spirituality.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spinal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spinach.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spike.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spicy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spell.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/speedy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spectacular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/specification.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/specialized.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spatial.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sparse.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sparkling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spare.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spacious.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/spacecraft.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soviet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sovereign.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/southwestern.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/southeastern.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sour.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sorrow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sore.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soothing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/somber.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/solitary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/solidarity.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/solemn.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sober.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/soaring.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/snowy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sneakers.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/smoky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/smoker.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/smoked.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/smiling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sluggish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slower.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sloppy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slogan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slippery.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slim.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sliding.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sliced.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slender.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sleepy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sleeping.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sleek.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/slab.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skinny.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skilled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skepticism.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skeptical.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skeleton.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/skeletal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sizable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sitting.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sitcom.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/siren.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sip.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sinister.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/singular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/singing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/silly.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/signing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/siege.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sideline.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sickness.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shut.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shrub.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shrine.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shredded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/showcase.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shovel.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shout.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shopper.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shooter.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shocking.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shocked.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shipping.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shipment.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shiny.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shining.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shimmering.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shield.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shattered.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shared.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shallow.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shaky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shady.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shadowy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shack.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/shabby.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sexy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sewer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sewage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/severity.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/setback.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/server.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sermon.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sergeant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/serene.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/separated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sentimental.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sensory.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sensational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/selfish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/seismic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/seductive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sedan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/secure.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/secretive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/second-hand.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/seated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/seasoned.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sealed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/seafood.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/screw.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scratch.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scout.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scottish.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scenic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scattered.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scary.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scarlet.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scarf.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/scan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/saw.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/savage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sausage.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/saucepan.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/satisfied.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/satisfactory.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sandy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sampling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/same-sex.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/salty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/salon.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/salient.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sail.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/saddle.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/sacred.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rusty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rustic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/runoff.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rugged.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rude.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rubble.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/royalty.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/royal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rounded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rotten.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rosy.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roster.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roommate.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/romantic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roman.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roller.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rocky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/robust.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/robotic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/robbery.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roasted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roar.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/roadside.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rivalry.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ritual.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rite.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/risky.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rising.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ripe.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/righteous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/ridiculous.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rhythmic.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/revised.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reverse.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reunion.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/retired.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/retarded.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/retail.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/restrictive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/restricted.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/restored.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/restless.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/respiratory.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/respectful.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/respected.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/respectable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/resistant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/residue.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/residential.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reserved.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/resemblance.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/republican.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/repressive.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/repression.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/repertoire.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/repeated.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rented.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/renowned.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/renovation.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/renewal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/renewable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/remnant.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/remainder.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reluctance.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relieved.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reliance.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reliable.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relentless.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relaxed.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/relational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/related.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reinforcement.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reign.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/regret.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/refusal.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/refreshing.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reformer.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reflective.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/refined.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/referendum.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reef.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/reduced.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recycling.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recycled.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/rectangular.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recruitment.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recruit.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recreational.mp4',
    'https://wch-sh.oss-cn-shanghai.aliyuncs.com/resource/pict/recorder.mp4',
    ]);
    _player = OmniPlayer.instance;
    _initPlayer();
  }

  Future<void> _initPlayer() async {
    await _player.initialize();

    _subs.addAll([
      _player.stateStream.listen((s) {
            setState(() {
              _state = s;
              if (s != PlayerState.error) _errorMsg = null;
            });
            if (s == PlayerState.completed && _playlistMode) {
              unawaited(_playNextFromPlaylist());
            }
          }),
      _player.positionStream.listen((p) => setState(() => _position = p)),
      _player.durationStream.listen((d) => setState(() => _duration = d)),
      _player.bufferedStream.listen((b) => setState(() => _buffered = b)),
      _player.videoSizeStream.listen((s) => setState(() => _videoSize = s)),
      _player.errorStream.listen((e) => setState(() => _errorMsg = e)),
      _player.previousTrackStream.listen((_) => _showSnack('⏮ 上一首(通知栏/锁屏触发)')),
      _player.nextTrackStream.listen((_) => _showSnack('⏭ 下一首(通知栏/锁屏触发)')),
    ]);
  }

  // ── 播放 ──────────────────────────────────────────────

  Future<void> _play() async {
    final url = _urlController.text.trim();
    if (url.isEmpty) {
      _showSnack('请输入视频/音频地址');
      return;
    }
    setState(() {
      _playlistMode = false;
      _playlistIndex = null;
    });
    await _openMedia(url: url, title: _titleController.text.trim().isEmpty ? url : _titleController.text.trim());
  }

  Future<void> _openMedia({
    required String url,
    required String title,
  }) async {
    setState(() {
      _errorMsg = null;
      _position = Duration.zero;
      _duration = Duration.zero;
      _buffered = 0.0;
      _videoSize = null;
    });
    final uri = Uri.parse(url);
    final coverPath = uri.path.replaceFirst(RegExp(r'\.mp4$', caseSensitive: false), '.jpg');
    final coverUrl = uri.replace(path: coverPath).toString();
    await _player.open(
      MediaItem(
        url: url,
        title: title,
        isVideo: _isVideo,
        coverUrl:coverUrl,
        artist:"DeepEng",
        album:"DeepEng",
      ),
    );
  }

  String _playlistTitle(String url) {
    final fileName = url.split('/').isNotEmpty ? url.split('/').last : url;
    return fileName.replaceAll('.mp4', '');
  }

  Future<void> _playFromPlaylist({int startIndex = 0}) async {
    if (_urls.isEmpty) {
      _showSnack('播放列表为空');
      return;
    }
    if (startIndex < 0 || startIndex >= _urls.length) {
      _showSnack('播放列表起始下标无效');
      return;
    }

    final url = _urls[startIndex];
    setState(() {
      _playlistMode = true;
      _playlistIndex = startIndex;
      _isVideo = true;
      _urlController.text = url;
      _titleController.text = _playlistTitle(url);
    });
    await _openMedia(url: url, title: _titleController.text.trim());
  }

  Future<void> _playNextFromPlaylist() async {
    if (_isAutoAdvancing || !_playlistMode || _playlistIndex == null) return;
    final nextIndex = _playlistIndex! + 1;
    if (nextIndex >= _urls.length) {
      setState(() {
        _playlistMode = false;
        _playlistIndex = null;
      });
      _showSnack('播放列表已播完');
      return;
    }

    _isAutoAdvancing = true;
    try {
      await _playFromPlaylist(startIndex: nextIndex);
    } finally {
      _isAutoAdvancing = false;
    }
  }

  String _fmt(Duration d) {
    final h = d.inHours;
    final m = d.inMinutes.remainder(60).toString().padLeft(2, '0');
    final s = d.inSeconds.remainder(60).toString().padLeft(2, '0');
    return h > 0 ? '$h:$m:$s' : '$m:$s';
  }

  void _showSnack(String msg) {
    ScaffoldMessenger.of(context)
        .showSnackBar(SnackBar(content: Text(msg), duration: const Duration(seconds: 2)));
  }

  // ── 状态颜色/图标 ──────────────────────────────────────

  Color get _stateColor {
    switch (_state) {
      case PlayerState.playing:
        return Colors.green;
      case PlayerState.loading:
        return Colors.orange;
      case PlayerState.error:
        return Colors.red;
      case PlayerState.completed:
        return Colors.blue;
      default:
        return Colors.grey;
    }
  }

  String get _stateLabel {
    switch (_state) {
      case PlayerState.idle:      return '空闲';
      case PlayerState.loading:   return '加载中...';
      case PlayerState.playing:   return '播放中';
      case PlayerState.paused:    return '已暂停';
      case PlayerState.stopped:   return '已停止';
      case PlayerState.completed: return '播放完成';
      case PlayerState.error:     return '错误';
    }
  }

  @override
  Widget build(BuildContext context) {
    // iOS 使用 PlatformView,不发 textureId,只要 _isVideo 为 true 就显示 VideoWidget
    // Android 使用 Texture,需要等 textureId 到来
    final bool isIOS = defaultTargetPlatform == TargetPlatform.iOS;
    final hasVideo = _isVideo && (isIOS || _player.textureId != null);

    return Scaffold(
      appBar: AppBar(
        title: const Text('OmniPlayer Demo'),
        centerTitle: true,
        backgroundColor: Theme.of(context).colorScheme.inversePrimary,
      ),
      body: SingleChildScrollView(
        padding: const EdgeInsets.all(16),
        child: Column(
          crossAxisAlignment: CrossAxisAlignment.stretch,
          children: [
            // ── 视频区域 ──────────────────────────────────
            _buildVideoArea(hasVideo),
            const SizedBox(height: 12),

            // ── 状态栏 ────────────────────────────────────
            _buildStatusBar(),
            const SizedBox(height: 16),

            // ── 输入框 ────────────────────────────────────
            _buildUrlInput(),
            const SizedBox(height: 8),

            // ── 快速选择 ──────────────────────────────────
            _buildPresetChips(),
            const SizedBox(height: 12),

            // ── 播放类型切换 ──────────────────────────────
            _buildMediaTypeSwitch(),
            const SizedBox(height: 12),

            // ── 进度条 ────────────────────────────────────
            _buildProgressBar(),
            const SizedBox(height: 8),

            // ── 主控制按钮 ────────────────────────────────
            _buildMainControls(),
            const SizedBox(height: 16),

            // ── 音量 / 速度 ───────────────────────────────
            _buildVolumeRow(),
            const SizedBox(height: 8),
            _buildSpeedRow(),
            const SizedBox(height: 8),

            // ── 循环 ──────────────────────────────────────
            SwitchListTile(
              title: const Text('循环播放'),
              value: _looping,
              onChanged: (v) {
                setState(() => _looping = v);
                _player.setLooping(v);
              },
            ),

            // ── 进度回调频率 ───────────────────────────────
            _buildIntervalRow(),

            // ── 错误信息 ──────────────────────────────────
            if (_errorMsg != null)
              Container(
                margin: const EdgeInsets.only(top: 8),
                padding: const EdgeInsets.all(12),
                decoration: BoxDecoration(
                  color: Colors.red.shade50,
                  borderRadius: BorderRadius.circular(8),
                  border: Border.all(color: Colors.red.shade200),
                ),
                child: Row(
                  children: [
                    const Icon(Icons.error_outline, color: Colors.red),
                    const SizedBox(width: 8),
                    Expanded(
                      child: Text(_errorMsg!,
                          style: const TextStyle(color: Colors.red)),
                    ),
                  ],
                ),
              ),
          ],
        ),
      ),
    );
  }

  Widget _buildVideoArea(bool hasVideo) {
    return AspectRatio(
      aspectRatio: _videoSize != null
          ? (_videoSize!.width / _videoSize!.height)
          : 16 / 9,
      child: Container(
        decoration: BoxDecoration(
          color: Colors.black,
          borderRadius: BorderRadius.circular(12),
        ),
        clipBehavior: Clip.antiAlias,
        child: hasVideo
            ? VideoWidget(player: _player)
            : Center(
                child: Column(
                  mainAxisSize: MainAxisSize.min,
                  children: [
                    Icon(
                      _isVideo ? Icons.videocam_off : Icons.music_note,
                      size: 64,
                      color: Colors.white30,
                    ),
                    if (_videoSize != null)
                      Padding(
                        padding: const EdgeInsets.only(top: 8),
                        child: Text(
                          '${_videoSize!.width} × ${_videoSize!.height}',
                          style: const TextStyle(color: Colors.white54, fontSize: 12),
                        ),
                      ),
                  ],
                ),
              ),
      ),
    );
  }

  Widget _buildStatusBar() {
    return Container(
      padding: const EdgeInsets.symmetric(horizontal: 12, vertical: 8),
      decoration: BoxDecoration(
        color: _stateColor.withOpacity(0.1),
        borderRadius: BorderRadius.circular(8),
        border: Border.all(color: _stateColor.withOpacity(0.3)),
      ),
      child: Row(
        children: [
          Container(
            width: 8, height: 8,
            decoration: BoxDecoration(color: _stateColor, shape: BoxShape.circle),
          ),
          const SizedBox(width: 8),
          Text(_stateLabel,
              style: TextStyle(color: _stateColor, fontWeight: FontWeight.w500)),
          if (_state == PlayerState.loading) ...[
            const SizedBox(width: 8),
            SizedBox(
              width: 12, height: 12,
              child: CircularProgressIndicator(
                strokeWidth: 2, color: _stateColor,
              ),
            ),
          ],
          const Spacer(),
          if (_videoSize != null)
            Text(
              '${_videoSize!.width}×${_videoSize!.height}',
              style: TextStyle(color: _stateColor, fontSize: 12),
            ),
        ],
      ),
    );
  }

  Widget _buildUrlInput() {
    return Column(
      crossAxisAlignment: CrossAxisAlignment.start,
      children: [
        TextField(
          controller: _titleController,
          decoration: const InputDecoration(
            labelText: '标题(可选)',
            border: OutlineInputBorder(),
            isDense: true,
            prefixIcon: Icon(Icons.title),
          ),
        ),
        const SizedBox(height: 8),
        TextField(
          controller: _urlController,
          decoration: InputDecoration(
            labelText: '视频 / 音频地址',
            hintText: 'https://example.com/video.mkv',
            border: const OutlineInputBorder(),
            prefixIcon: const Icon(Icons.link),
            suffixIcon: _urlController.text.isNotEmpty
                ? IconButton(
                    icon: const Icon(Icons.clear),
                    onPressed: () => setState(() => _urlController.clear()),
                  )
                : null,
          ),
          onChanged: (_) => setState(() {}),
          onSubmitted: (_) => _play(),
          keyboardType: TextInputType.url,
        ),
      ],
    );
  }

  Widget _buildPresetChips() {
    return Wrap(
      spacing: 8,
      runSpacing: 4,
      children: _presets.map((preset) {
        final (label, url, isVideo) = preset;
        return ActionChip(
          label: Text(label, style: const TextStyle(fontSize: 12)),
          avatar: Icon(
            isVideo ? Icons.videocam : Icons.audiotrack,
            size: 16,
          ),
          onPressed: () {
            setState(() {
              _urlController.text = url;
              _titleController.text = label;
              _isVideo = isVideo;
            });
          },
        );
      }).toList(),
    );
  }

  Widget _buildMediaTypeSwitch() {
    return Row(
      children: [
        const Text('类型:'),
        const SizedBox(width: 8),
        SegmentedButton<bool>(
          segments: const [
            ButtonSegment(value: true, label: Text('视频'), icon: Icon(Icons.videocam)),
            ButtonSegment(value: false, label: Text('音频'), icon: Icon(Icons.audiotrack)),
          ],
          selected: {_isVideo},
          onSelectionChanged: (s) => setState(() => _isVideo = s.first),
        ),
      ],
    );
  }

  Widget _buildProgressBar() {
    final total = _duration.inMilliseconds;
    final current = _position.inMilliseconds.clamp(0, total > 0 ? total : 1);

    return Column(
      children: [
        SliderTheme(
          data: SliderTheme.of(context).copyWith(
            thumbShape: const RoundSliderThumbShape(enabledThumbRadius: 7),
            overlayShape: const RoundSliderOverlayShape(overlayRadius: 14),
          ),
          child: Slider(
            value: total > 0 ? current / total : 0.0,
            secondaryTrackValue: _buffered.clamp(0.0, 1.0),
            onChanged: total > 0
                ? (v) {
                    _player.seek(Duration(milliseconds: (v * total).toInt()));
                  }
                : null,
          ),
        ),
        Padding(
          padding: const EdgeInsets.symmetric(horizontal: 16),
          child: Row(
            mainAxisAlignment: MainAxisAlignment.spaceBetween,
            children: [
              Text(_fmt(_position), style: const TextStyle(fontSize: 12)),
              Text(_fmt(_duration), style: const TextStyle(fontSize: 12)),
            ],
          ),
        ),
      ],
    );
  }

  Widget _buildMainControls() {
    final isPlaying = _state == PlayerState.playing;
    final canControl = _state != PlayerState.idle && _state != PlayerState.error;

    return Row(
      mainAxisAlignment: MainAxisAlignment.center,
      children: [
        // 播放列表
        IconButton.outlined(
          tooltip: '播放列表',
          icon: const Icon(Icons.queue_music),
          iconSize: 28,
          onPressed: _urls.isNotEmpty
              ? () => _playFromPlaylist(startIndex: 0)
              : null,
        ),
        const SizedBox(width: 12),
        // 停止
        IconButton.outlined(
          icon: const Icon(Icons.stop),
          iconSize: 28,
          onPressed: canControl ? _player.stop : null,
        ),
        const SizedBox(width: 12),
        // 后退 10s
        IconButton.outlined(
          icon: const Icon(Icons.replay_10),
          iconSize: 28,
          onPressed: canControl
              ? () => _player.seek(_position - const Duration(seconds: 10))
              : null,
        ),
        const SizedBox(width: 12),
        // 播放 / 暂停(主按钮)
        FilledButton.icon(
          onPressed: _urlController.text.trim().isNotEmpty
              ? () {
                  if (_state == PlayerState.idle ||
                      _state == PlayerState.stopped ||
                      _state == PlayerState.completed ||
                      _state == PlayerState.error) {
                    _play();
                  } else if (isPlaying) {
                    _player.pause();
                  } else {
                    _player.play();
                  }
                }
              : null,
          icon: Icon(
            (_state == PlayerState.idle ||
                    _state == PlayerState.stopped ||
                    _state == PlayerState.completed)
                ? Icons.play_arrow
                : isPlaying
                    ? Icons.pause
                    : Icons.play_arrow,
            size: 32,
          ),
          label: Text(
            (_state == PlayerState.idle ||
                    _state == PlayerState.stopped ||
                    _state == PlayerState.completed)
                ? '播放'
                : isPlaying
                    ? '暂停'
                    : '继续',
          ),
          style: FilledButton.styleFrom(
            padding: const EdgeInsets.symmetric(horizontal: 24, vertical: 12),
          ),
        ),
        const SizedBox(width: 12),
        // 前进 10s
        IconButton.outlined(
          icon: const Icon(Icons.forward_10),
          iconSize: 28,
          onPressed: canControl
              ? () => _player.seek(_position + const Duration(seconds: 10))
              : null,
        ),
      ],
    );
  }

  Widget _buildVolumeRow() {
    return Row(
      children: [
        const Icon(Icons.volume_down, size: 20),
        Expanded(
          child: Slider(
            value: _volume,
            onChanged: (v) {
              setState(() => _volume = v);
              _player.setVolume(v);
            },
            divisions: 20,
            label: '${(_volume * 100).round()}%',
          ),
        ),
        const Icon(Icons.volume_up, size: 20),
        const SizedBox(width: 8),
        Text('${(_volume * 100).round()}%',
            style: const TextStyle(fontSize: 12, color: Colors.grey)),
      ],
    );
  }

  Widget _buildSpeedRow() {
    const speeds = [0.5, 0.75, 1.0, 1.25, 1.5, 2.0];
    return Wrap(
      crossAxisAlignment: WrapCrossAlignment.center,
      spacing: 6,
      runSpacing: 4,
      children: [
        const Text('倍速:', style: TextStyle(fontSize: 14)),
        ...speeds.map((s) => ChoiceChip(
              label: Text('${s}x', style: const TextStyle(fontSize: 12)),
              selected: _speed == s,
              onSelected: (_) {
                setState(() => _speed = s);
                _player.setSpeed(s);
              },
              padding: EdgeInsets.zero,
              materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
            )),
      ],
    );
  }

  Widget _buildIntervalRow() {
    const intervals = [100, 250, 500, 1000];
    return Wrap(
      crossAxisAlignment: WrapCrossAlignment.center,
      spacing: 6,
      runSpacing: 4,
      children: [
        const Text('进度回调:', style: TextStyle(fontSize: 14)),
        ...intervals.map((ms) => ChoiceChip(
              label: Text('${ms}ms', style: const TextStyle(fontSize: 12)),
              selected: _positionIntervalMs == ms,
              onSelected: (_) {
                setState(() => _positionIntervalMs = ms);
                _player.setPositionUpdateInterval(Duration(milliseconds: ms));
              },
              padding: EdgeInsets.zero,
              materialTapTargetSize: MaterialTapTargetSize.shrinkWrap,
            )),
      ],
    );
  }

  @override
  void dispose() {
    for (final sub in _subs) sub.cancel();
    _urlController.dispose();
    _titleController.dispose();
    _player.dispose();
    super.dispose();
  }
}
2
likes
0
points
482
downloads

Publisher

unverified uploader

Weekly Downloads

Flutter媒体播放器插件,在Android/iOS上支持视频和音频播放和后台播放。支持MKV、MP4、HLS等.

Repository (GitHub)
View/report issues

License

unknown (license)

Dependencies

flutter, plugin_platform_interface

More

Packages that depend on omni_player

Packages that implement omni_player