diff --git a/godot/PlayVideoRecordAudio.gd b/godot/PlayVideoRecordAudio.gd index 410e857..0675c05 100644 --- a/godot/PlayVideoRecordAudio.gd +++ b/godot/PlayVideoRecordAudio.gd @@ -8,15 +8,26 @@ extends Control var spectrum_play var spectrum_record var recorder -var recording +var raw_recording +var raw_recording_data +var playable_recording_data + +var position_changing_by_code # Called when the node enters the scene tree for the first time. func _ready(): + #var GDS = VideoStreamGDNative.new() + #GDS.set_file(OS.get_user_data_dir()+"/converted.mpg") + #$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.set_stream(load(GDS.get_file())) $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.set_stream(load(OS.get_user_data_dir()+"/converted.webm")) + print($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream.to_string()) + #$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.max_value = 364 + #print($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.to_string()) var idx = AudioServer.get_bus_index("Record") recorder = AudioServer.get_bus_effect(idx, 0) spectrum_play = AudioServer.get_bus_effect_instance(0,0) spectrum_record = AudioServer.get_bus_effect_instance(1,1) + position_changing_by_code = false # Called every frame. 'delta' is the elapsed time since the previous frame. @@ -27,11 +38,18 @@ func _process(delta): magnitude = spectrum_record.get_magnitude_for_frequency_range(0,11050.0).length() energy = clamp((60 + linear2db(magnitude)) / 60, 0, 1) $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer2/RecordMeter.value = energy * 100 + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2/VideoPos.text = "Video Pos : "+String($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position) + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2/AudioPos.text = "Audio Pos : "+String($AudioStreamPlayer.get_playback_position()) + if !position_changing_by_code: + position_changing_by_code = true + #$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.value = $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position + position_changing_by_code = false + func _on_RecButton_pressed(): if recorder.is_recording_active(): $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stop() - recording = recorder.get_recording() + raw_recording = recorder.get_recording() $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PlayButton.disabled = false recorder.set_recording_active(false) $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/RecordButton.text = "Record" @@ -45,7 +63,39 @@ func _on_RecButton_pressed(): func _on_PlayButton_pressed(): - var data = recording.get_data() - $AudioStreamPlayer.stream = recording + var data = raw_recording.get_data() + $AudioStreamPlayer.stream = raw_recording $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.play() $AudioStreamPlayer.play() + #$MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider.editable = true + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider.editable = true + + +func _on_BackgroundaudioSlider_changed(value): + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.volume_db = linear2db(value/100) + + +func _on_VocalSlider_value_changed(value): + $AudioStreamPlayer.volume_db = linear2db(value/100) + + +func _on_DelaySlider_value_changed(value): + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/Label.text = "Audio Delay: "+String(value/1000)+"s" + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = true + $AudioStreamPlayer.stream_paused = true + $AudioStreamPlayer.seek($MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.stream_position + value/1000) + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = false + $AudioStreamPlayer.stream_paused = false + pass # Replace with function body. + + +func _on_VideoPosSlider_value_changed(value): + if !position_changing_by_code: + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = true + $AudioStreamPlayer.stream_paused = true + position_changing_by_code = true + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.streamseek(value) + $AudioStreamPlayer.seek(value + $MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider.value/1000) + $MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPlayer.paused = false + position_changing_by_code = false + $AudioStreamPlayer.stream_paused = false diff --git a/godot/PlayVideoRecordAudio.tscn b/godot/PlayVideoRecordAudio.tscn index 8443f18..5158dcc 100644 --- a/godot/PlayVideoRecordAudio.tscn +++ b/godot/PlayVideoRecordAudio.tscn @@ -77,10 +77,20 @@ alignment = 1 [node name="VideoPlayer" type="VideoPlayer" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"] margin_right = 1013.0 -margin_bottom = 281.0 +margin_bottom = 261.0 size_flags_horizontal = 3 size_flags_vertical = 3 +[node name="VideoPosSlider" type="HSlider" parent="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer"] +margin_top = 265.0 +margin_right = 1013.0 +margin_bottom = 281.0 +rect_min_size = Vector2( 500, 0 ) +size_flags_horizontal = 3 +max_value = 10.0 +step = 0.01 +editable = false + [node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer"] margin_top = 309.0 margin_right = 1013.0 @@ -97,28 +107,28 @@ size_flags_vertical = 3 alignment = 1 [node name="RecordButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_top = 89.0 +margin_top = 28.0 margin_right = 1013.0 -margin_bottom = 109.0 +margin_bottom = 48.0 text = "Record" [node name="PlayButton" type="Button" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_top = 113.0 +margin_top = 52.0 margin_right = 1013.0 -margin_bottom = 133.0 +margin_bottom = 72.0 disabled = true text = "Play" [node name="Status" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_top = 137.0 +margin_top = 76.0 margin_right = 1013.0 -margin_bottom = 152.0 +margin_bottom = 91.0 fit_content_height = true [node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_top = 156.0 +margin_top = 95.0 margin_right = 1013.0 -margin_bottom = 172.0 +margin_bottom = 111.0 [node name="Playbacklabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer"] margin_right = 110.0 @@ -141,9 +151,9 @@ texture_progress = ExtResource( 4 ) nine_patch_stretch = true [node name="HBoxContainer2" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] -margin_top = 176.0 +margin_top = 115.0 margin_right = 1013.0 -margin_bottom = 192.0 +margin_bottom = 131.0 [node name="Recordlabel" type="RichTextLabel" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer2"] margin_right = 110.0 @@ -162,6 +172,99 @@ size_flags_vertical = 0 texture_progress = ExtResource( 4 ) nine_patch_stretch = true +[node name="HBoxContainer3" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] +margin_top = 135.0 +margin_right = 1013.0 +margin_bottom = 235.0 + +[node name="HBoxContainer" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3"] +margin_right = 620.0 +margin_bottom = 100.0 + +[node name="BackgroundaudioSlider" type="VSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"] +margin_right = 16.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 0, 100 ) +value = 50.0 + +[node name="VocalSlider" type="VSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"] +margin_left = 20.0 +margin_right = 36.0 +margin_bottom = 100.0 +rect_min_size = Vector2( 0, 100 ) +max_value = 100.0 +value = 50.0 + +[node name="VBoxContainer" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"] +margin_left = 40.0 +margin_right = 540.0 +margin_bottom = 100.0 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer"] +margin_right = 500.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +text = "Audio Delay : 0s" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="DelaySlider" type="HSlider" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer"] +margin_top = 18.0 +margin_right = 500.0 +margin_bottom = 34.0 +rect_min_size = Vector2( 500, 0 ) +size_flags_horizontal = 3 +max_value = 1000.0 +editable = false + +[node name="VBoxContainer2" type="VBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer"] +margin_left = 544.0 +margin_right = 620.0 +margin_bottom = 100.0 + +[node name="AudioPos" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2"] +margin_right = 76.0 +margin_bottom = 14.0 +size_flags_horizontal = 3 +text = "Audio Pos : " +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="VideoPos" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer2"] +margin_top = 18.0 +margin_right = 76.0 +margin_bottom = 49.0 +size_flags_horizontal = 3 +text = "Video Pos : +" +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="HBoxContainer4" type="HBoxContainer" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer"] +margin_top = 239.0 +margin_right = 1013.0 +margin_bottom = 253.0 + +[node name="Label" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer4"] +margin_right = 16.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 16, 0 ) +text = "B" +align = 1 +valign = 1 + +[node name="Label2" type="Label" parent="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer4"] +margin_left = 20.0 +margin_right = 36.0 +margin_bottom = 14.0 +rect_min_size = Vector2( 16, 0 ) +text = "V" +align = 1 +valign = 1 + [node name="AudioStreamRecorder" type="AudioStreamPlayer" parent="."] stream = SubResource( 1 ) autoplay = true @@ -169,5 +272,9 @@ bus = "Record" [node name="AudioStreamPlayer" type="AudioStreamPlayer" parent="."] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer2/Quit" to="MarginContainer/VBoxContainer/HBoxContainer2/Quit" method="_on_Quit_pressed"] +[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer/VBoxContainer/VideoPosSlider" to="." method="_on_VideoPosSlider_value_changed"] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/RecordButton" to="." method="_on_RecButton_pressed"] [connection signal="pressed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/PlayButton" to="." method="_on_PlayButton_pressed"] +[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/BackgroundaudioSlider" to="." method="_on_BackgroundaudioSlider_changed"] +[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VocalSlider" to="." method="_on_VocalSlider_value_changed"] +[connection signal="value_changed" from="MarginContainer/VBoxContainer/HBoxContainer3/VBoxContainer/HBoxContainer3/HBoxContainer/VBoxContainer/DelaySlider" to="." method="_on_DelaySlider_value_changed"] diff --git a/godot/default_env.tres b/godot/default_env.tres index 63922b4..6ce9cdb 100644 --- a/godot/default_env.tres +++ b/godot/default_env.tres @@ -4,7 +4,6 @@ resource_name = "SpectrumAnalyzer" [sub_resource type="AudioEffectRecord" id=4] -resource_name = "Record" [sub_resource type="AudioEffectSpectrumAnalyzer" id=3] resource_name = "SpectrumAnalyzer" diff --git a/godot/download_video.gd b/godot/download_video.gd index 0fae2d5..5ba4201 100644 --- a/godot/download_video.gd +++ b/godot/download_video.gd @@ -36,9 +36,9 @@ func _on_Control_ready(): # line = o.get_line() # print(line) #print(OS.get_user_data_dir()) - $HTTPRequest.request("http://127.0.0.1:10435/get?url=https://www.youtube.com/watch?v=x1T6QFpd0J4") #$HTTPRequest.request("http://127.0.0.1:10435/get?url=https://player.vimeo.com/video/459151338") #https://www.youtube.com/watch?v=x1T6QFpd0J4 + pass func _on_HTTPRequest_request_completed(result, response_code, headers, body): @@ -58,3 +58,8 @@ func _on_HTTPRequest_request_completed(result, response_code, headers, body): func _on_DownloadProgress_changed(): pass # Replace with function body. + + +func _on_Button_pressed(): + print("http://127.0.0.1:10435/get?url="+$HBoxContainer/TextEdit.text) + $HTTPRequest.request("http://127.0.0.1:10435/get?url="+$HBoxContainer/TextEdit.text) diff --git a/godot/download_video.tscn b/godot/download_video.tscn index 868ebc8..d2a3f5b 100644 --- a/godot/download_video.tscn +++ b/godot/download_video.tscn @@ -45,7 +45,41 @@ __meta__ = { margin_right = 624.0 margin_bottom = 14.0 +[node name="HBoxContainer" type="HBoxContainer" parent="."] +margin_left = 1.0 +margin_top = 379.0 +margin_right = 1023.0 +margin_bottom = 394.0 +__meta__ = { +"_edit_use_anchors_": false +} + +[node name="Label" type="Label" parent="HBoxContainer"] +margin_right = 45.0 +margin_bottom = 20.0 +rect_min_size = Vector2( 45, 0 ) +size_flags_vertical = 3 +text = "URL: " +valign = 1 + +[node name="TextEdit" type="TextEdit" parent="HBoxContainer"] +margin_left = 49.0 +margin_right = 985.0 +margin_bottom = 20.0 +size_flags_horizontal = 3 +text = "https://www.youtube.com/watch?v=x1T6QFpd0J4" + +[node name="Button" type="Button" parent="HBoxContainer"] +margin_left = 989.0 +margin_right = 1022.0 +margin_bottom = 20.0 +text = "GO" +__meta__ = { +"_edit_use_anchors_": false +} + [node name="HTTPRequest" type="HTTPRequest" parent="."] [connection signal="ready" from="." to="." method="_on_Control_ready"] [connection signal="changed" from="VBoxContainer2/DownloadProgress" to="." method="_on_DownloadProgress_changed"] +[connection signal="pressed" from="HBoxContainer/Button" to="." method="_on_Button_pressed"] [connection signal="request_completed" from="HTTPRequest" to="." method="_on_HTTPRequest_request_completed"] diff --git a/godot/startup.tscn b/godot/startup.tscn index 3a40495..4c741d9 100644 --- a/godot/startup.tscn +++ b/godot/startup.tscn @@ -32,7 +32,6 @@ margin_bottom = 612.0 texture = ExtResource( 1 ) [node name="SceneChangeTimer" type="Timer" parent="."] -wait_time = 5.0 one_shot = true [node name="StartDlServerTimer" type="Timer" parent="."]