From 0fdc87042cc80bdd29b0c18b8ebd36f07da2e83e Mon Sep 17 00:00:00 2001 From: Manglemix Date: Fri, 22 Sep 2023 16:38:17 -0600 Subject: [PATCH 1/2] last attempt at mpegts streaming --- .../kenney_interface_sounds/LICENSE.txt | 22 ++++ .../confirmation_002.wav | Bin 0 -> 49614 bytes .../confirmation_002.wav.import | 24 ++++ .../kenney_interface_sounds/error_002.wav | Bin 0 -> 29262 bytes .../error_002.wav.import | 24 ++++ lunabase/ffmpeg.gd | 115 ++++++++++++++++++ lunabase/lunabot.gd | 41 +++++-- lunabase/main.tscn | 13 +- lunabase/out.mkv | 0 lunabase/project.godot | 2 + 10 files changed, 230 insertions(+), 11 deletions(-) create mode 100644 lunabase/addons/kenney_interface_sounds/LICENSE.txt create mode 100644 lunabase/addons/kenney_interface_sounds/confirmation_002.wav create mode 100644 lunabase/addons/kenney_interface_sounds/confirmation_002.wav.import create mode 100644 lunabase/addons/kenney_interface_sounds/error_002.wav create mode 100644 lunabase/addons/kenney_interface_sounds/error_002.wav.import create mode 100644 lunabase/ffmpeg.gd create mode 100644 lunabase/out.mkv diff --git a/lunabase/addons/kenney_interface_sounds/LICENSE.txt b/lunabase/addons/kenney_interface_sounds/LICENSE.txt new file mode 100644 index 00000000..1fc5acf8 --- /dev/null +++ b/lunabase/addons/kenney_interface_sounds/LICENSE.txt @@ -0,0 +1,22 @@ + + + Interface Sounds (1.0) + + Created/distributed by Kenney (www.kenney.nl) + Creation date: 11-02-2020 + + ------------------------------ + + License: (Creative Commons Zero, CC0) + http://creativecommons.org/publicdomain/zero/1.0/ + + This content is free to use in personal, educational and commercial projects. + Support us by crediting Kenney or www.kenney.nl (this is not mandatory) + + ------------------------------ + + Donate: http://support.kenney.nl + Patreon: http://patreon.com/kenney/ + + Follow on Twitter for updates: + http://twitter.com/KenneyNL \ No newline at end of file diff --git a/lunabase/addons/kenney_interface_sounds/confirmation_002.wav b/lunabase/addons/kenney_interface_sounds/confirmation_002.wav new file mode 100644 index 0000000000000000000000000000000000000000..2ef68f15c22d9966081f923c53926f1b464b7fc2 GIT binary patch literal 49614 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 eiun2GUF5U>&VQq%``1OE$Ui7o5^ literal 0 HcmV?d00001 diff --git a/lunabase/addons/kenney_interface_sounds/confirmation_002.wav.import b/lunabase/addons/kenney_interface_sounds/confirmation_002.wav.import new file mode 100644 index 00000000..e67678d3 --- /dev/null +++ b/lunabase/addons/kenney_interface_sounds/confirmation_002.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://dpp0287wnfjsc" +path="res://.godot/imported/confirmation_002.wav-73fe748f66ffd31b01fbcf2befa1842b.sample" + +[deps] + +source_file="res://addons/kenney_interface_sounds/confirmation_002.wav" +dest_files=["res://.godot/imported/confirmation_002.wav-73fe748f66ffd31b01fbcf2befa1842b.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/lunabase/addons/kenney_interface_sounds/error_002.wav b/lunabase/addons/kenney_interface_sounds/error_002.wav new file mode 100644 index 0000000000000000000000000000000000000000..3bcb6e90959f971d874ca1baaca3514bd2c9bbb3 GIT binary patch literal 29262 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 K_}YJq|Neh|w1_4E literal 0 HcmV?d00001 diff --git a/lunabase/addons/kenney_interface_sounds/error_002.wav.import b/lunabase/addons/kenney_interface_sounds/error_002.wav.import new file mode 100644 index 00000000..88f9369a --- /dev/null +++ b/lunabase/addons/kenney_interface_sounds/error_002.wav.import @@ -0,0 +1,24 @@ +[remap] + +importer="wav" +type="AudioStreamWAV" +uid="uid://cephremnedhtp" +path="res://.godot/imported/error_002.wav-0ace3396c9a9a4a935dcc15d3408b216.sample" + +[deps] + +source_file="res://addons/kenney_interface_sounds/error_002.wav" +dest_files=["res://.godot/imported/error_002.wav-0ace3396c9a9a4a935dcc15d3408b216.sample"] + +[params] + +force/8_bit=false +force/mono=false +force/max_rate=false +force/max_rate_hz=44100 +edit/trim=false +edit/normalize=false +edit/loop_mode=0 +edit/loop_begin=0 +edit/loop_end=-1 +compress/mode=0 diff --git a/lunabase/ffmpeg.gd b/lunabase/ffmpeg.gd new file mode 100644 index 00000000..780a887f --- /dev/null +++ b/lunabase/ffmpeg.gd @@ -0,0 +1,115 @@ +extends Node + + +signal image_received(Image) + + +const IMAGE_WIDTH := 1280 +const IMAGE_HEIGHT := 720 +const IMAGE_SIZE := IMAGE_HEIGHT * IMAGE_WIDTH * 3 + +#var thr := Thread.new() +#var udp_sender := PacketPeerUDP.new() +var tcp_server := TCPServer.new() +var ffmpeg_tcp: StreamPeerTCP +var buffer := PackedByteArray() + +var send_from: int +#var send_to: int + + +func subprocess(): + var output := [] + var err := OS.execute( + "ffmpeg", +# [ +# "-f", "mpegts", +# "-c:v", "libvpx-vp9", +# "-i", "udp://127.0.0.1:%s" % send_to, +# "-f", "rawvideo", +# "-pix_fmt", "rgb24", +# "udp://127.0.0.1:%s" % send_from +# ], + [ + "-f", "mpegts", + "-c:v", "libvpx-vp9", + "-b:v", "1500k", + "-i", "tcp://127.0.0.1:%s" % send_from, + "-c", "copy", + "-map", "0", + "-f", "segment", + "-segment_time", "5", + "-segment_format", "matroska", + "capture-%03d.mkv", + + ], +# output, +# true + [], + false, + true + ) + + if err != OK: + push_error(output[0]) + + +func _ready() -> void: + send_from = randi_range(10000, 65000) +# send_to = randi_range(10000, 65000) + if tcp_server.listen(send_from, "127.0.0.1") != OK: + push_error("Failed to start FFMPEG TCP Server") +# udp_sender.bind(send_from, "127.0.0.1") +# udp_sender.set_dest_address("127.0.0.1", send_to) +# thr.start(subprocess) + OS.create_process( + "ffmpeg", +# [ +# "-f", "mpegts", +# "-c:v", "libvpx-vp9", +# "-i", "udp://127.0.0.1:%s" % send_to, +# "-f", "rawvideo", +# "-pix_fmt", "rgb24", +# "udp://127.0.0.1:%s" % send_from +# ], + [ + "-v", "debug", +# "-f", "mpegts", +# "-c:v", "libvpx-vp9", + "-i", "tcp://127.0.0.1:%s" % send_from, + "-f", "matroska", + "out.mkv" + ], + true + ) + + +func _process(_delta: float) -> void: + if ffmpeg_tcp == null and tcp_server.is_connection_available(): + ffmpeg_tcp = tcp_server.take_connection() +# if udp_sender.get_available_packet_count() == 0: +# return +# +# print_debug("receivedee") +# for _i in range(udp_sender.get_available_packet_count()): +# buffer.append_array(udp_sender.get_packet()) +# if buffer.size() >= IMAGE_SIZE: +# var img := Image.create_from_data(IMAGE_WIDTH, IMAGE_HEIGHT, false,Image.FORMAT_RGB8, buffer.slice(0, IMAGE_SIZE)) +# buffer = buffer.slice(IMAGE_SIZE) +# image_received.emit(img) +# print_debug("received") + + +func process_data(data: PackedByteArray): + if ffmpeg_tcp == null: + push_error("Failed to send to FFMPEG") + return + ffmpeg_tcp.put_data(data) +# ffmpeg_tcp.disconnect_from_host() +# ffmpeg_tcp = null + + +func _exit_tree() -> void: + if ffmpeg_tcp != null: + ffmpeg_tcp.disconnect_from_host() +# thr.wait_to_finish() diff --git a/lunabase/lunabot.gd b/lunabase/lunabot.gd index cb0c8cc4..fd06df5c 100644 --- a/lunabase/lunabot.gd +++ b/lunabase/lunabot.gd @@ -1,10 +1,11 @@ extends Node -const USE_ARCHIMEDES := true +const RECV_FROM := 43762 +const USE_ARCHIMEDES := false enum Channels { IMPORTANT, CAMERA, ODOMETRY, CONTROLS, MAX } -enum ImportantMessage { ENABLE_CAMERA, DISABLE_CAMERA } +enum ImportantMessage { ENABLE_CAMERA, DISABLE_CAMERA, PING } signal connected signal disconnected @@ -29,7 +30,7 @@ func _ready() -> void: controls_data = PackedByteArray([0, 0, 0]) server = ENetConnection.new() - var err := server.create_host_bound("*", 43721, 1, 0, 0, 0) + var err := server.create_host_bound("*", RECV_FROM, 1, 0, 0, 0) if err != OK: push_error("Failed to start ENet Server: " + str(err)) return @@ -46,11 +47,21 @@ func is_lunabot_connected() -> bool: func _run_thr(): + var last_receive_time := Time.get_ticks_msec() + var pinged := false while running: var result: Array = server.service(200) lunabot_mutex.lock() if lunabot != null: + if not pinged and Time.get_ticks_msec() - last_receive_time >= 3000: + pinged = true + lunabot.send( + Channels.IMPORTANT, + PackedByteArray([ImportantMessage.PING]), + ENetPacketPeer.FLAG_RELIABLE + ) + call_deferred( "emit_signal", "network_statistics", @@ -89,15 +100,31 @@ func _run_thr(): continue lunabot = null lunabot_mutex.unlock() + push_error("Lost connection to lunabot!") call_deferred("emit_signal", "disconnected") ENetConnection.EventType.EVENT_RECEIVE: + last_receive_time = Time.get_ticks_msec() + pinged = false _on_receive(channel) lunabot_mutex.lock() if echo_controls: raw_send_unreliable(Channels.CONTROLS, controls_data) lunabot_mutex.unlock() + + if lunabot != null: + lunabot_mutex.lock() + lunabot.peer_disconnect() + while true: + var result: Array = server.service(200) + var event_type: ENetConnection.EventType = result[0] + + if event_type == ENetConnection.EventType.EVENT_DISCONNECT: + break + lunabot_mutex.unlock() + + server.destroy() func _on_receive(channel: int) -> void: @@ -107,16 +134,10 @@ func _on_receive(channel: int) -> void: match channel: Channels.IMPORTANT: - # TODO pass Channels.CAMERA: - var frame := Image.new() - var err := frame.load_webp_from_buffer(data) - if err != OK: - push_error("Bad frame: " + str(err)) - return - call_deferred("emit_signal", "camera_frame_received", frame) + Ffmpeg.process_data(data) Channels.ODOMETRY: var x := data.decode_float(0) diff --git a/lunabase/main.tscn b/lunabase/main.tscn index 8a9bd9f8..fdf49715 100644 --- a/lunabase/main.tscn +++ b/lunabase/main.tscn @@ -1,4 +1,7 @@ -[gd_scene load_steps=11 format=3 uid="uid://b8qgudi6vkflb"] +[gd_scene load_steps=13 format=3 uid="uid://b8qgudi6vkflb"] + +[ext_resource type="AudioStream" uid="uid://dpp0287wnfjsc" path="res://addons/kenney_interface_sounds/confirmation_002.wav" id="1_hl7kb"] +[ext_resource type="AudioStream" uid="uid://cephremnedhtp" path="res://addons/kenney_interface_sounds/error_002.wav" id="2_kejy0"] [sub_resource type="GDScript" id="GDScript_45865"] script/source = "extends MarginContainer @@ -8,6 +11,8 @@ func _ready() -> void: set_process_input(false) Lunabot.connected.connect(func(): set_process_input(true)) Lunabot.disconnected.connect(func(): set_process_input(false)) + Lunabot.connected.connect($Connected.play) + Lunabot.disconnected.connect($Disconnected.play) func _input(event: InputEvent) -> void: @@ -250,5 +255,11 @@ grow_vertical = 2 layout_mode = 2 text = "Click to Drive" +[node name="Connected" type="AudioStreamPlayer" parent="."] +stream = ExtResource("1_hl7kb") + +[node name="Disconnected" type="AudioStreamPlayer" parent="."] +stream = ExtResource("2_kejy0") + [connection signal="pressed" from="Control/VBoxContainer/HBoxContainer/EnableCamera" to="Control/VBoxContainer/HBoxContainer/EnableCamera" method="_on_pressed"] [connection signal="mouse_exited" from="Control/VBoxContainer/VBoxContainer/AspectRatioContainer/TextureRect" to="Control/VBoxContainer/VBoxContainer/AspectRatioContainer/TextureRect" method="_on_mouse_exited"] diff --git a/lunabase/out.mkv b/lunabase/out.mkv new file mode 100644 index 00000000..e69de29b diff --git a/lunabase/project.godot b/lunabase/project.godot index c693e184..34d22f65 100644 --- a/lunabase/project.godot +++ b/lunabase/project.godot @@ -18,6 +18,7 @@ config/icon="res://icon.png" [autoload] Lunabot="*res://lunabot.gd" +Ffmpeg="*res://ffmpeg.gd" [display] @@ -70,4 +71,5 @@ SpinDrumCounterClockwise={ [rendering] +renderer/rendering_method="mobile" environment/defaults/default_clear_color=Color(0.0588235, 0.0588235, 0.0588235, 1) From 6e2db32f1d19065844f1afc47797bd7f088d3c6a Mon Sep 17 00:00:00 2001 From: Manglemix Date: Fri, 22 Sep 2023 16:38:59 -0600 Subject: [PATCH 2/2] remove out.mkv --- lunabase/out.mkv | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 lunabase/out.mkv diff --git a/lunabase/out.mkv b/lunabase/out.mkv deleted file mode 100644 index e69de29b..00000000