Recalbox Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • recalbox.com
    • Gitlab repository
    • Documentation
    • Discord

    Intro bricht ab trotz richtiger s02splash Einträge! Odroid XU4

    Recalbox
    bricht trotz richtiger s02splash einträge
    3
    5
    1352
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • Levingard
      Levingard last edited by Levingard

      Hallo zusammen,

      ich habe folgendes Problem. Ich habe ein längeres Recalbox-Intro das ich einfügen möchte (26 Sek.).
      (Bevor Fragen vom Support kommen, ja es ist ein Recalbox Zeichen groß im Intro zu sehen, ich mache hier kein rebranding!)

      Ich benutze die Aktuelle Recalbox Version für Odroid XU4!

      Hier meine s02splash:

      #!/bin/bash
      
      selectVideo() {
      IFS='
      '
      videoList=($(find /recalbox/system/resources/splash -name *.mp4))
      videoNumber=${#videoList[*]}
      video=${videoList[$((RANDOM%videoNumber))]}
      echo "${video}"
      }
      video="`selectVideo`"
      
      do_ffmpeg_start () {
      if ! `which ffplay >/dev/null` || [[ ! -f $video ]] ; then
          return
      fi
      ffplay_opts="-hide_banner -autoexit"
      ffplay_srt="subtitles=/recalbox/system/resources/splash/recalboxintro.srt:force_style='FontName=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf,Fontsize=10'"
      ffplay $ffplay_opts -vf "$ffplay_srt" "$video" >/dev/null 2>&1 &
      PID=$!
      count=0
      
      while [[ ! -f "/tmp/emulationstation.ready" && ! -e "/var/run/kodi.msg" && $count -lt 200 ]]; do
          sleep 0.1
          ((count++))
      done
      do_ffmpeg_stop $PID
      show_logo
      }
      
      do_ffmpeg_stop () {
      kill -9 $1
      }
      
      
      do_omx_start ()
      {
      # odroid xu4 has not omxplayer, make it run this code make it flash
      if [[ ! -f $video || ! -f /usr/bin/omxplayer ]]; then
          return
      fi
      
      # Initialize dbus session
      OMXPLAYER_DBUS_ADDR="/tmp/omxplayerdbus.root"
      OMXPLAYER_DBUS_PID="/tmp/omxplayerdbus.root.pid"
      exec 5> "$OMXPLAYER_DBUS_ADDR"
      exec 6> "$OMXPLAYER_DBUS_PID"
      dbus-daemon --fork --print-address 5 --print-pid 6 --session
      until [ -s "$OMXPLAYER_DBUS_ADDR" ]; do
          echo "waiting for dbus address to appear" >&2
          sleep .2
      done
      DBUS_SESSION_BUS_ADDRESS=`cat $OMXPLAYER_DBUS_ADDR`
      DBUS_SESSION_BUS_PID=`cat $OMXPLAYER_DBUS_PID`
      export DBUS_SESSION_BUS_ADDRESS
      export DBUS_SESSION_BUS_PID
      
      # Launch the video
      omx_fnt="--font=/usr/share/fonts/dejavu/DejaVuSans-BoldOblique.ttf"
      omx_opt="--adev both --no-keys --layer=10000 --aspect-mode=fill"
      omx_srt="--no-ghost-box --lines=1 --align=left $omx_fnt --font-size=20 --subtitles=/recalbox/system/resources/splash/recalboxintro.srt"
      /usr/bin/omxplayer.bin $omx_opt $omx_srt $video &
      PID=$!
      
      # Stop the video when ready
      if [[ $? -eq 0 ]]; then
          # Wait for emulationstation or Kodi, but not more than 20 seconds
          count=0
          while [[ ! -f "/tmp/emulationstation.ready" && ! -e "/var/run/kodi.msg" && $count -lt 27 ]]; do
              sleep 1
              ((count++))
          done
           # Finish with a one second fade out.
      sleep 27
          audio_fade=1
          video_fade=250
          while [[ $video_fade -gt 0 ]]; do
              sleep .02
              dbus-send --print-reply=literal --session --dest=org.mpris.MediaPlayer2.omxplayer /org/mpris/MediaPlayer2 org.freedesktop.DBus.Properties.Volume double:$audio_fade >/dev/null
              dbus-send --print-reply=literal --session --dest=org.mpris.MediaPlayer2.omxplayer /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.SetAlpha objpath:/not/used int64:$video_fade >/dev/null
              audio_fade=`echo "$audio_fade .02" | awk '{printf "%.2f", $1-$2}'`
              ((video_fade=video_fade-5))
          done
          # Ready flag set or timeout occured; stop video process.
          dbus-send --print-reply=literal --session --dest=org.mpris.MediaPlayer2.omxplayer /org/mpris/MediaPlayer2 org.mpris.MediaPlayer2.Player.Action int32:15 >/dev/null
      fi
      }
      
      wait_for_fb () {
      # on some sytems, fb0 is not immediatly loaded, so, keep a chance by waiting a bit
      N=0
      while ! test -e /dev/fb0 -o $N -gt 15
      do
          sleep 1
          let N++
      done
      }
      
      show_logo() {
      wait_for_fb
      test -e /dev/fb0 && fbv -f -i /recalbox/system/resources/splash/logo-version.png
      }
      
      case "$1" in
      start)
          if [[ `cat /recalbox/recalbox.arch` == "rpi"* ]] ; then
              ( do_omx_start ; show_logo ) &
          else
              ( wait_for_fb ; do_ffmpeg_start ) &
          fi
          ;;
      stop)
         ;;
      restart|reload)
         ;;
      *)
      esac
      
      exit $?
      

      Ich habe es mit Änderungen hier:

      while [[ ! -f "/tmp/emulationstation.ready" && ! -e "/var/run/kodi.msg" && $count -lt 27 ]]; do
      

      und auch hier versucht:

      # Finish with a one second fade out.
      sleep 27
      

      Beides war erfolglos. Das Video bricht nach ca. 7 Sekunden ab und lädt direkt in die ES. Auch der Sound der ES ist dann nicht zu hören. Entferne ich das Video zeigt er ganz normal das recalbox PNG an, lädt ES und ich habe Sound. Auch bei Videos unter 5 Sekunden habe ich kein Problem!

      Kann mir bitte jemand sagen was ich noch machen kann um das Abbrechen des Intros zu verhindern?

      Mit freundlichen Grüßen:

      Thomas

      1 Reply Last reply Reply Quote 0
      • Bloodsurfer
        Bloodsurfer last edited by

        Das ist seltsam. Ich verwende auch ein längeres Splashvideo und bei mir hat genau das funktioniert, was du als letztes aufgezählt hast: das "sleep ..." hinter dem Kommentar "Finish...".
        Ich habe allerdings eine größere Sekundenzahl genommen, 40 oder 50. Funktioniert tadellos. Das war die einzige nötige Änderung.

        Wobei ich die Standardvideos alle gelöscht und nur noch das neue im entsprechenden Verzeichnis liegen habe, damit es immer kommt. Aber am Script habe ich keine weitere Änderung vornehmen müssen.

        1 Reply Last reply Reply Quote 0
        • Levingard
          Levingard last edited by

          @Bloodsurfer hast du auch einen Odroid XU4 oder hast du das auf dem Raspberry gemacht?
          Bin echt ratlos, habe auch schon neu installiert, aber gleiches Ergebnis!

          1 Reply Last reply Reply Quote 0
          • Bloodsurfer
            Bloodsurfer last edited by

            Bei mir ist es ein normaler Pi 3B, aber das dürfte doch keine Rolle spielen... oder? Ich gehe mal davon aus, dass dieses Script für beide Plattformen identisch sein sollte. Sehe da zumindest auf den ersten Blick nichts systemspezifisches.

            1 Reply Last reply Reply Quote 0
            • Buhmann
              Buhmann last edited by

              Hi,
              in welcher Datei finde ich:

              Finish with a one second fade out. sleep 27 ???

              Seit dem letzten Update finde ich das nicht mehr?

              Danke

              lg

              1 Reply Last reply Reply Quote 0
              • First post
                Last post

              Want to support us ?

              114
              Online

              98.7k
              Users

              28.1k
              Topics

              187.0k
              Posts

              Copyright © 2021 recalbox.com