I hope anyone can help. I have built a Python script that uses a triggering action to start playing a video of a door opening. When triggered, it should start playing the video of a door opening, and after that, rewind and pause with the image of a closed door again (first part of the video)
I´m using Python, OMXPLayer, Raspberry Pi 3, Raspbian, all updated. To control OMXPlayer (the process is always active, I use a sub process and I send keystrokes from my python script to pause/play/rewind.
Basically what I do for each trigger 1. Resume 2. Wait for the length of the video 3. Rewind 4. Sleep for 250ms so the video restarts and next pause will show an image of the beginning of the video. 5. Pause
It works well using HDMI connected to my TV. But when conneting to my monitor with HDMI->DVI, the rewind part does not work. It seems like the rewind does not take place with the sleep of 250ms. Its like the sub process does not detect rewind, only pause. If I increase the sleep from 250ms to 600 ms it works but then it wont work when using HDMI.
And I am REALLY confused how the connection to the display makes this difference tv-service -s reports DVI CEA for the monitor and HDMI CEA för the TV TV is detected as 1080i and Monitor 1080P
This is how I initiate the player
self.moviePlayer = subprocess.Popen(['omxplayer','--no-osd' ,'-b','-- loop','/tmp/1.mov'],stdin=subprocess.PIPE,stdout=subprocess.PIPE ,stderr=subprocess.PIPE,close_fds=True,bufsize=0)
This is the code that is executed when triggered:
#Resume movie self.moviePlayer.stdin.write(bytes("p", "ascii")) #Wait for the movie to almost finish... time.sleep((currentMovieLength - 0.2)) #Previous chapter to rewind self.moviePlayer.stdin.write(bytes("i", "ascii")) #Wait 250ms before we pause so an actual image will be displayed when we pause time.sleep(.25) #<- This delay needs to be increased to .60 when using DVI!!?? #Pause self.moviePlayer.stdin.write(bytes("p", "ascii"))
It seems like the sub process does not detect the rewind keystroke when the pause keystroke comes 250ms after when using DVI. But it works perfect using HDMI...I have tested different arguments with OMXPLayer like -y -z -r -d etc. I have tries disabling HDMI CEC, I have tested Setting HDMI_drive=2 which causes the monitor to clicker, hdmi boost, hdmi_safe etc etc with no luck
PLEASE help me
EDIT: After 8 hours of troubleshooting I posted this question. Then after additional 5 minutes I managed to find a solution. I added hdmi_force_edid_audio=1 to the config.txt forcing the Pi to believe all audio formats are supported. Now it works like a charm. Unbelievable