Change the time seek bar/osd shows when playback starts
#1
Hello all,

Is there any way to change the length of time the seek bar/OSD shows at the start of media playback? I do not know how to change this from the skin's side.  I know that skin helper service had a setting that allowed you to change that, but in Amber I do not use skin helper service or any of its dependencies.  Please let me know if you have another way of changing this that I could implement in the skin.  Thanks.

Regards,

Bart
Amber Maintainer
Main HTPC: Intel Core i7, 32GB, nVidia GTX1080, Windows 11 Soundbar: Samsung HW-Q950A TV: LG CX Kodi: 19.3 Skin: Amber
Reply
#2
I used a simple window properry to show the OSD for 2s once the player window gets activated:
https://github.com/sualfred/skin.embuary....xml#L5-L6
and
https://github.com/sualfred/skin.embuary...en.xml#L41
Main: Lancool II Mesh  - Ryzen 9 5900x - MSI x570 Unify - Zotac RTX 3080 AMP HOLO - 32GB Trident Z Neo 3600 CL16 -  EVO 960 M.2 250GB / EVO 940 250GB / MX100 512GB /  Crucial P1 2TB / WD Blue 3D Nand 2TB 
Sound: Saxx AS30 DSP - Beyer Dynamic Custom One Pro 
TV: Nvidia Shield 2019 Pro- Adalight 114x LEDs - Sony 65XG9505 - Kodi / Emby - Yamaha RX-V683 - Heco Victa 700/101/251a + Dynavoice Magic FX-4
Server: i3 Skylake - 8GB - OMV4 - 22TB Storage
Reply
#3
(2021-02-07, 08:01)sualfred Wrote: I used a simple window properry to show the OSD for 2s once the player window gets activated:
https://github.com/sualfred/skin.embuary....xml#L5-L6
and
https://github.com/sualfred/skin.embuary...en.xml#L41
@sualfred, thanks! I had not thought of that.  I will try it!

Regards,

Bart
Amber Maintainer
Main HTPC: Intel Core i7, 32GB, nVidia GTX1080, Windows 11 Soundbar: Samsung HW-Q950A TV: LG CX Kodi: 19.3 Skin: Amber
Reply
#4
(2021-02-07, 08:01)sualfred Wrote: I used a simple window properry to show the OSD for 2s once the player window gets activated:
https://github.com/sualfred/skin.embuary....xml#L5-L6
and
https://github.com/sualfred/skin.embuary...en.xml#L41
@sualfred , I tested with a window property and it works very well when starting playback.  However, if you have the setting to automatically play the next video, for episodes, for example, when the next episode starts the seek bar is shown for 2.5 seconds and not for the time configured with the window property, since DisplayAfterSeek turns true for some reason, and that time cannot be changed.

Regards,

Bart
Amber Maintainer
Main HTPC: Intel Core i7, 32GB, nVidia GTX1080, Windows 11 Soundbar: Samsung HW-Q950A TV: LG CX Kodi: 19.3 Skin: Amber
Reply
#5
DisplayAfterSeek is fixed, yes. That's something we have to live with it Smile
Main: Lancool II Mesh  - Ryzen 9 5900x - MSI x570 Unify - Zotac RTX 3080 AMP HOLO - 32GB Trident Z Neo 3600 CL16 -  EVO 960 M.2 250GB / EVO 940 250GB / MX100 512GB /  Crucial P1 2TB / WD Blue 3D Nand 2TB 
Sound: Saxx AS30 DSP - Beyer Dynamic Custom One Pro 
TV: Nvidia Shield 2019 Pro- Adalight 114x LEDs - Sony 65XG9505 - Kodi / Emby - Yamaha RX-V683 - Heco Victa 700/101/251a + Dynavoice Magic FX-4
Server: i3 Skylake - 8GB - OMV4 - 22TB Storage
Reply
#6
Unsure if that helpes to define some vis conditions.

