我想显示加载,而vlc在颤振负载rtsp流-它需要10秒,没有反馈在屏幕上。我是新手,我想知道是否有任何方法来检查流何时加载并开始播放,因此我可以隐藏加载,以下是实时流屏幕的全部代码vlc播放器控制器正在播放流。
import 'dart:developer';
import 'package:flutter/material.dart';
import 'package:flutter_vlc_player/flutter_vlc_player.dart';
import 'package:MyApp/ScreenArguments.dart';
import 'package:google_fonts/google_fonts.dart';
import 'package:flutter/services.dart';
import 'package:percent_indicator/percent_indicator.dart';
class LiveStreamScreen extends StatefulWidget {
const LiveStreamScreen({Key? key}) : super(key: key);
@override
_LiveStreamScreenState createState() => _LiveStreamScreenState();
}
class _LiveStreamScreenState extends State<LiveStreamScreen> {
final int zoomscale =1;
bool loaded = false;
VlcPlayerController _videoPlayerController = new VlcPlayerController.network(
"linkcomeshere",
hwAcc: HwAcc.full,
autoPlay: true,
options:VlcPlayerOptions(),
);
bool isPlaying = true;
bool isBuffering = true;
String position = '';
String duration = '';
double sliderValue = 0.0;
double startValue = 0.0;
double volume = 80;
bool playing = false;
@override
void initState()
{
log("helo2");
super.initState();
}
void checkIfPlaying() async
{
bool? play = await _videoPlayerController.isPlaying();
if (play==null) {
print("not playing inside async");
}
else
{
playing = play;
print("now playing inside async");
}
}
@override
void dispose() async {
super.dispose();
}
_checkifplaying() async
{
print("now inside async");
bool? value = await _videoPlayerController.isPlaying();
if(value == true)
{
print("now playing inside async");
}
else
{
print("not playing inside async");
}
}
@override
Widget build(BuildContext context) {
final args = ModalRoute.of(context)!.settings.arguments as ScreenArguments;
_videoPlayerController = VlcPlayerController.network(
args.data,
hwAcc: HwAcc.full,
autoPlay: true,
options:VlcPlayerOptions(),
);
_videoPlayerController.play();
_videoPlayerController.addListener(() {
});
final int zoomscale =1;
final key = args.data2;
String titlemain = "Screen streaming";
return Scaffold(
resizeToAvoidBottomInset: false,
body:
SingleChildScrollView(
child: Container(
alignment: Alignment.topCenter,
child:
Column
(
children: <Widget>[
InteractiveViewer(
panEnabled: false,
alignPanAxis: true,
// Set it to false to prevent panning.
// boundaryMargin: EdgeInsets.all(80),
minScale: 0.5,
maxScale: 10,
child: VlcPlayer(
controller: _videoPlayerController,
aspectRatio: 16 / 9,
placeholder: const Center(child : CircularProgressIndicator()),
),
),
Text(titlemain, style: GoogleFonts.poppins(
textStyle: Theme.of(context).textTheme.bodySmall,
fontSize: 20,
fontWeight: FontWeight.w500,
fontStyle: FontStyle.italic,
),),
Text("Please Wait it Takes - 10 to 12 Seconds to load the lIVE Stream", style: GoogleFonts.poppins(
textStyle: Theme.of(context).textTheme.bodySmall,
fontSize: 20,
fontWeight: FontWeight.w500,
fontStyle: FontStyle.italic,
),),
],
),
),
),
);
}
}
发布于 2022-04-29 03:28:08
提供缓冲和播放事件。使用这些来绑定加载UI控件。
https://stackoverflow.com/questions/72048763
复制相似问题