Open nassimus26 opened 1 year ago
Doesn't disconnecting the device from the network mean that it can't even send error messages to your host? (because it is not connected to anything)
My app has been rejected because when the tester disable the device wifi, my app shows no errors, it's normal because my tests shows that no errors events comes when the wifi is disconnected during the play, actualy I continue to get normal position progress event, but the stream is not playing any more, this is a bug of the player
But immediately when I reconnect the Wifi, strangly I get an Error from the player :
asTizenController().addListener(() {
var state = asTizenController().value;
String msg = ">> event isPlaying "+state.isPlaying.toString()+" hasError "+state.hasError.toString()+" error "+error+
" state.position "+ state.position.toString();
print(msg);
});
I got this when I reconnect the WIFI after disconnecting it for 20 seconds.
>> event isPlaying false hasError true error Streaming connection failed state.position 0:00:00.000000
@swift-kim I don't think that disabling the PC wifi stop events, because as I said I continue to get normal positon events after disabling the wifi :
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:20.972000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:21.453000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:21.953000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.105000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.314000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.523000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.686000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.011000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.150000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.359000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.638000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.916000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:24.056000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:24.404000
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:24.752000
Here's a screen recording, which shows the bug, the player continue to send a progressing position when the Wifi is disabled
https://drive.google.com/file/d/1lo_enTz2aIaUaL4SSBL7QH9UtxK98PPM/view?usp=sharing
As a temporary work around, I tried to use an HttpProxy to detect the loose of the connection 👍
But I am getting this permission denied OS Error :
Unhandled Exception: SocketException: Failed to create server socket (OS Error: Permission denied, errno = 13), address = loca
lhost, port = 642
#0 _NativeSocket.bind (dart:io-patch/socket_patch.dart:1008:7)
@swift-kim I am using an emulator, so the events use the local loop I think, that's why I don't need the Wifi to get the events
Okay, I thought you were using a physical TV device. Which emulator device (mobile or wearable?) did you use? Probably you didn't use TV emulator, as it is not supported by the video_player_tizen plugin.
It seems the native VideoPlayer::OnError
callback is not properly being called by the platform. This looks like a platform bug. We'll take a look if we can reproduce the issue.
To see the logs printed by LOG_DEBUG
, you can simply run
sdb dlog VideoPlayerTizenPlugin
in the host shell if you're using a mobile or wearable emulator. If you're debugging on a physical TV or TV emulator, you'll need to replace dlog_print
in the log.h
file with something like printf
to see the errors since dlog
is not supported by TV.
@nassimus26 Hi~ I use this stream (duration 2 minutes) to test in TV emulator. After playing 5 seconds, I disconnect wifi,and after several seconds, streaming connection failed. By the way, I test on a TV device(not emulator ), also connection failed after disconnect wifi. this are error logs test on emulator:
But I use a stream which duration only 30 seconds,it isn't stop after disconnection wifi. Maybe the streaming duration is too short, video has already buffered, so it will not stop after disconnection wifi.
@hyue7 I did my tests with live streams located in this file (the Samsung tester also) (first ones) https://github.com/nassimus26/naviptv/blob/main/demo.m3u
The problem is that the stream play stop on the player (TV or Emulator, inside the emulator the sound is stopped), but I continue to get new positions progress without any error and this for a long time, when I reconnect the Wifi sometimes I recieve an Error sometimes not.
@swift-kim I am using the TV Emulator, I trust the sound, if I hear the sound I know it's playing, I don't need the image because my code is working fine on others platforms (Windows, Android), I am just porting the App to Tizen
I just retest, and I confirm to you that the positions continue to come after the play has stopped.
@swift-kim I tried to apply your suggested changes but I am not good in C#
#define LOG(prio, fmt, arg...) \
**printf**(prio, LOG_TAG, "%s: %s(%d) > " fmt, __MODULE__, __func__, \
__LINE__, ##arg)
Gives this error , probably the function signature is different
#define LOG_DEBUG(fmt, args...) LOG(DLOG_DEBUG, fmt, ##args)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~
src/log.h:16:3: note: expanded from macro 'LOG'
printf(prio, LOG_TAG, "%s: %s(%d) > " fmt, __MODULE__, __func__, \
Ok, I finally change it to a simple printf(fmt)
, it compile, but the commandC:\tizen-studio\tools>sdb dlog VideoPlayerTizenPlugin
shows nothing
If you decide to use printf
, it should look like:
#define LOG(prio, fmt, arg...) \
printf("%s: %s(%d) > " fmt "\n", __MODULE__, __func__, __LINE__, ##arg)
Ok, I finally change it to a simple
printf(fmt)
, it compile, but the commandC:\tizen-studio\tools>sdb dlog VideoPlayerTizenPlugin
shows nothing
dlog
is not supported on TV. You can see the standard output of the app in the flutter-tizen run
console.
I diconnect the Wifi around 6 seconds, the sound stop at 12 seconds , but here the full log (and it has never stopped ):
It continue to send new positions until 23 seconds, then it send the same position 23 seconds indefinitely (the good news is that it stop incrementing the position, but between 12 seconds and 23 seconds, the player is not playing so no way to notify the user quickly)
The tested stream is :
#EXTINF:-1 tvg-id="BumblebeeTVCountryBoyKidsVideo.us" tvg-logo="https://i.imgur.com/p14DjHo.png" group-title="Kids",Bumblebee TV Country Boy Kids Video (720p)
https://stitcheraws.unreel.me/wse-node02.powr.com/live/5bf225aed5eeee0f5a4094bd/playlist.m3u8
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 11537
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:11.537000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 12055
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:12.055000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 12556
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:12.556000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 13059
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:13.059000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 13556
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:13.556000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 14055
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:14.055000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 14560
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:14.560000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 15062
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:15.062000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 15573
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:15.573000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 16068
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:16.068000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 16562
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:16.562000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 17095
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:17.095000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 17641
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:17.641000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 18056
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:18.056000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 18566
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:18.566000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 19059
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:19.059000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 19557
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:19.557000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 20060
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:20.060000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 20564
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:20.564000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 21062
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:21.062000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 21609
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:21.609000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 22057
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.057000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 22558
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.558000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 22821
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:22.821000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23030
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.030000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
[I] flutter: >> event isPlaying true hasError false error state.position 0:00:23.239000
[I] video_player_tizen_plugin.cc: Position(223) > [VideoPlayerTizenPlugin] textureId: 12
[I] video_player.cc: GetPosition(249) > [VideoPlayer] position: 23239
Another observation, if I don't disconnect the WIFI, after around 30 seconds of play the Sound is stopped (it's not playing anymore), but the position continue to progress indefinitely also
After resizing a Wearable and testing on it, I think that Emulator is so slow that I am losing the sound after 30 seconds, but it continue to play (sometimes it's black screen but most of time it's blinking between the video and black screen ).
It's impossible to test the player well on any Emulator Wearable or not.
@nassimus26 I test on TV emulator, it can receive connnection failed
error message after video stop playing. The position stopped first and then get the connnection failed
message.
the process is:
disconnect network --> play buffer --> buffer end --> throw connnection failed
If you want to immediately stop video, maybe you can use this plugin connectivity_plus to listen network status, and then stop video by app.
Hi @hyue7 did you try with the live stream url which I used ?
@hyue7 No the true problem is not just the network status, most Iptv providers use temporary stream link, so when the link reach the end we need to get the error as quickly as possible to generate a new link
Hi @hyue7 did you try with the live stream url which I used ?
Yes, I tried this: https://stitcheraws.unreel.me/wse-node02.powr.com/live/5bf225aed5eeee0f5a4094bd/playlist.m3u8 disconnect network in 12s and get connection failed message at 29s
Ok @hyue7 thank you, in this case I don’t know why the Samsung tester report this problem since it happening only on my slow emulator, I was about to abort this version, but I will re-submit it once again , thanks again for your time
@hyue7 the last possible case is that the problem is in my app and not in the player, an app which working fine on others platforms and the networks issues are managed with the same shared code, could you (if you want) try my app on your TV or simulator, https://raw.githubusercontent.com/nassimus26/naviptv/main/apks/com.agiprod.naviptv-3.4.6.tpk
Just click on the Admin Profil, then add the DEMO provider, then select any Kid channel, then disable the network, after 2 or 3 seconds the bottom player control panel should appear showing ( Retryng..., Connecting ....)
If you have no issue, it means ... I have no idea .
Hi @hyue7 did you try with the live stream url which I used ?
Yes, I tried this: https://stitcheraws.unreel.me/wse-node02.powr.com/live/5bf225aed5eeee0f5a4094bd/playlist.m3u8 disconnect network in 12s and get connection failed message at 29s
Actually what you describe it happens sometimes, the error message comes after a 17 seconds of same position, but most of the time the error message never comes, at least on my emulator.
And between the 12 seconds and the 29 seconds, the player did continue to play ( already buffered ) or it was stopped ? ( 17 seconds is too long to create a new temporary link , the live stream which I sent you doesn’t use temporary link but paid Iptv providers do )
@hyue7 in my last version I already added a timer, if the position is not changing for more than 2 seconds, I consider that a stream error had occurred, this should reduce the risk of not handling the disconnection ( even if the player doesn’t send the error ).
Just click on the Admin Profil, then add the DEMO provider, then select any Kid channel, then disable the network, after 2 or 3 seconds the bottom player control panel should appear showing ( Retryng..., Connecting ....)
after add the DEMO provider, nothing happen, i can't find any Kid channel. And your app i can't launch on emulator....
And between the 12 seconds and the 29 seconds, the player did continue to play ( already buffered ) or it was stopped ?
player will play buffer, the video position stopped at 29s, that means buffer end at 29s, and then connection failed
@hyue7 No the true problem is not just the network status, most Iptv providers use temporary stream link, so when the link reach the end we need to get the error as quickly as possible to generate a new link
Do you want to player send complete message to app when stream completed? But it is not an error.... what do you actually want?
Hi @hyue7 , the end of the stream is not an error but the isPlaying variable should be false.
Hi @hyue7 did you try with the live stream url which I used ?
Yes, I tried this: https://stitcheraws.unreel.me/wse-node02.powr.com/live/5bf225aed5eeee0f5a4094bd/playlist.m3u8 disconnect network in 12s and get connection failed message at 29s
Actually what you describe it happens sometimes, the error message comes after a 17 seconds of same position, but most of the time the error message never comes, at least on my emulator.
And between the 12 seconds and the 29 seconds, the player did continue to play ( already buffered ) or it was stopped ? ( 17 seconds is too long to create a new temporary link , the live stream which I sent you doesn’t use temporary link but paid Iptv providers do )
What player do you use and how do you use it to play .m3u8?
Here's my code :
The problem is that I am not getting any error when I disconnect my Wifi !
I am trying to dig into the Plugin code to understand what's happening, so I have 2 others questions :
1- Is it possible to debug the dart code from the IDE ? if yes how ? 2- In the Tizen plugin code we have:
But in the console, I don't see any kind of the player logging message (events or errors), so is it possible to activate and see this C or C# logging message in the dart console ? or how to see them ?