first commit
This commit is contained in:
2
README.md
Normal file
2
README.md
Normal file
@@ -0,0 +1,2 @@
|
||||
# Introduction
|
||||
NEXIO DISPLAY TEST - PYTHON APP FOR NEXIO DISPLAY TESTING
|
||||
59
arrive_vidplybck.py
Normal file
59
arrive_vidplybck.py
Normal file
@@ -0,0 +1,59 @@
|
||||
import gi
|
||||
import sys
|
||||
|
||||
gi.require_version('Gst', '1.0')
|
||||
from gi.repository import Gst, GLib
|
||||
|
||||
def play_kiosk_video():
|
||||
Gst.init(None)
|
||||
|
||||
VIDEO_PATH = "file:///root/python/vid.mp4"
|
||||
|
||||
SINK_STR = (
|
||||
"videoconvert ! "
|
||||
"video/x-raw,format=BGRx ! "
|
||||
"kmssink driver-name=mxsfb-drm connector-id=37 plane-id=31 can-scale=false" )
|
||||
|
||||
# Create the playbin element
|
||||
pipeline = Gst.ElementFactory.make("playbin", "player")
|
||||
pipeline.set_property("uri", VIDEO_PATH)
|
||||
|
||||
# Set the custom video sink
|
||||
video_sink = Gst.parse_bin_from_description(SINK_STR, True)
|
||||
pipeline.set_property("video-sink", video_sink)
|
||||
|
||||
# Set audio to fakesink (prevents errors if no audio hardware is found)
|
||||
audio_sink = Gst.ElementFactory.make("fakesink", "audio-fake")
|
||||
pipeline.set_property("audio-sink", audio_sink)
|
||||
|
||||
# --- LOOPING LOGIC ---
|
||||
bus = pipeline.get_bus()
|
||||
bus.add_signal_watch()
|
||||
|
||||
def on_message(bus, msg):
|
||||
t = msg.type
|
||||
if t == Gst.MessageType.EOS:
|
||||
print("End of video. Looping...")
|
||||
pipeline.seek_simple(Gst.Format.TIME, Gst.SeekFlags.FLUSH | Gst.SeekFlags.KEY_UNIT, 0)
|
||||
elif t == Gst.MessageType.ERROR:
|
||||
err, debug = msg.parse_error()
|
||||
print(f"Error: {err}")
|
||||
loop.quit()
|
||||
return True
|
||||
|
||||
bus.connect("message", on_message)
|
||||
|
||||
# Start playback
|
||||
print(f"Starting playback: {VIDEO_PATH}")
|
||||
pipeline.set_state(Gst.State.PLAYING)
|
||||
|
||||
loop = GLib.MainLoop()
|
||||
try:
|
||||
loop.run()
|
||||
except KeyboardInterrupt:
|
||||
print("\nStopping player...")
|
||||
finally:
|
||||
pipeline.set_state(Gst.State.NULL)
|
||||
|
||||
if __name__ == "__main__":
|
||||
play_kiosk_video()
|
||||
Reference in New Issue
Block a user