I faced a similar issue to show info ,whre the Player.ShowInfo is handled by KODI itself.  [ref : https://forum.kodi.tv/showthread.php?tid=352239 ]

So, maybe use a custom window to prevent KODI default but for the Skin 'unwished' baehaviour

Idea:
And in !Player.DisplayAfterSeek as visible condition.

e.g.
xml:
<window type="dialog" id="1195">
   <visible>Player.DisplayAfterSeek + String.IsEmpty(Window(home).Property(OVERRIDE_OWNSEEKTIME))</visible>
     
  <onunload>?? maybe more</onunload>
   <onload>SetProperty(OVERRIDE_OWNSEEKTIME,time,home)</onload>
  
    <controls />
</window>


Unsure, but worth a try.
It's early in the morning... Have a nice weekend

Wink
Reply
#7
(2021-02-13, 07:12)mardukL Wrote: Unsure if that helpes to define some vis conditions.

I faced a similar issue to show info ,whre the Player.ShowInfo is handled by KODI itself.  [ref : https://forum.kodi.tv/showthread.php?tid=352239 ]

So, maybe use a custom window to prevent KODI default but for the Skin 'unwished' baehaviour

Idea:
And in !Player.DisplayAfterSeek as visible condition.

e.g.
xml:
<window type="dialog" id="1195">
   <visible>Player.DisplayAfterSeek + String.IsEmpty(Window(home).Property(OVERRIDE_OWNSEEKTIME))</visible>
     
  <onunload>?? maybe more</onunload>
   <onload>SetProperty(OVERRIDE_OWNSEEKTIME,time,home)</onload>
  
    <controls />
</window>


Unsure, but worth a try.
It's early in the morning... Have a nice weekend

Wink

@mardukL, thanks! I tried with a skin setting + display after seek, but then that was never true and the seek bar did not show, whether the skin setting was true or not.  I will try with your suggestion.

Regards,

Bart
Amber Maintainer
Main HTPC: Intel Core i7, 32GB, nVidia GTX1080, Windows 11 Soundbar: Samsung HW-Q950A TV: LG CX Kodi: 19.3 Skin: Amber
Reply
#8
Now that I have upgraded to Matrix, my code to have the seek bar show up for a certain amount of time when playback starts does not work completely.  If you have the option to play the next video automatically, the seekbar does not show at all when the next video starts playing.  In Leia, it seems that DisplayAfterSeek got activated, and the seekbar showed for the fixed amount of time (2.5 seconds).

I understand why my code would not work, since I am setting a window property when VideoFullScreen.xml is loaded, and resetting it after the configured amount of time, with AlarmClock.  The issue is that when the next video starts playing, VideoFullScreen.xml is not unloaded and reloaded, so my window property is not set for the next video.  My current code in the onload of video full screen is this:

xml:

<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback)">SetProperty(ShowOSD,true,home)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEmpty(Skin.String(SeekBarInit))">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:02,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,two)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:02,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,three)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,four)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:04,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,five)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:05,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,six)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:06,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,seven)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:07,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,eight)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:08,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,ten)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:10,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,fifteen)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:15,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,twenty)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:20,silent)</onload>

And in DialogSeekBar.xml, I have the visibility condition like this:

xml:

<visible>[!Player.Paused + !String.IsEmpty(Window(home).Property(ShowOSD))] | [Player.Paused + Skin.HasSetting(Hide.SeekBarWhenPaused) + !System.IdleTime(5)] | [Player.Paused + !Skin.HasSetting(Hide.SeekBarWhenPaused)] | Player.Seeking | Player.DisplayAfterSeek | Player.Forwarding | Player.Rewinding | Player.ShowInfo | Player.ShowTime | Window.IsActive(videoosd) | Window.IsActive(musicosd) | Window.IsActive(playerprocessinfo) | Window.IsActive(dialogfullscreeninfo.xml) | !String.IsEmpty(Player.SeekNumeric) | !String.IsEmpty(PVR.ChannelNumberInput)</visible>
    <visible>![Window.IsActive(sliderdialog) | Window.IsActive(pvrosdchannels) | Window.IsActive(pvrguideinfo)]</visible>
    <visible>Window.IsActive(fullscreenvideo) | Window.IsActive(visualisation)</visible>

So it works well for the first video only.  How can I show the seekbar again when the next video starts playing automatically? I don't know how to figure out from the skin side that the media being played has changed.  Any help will be greatly appreciated.

Regards,

Bart

EDIT: Never mind, I went the rout that @mardukL suggested with a custom dialog to set my window property again when there is one second remaining on the video.  In case it helps any body, this is the code I used for the custom dialog:

xml:

<window type="dialog" id="1195">
    <visible>Player.HasMedia + Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEqual(Player.TimeRemaining(mmConfuseds),00:01)</visible>
    
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback)">SetProperty(ShowOSD,true,home)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEmpty(Skin.String(SeekBarInit))">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,two)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,three)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:04,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,four)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:05,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,five)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:06,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,six)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:07,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,seven)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:08,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,eight)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:09,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,ten)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:11,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,fifteen)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:16,silent)</onload>
    <onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,twenty)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:21,silent)</onload>   

    <controls />
</window>

Thank you again, @mardukL ! Smile
Amber Maintainer
Main HTPC: Intel Core i7, 32GB, nVidia GTX1080, Windows 11 Soundbar: Samsung HW-Q950A TV: LG CX Kodi: 19.3 Skin: Amber
Reply
#9
thx i would thinnk about the following
as i am not sure how relevant that 1sesond can be for beeing an issue

videofullscreen
xml:

<!-- set prop fetch and set currently playing media title prop -->
<onload>SetProperty(currentlyplayingtitle,$INFO[Player.Title],home)</onload>
<!-- clear prop -->
<onunload>ClearProperty(currentlyplayingtitle,home)</onunload>

custom window
xml:

<visible>Player.HasMedia + Skin.HasSetting(ShowSeekBarOnPlayback) + !String.IsEqual(Window(home).Property(currentlyplayingtitle),$INFO[Player.title])</visible>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback)">SetProperty(ShowOSD,true,home)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + String.IsEmpty(Skin.String(SeekBarInit))">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,two)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:03,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,three)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:04,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,four)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:05,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,five)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:06,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,six)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:07,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,seven)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:08,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,eight)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:09,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,ten)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:11,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,fifteen)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:16,silent)</onload>
<onload condition="Skin.HasSetting(ShowSeekBarOnPlayback) + Skin.String(SeekBarInit,twenty)">AlarmClock(ShowOSD,ClearProperty(ShowOSD,home),00:21,silent)</onload>

<!-- refresh prop at last onload action to have the current item refreshed and auto close the curent dialog due to visible condituon -->
<onload>SetProperty(currentlyplayingtitle,$INFO[Player.Title],home)</onload>
<controls />
Reply

Logout Mark Read Team Forum Stats Members Help
Change the time seek bar/osd shows when playback starts0