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



  • 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



  • 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.



  • @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!



  • 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.



  • 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



Want to support us ?

Join us on :

265
Online

30855
Users

15085
Topics

113595
Posts

Looks like your connection to Recalbox Forum was lost, please wait while we try to reconnect.