Live Streaming URL is crashing the app after a few seconds of play
Qayoommaymon opened this issue · 2 comments
Thanks Hitesh to you & all your team for sharing code of much sought windows flutter library. I would like your kind review/suggestion on an issue faced using the dart_vlc library. I have used the library in Flutter Windows Movies app to show both the network (URL based) movies and the live streaming contents. The dart_vlc player is working fine for the network hosted content however its not working for the live streaming contents. The player crashes while playing the live stream after a few seconds of play.
Note: The internet connection is working fine for the same contents when played on the web browser & mobile app (using the better_player).
The error screens of the player crash are also attached for your review and suggestion. Below is the code snippet used for playing the contents using the dart_vlc:
import 'package:dart_vlc/dart_vlc.dart';
import 'package:flutter/material.dart';
import 'package:flutter_native_view/flutter_native_view.dart';
import 'dart:ffi';
import 'package:ffi/ffi.dart';
import 'package:win32/win32.dart';
class DartVLCPlayerWindows extends StatefulWidget {
final playImage;
final playURL;
final title;
final bool liveStream;
DartVLCPlayerWindows({
Key key,
this.title,
this.playImage,
this.playURL,
this.liveStream,
}) : super(key: key);
@override
DartVLCPlayerWindowsState createState() => DartVLCPlayerWindowsState();
}
class DartVLCPlayerWindowsState extends State<DartVLCPlayerWindows> {
final controller = NativeViewController(
/// Using [FindWindow] from `package:win32` to retrieve `HWND` as [int].
handle: FindWindow(nullptr, 'VLC Media Player'.toNativeUtf16()),
/// Make the [NativeView] interactable.
hitTestBehavior: HitTestBehavior.translucent,
);
Player videoPlayer = Player(
id: 7,
videoDimensions: VideoDimensions(640, 360),
registerTexture: false
);
@override
void initState() {
loadVideoPlayer();
setAudioTrack();
super.initState();
}
loadVideoPlayer() {
print(widget.playURL);
videoPlayer.open(
Media.network(widget.playURL),
autoStart: true
);
}
void setAudioTrack() async {
await Future.delayed(const Duration(seconds: 10));
videoPlayer.setAudioTrack(1);
}
@override
void dispose() {
videoPlayer.dispose();
controller.dispose();
super.dispose();
}
@override
Widget build(BuildContext context) {
return NativeVideo(
player: videoPlayer,
height: double.infinity,
width: double.infinity,
fit: BoxFit.contain,
showControls: true,
liveStream: widget.liveStream,
);
}
}
(below is the Debug screenshot.)
App crashing during downloaded video play also
@Qayoommaymon try this!
bool playBackisPlaying = false;
desktopController?.playbackStream.listen(desktopStateListener);
desktopController?.bufferingProgressStream.listen((double value) {
if(playBackisPlaying && value != 0.0){
isPlaying.value = true;
}else{
isPlaying.value = false;
}
});
dynamic desktopStateListener(PlaybackState state) {
playBackisPlaying = state.isPlaying;
}