mirror of
https://github.com/Orama-Interactive/Pixelorama.git
synced 2025-03-14 23:35:17 +00:00
Support WAV files in audio layers
Now possible thanks to Godot 4.4
This commit is contained in:
parent
ec37e6df43
commit
a4973acc68
6 changed files with 31 additions and 9 deletions
|
@ -539,11 +539,18 @@ func export_video(export_paths: PackedStringArray, project: Project) -> bool:
|
|||
var max_audio_duration := 0
|
||||
var adelay_string := ""
|
||||
for layer in project.get_all_audio_layers():
|
||||
if layer.audio is AudioStreamMP3:
|
||||
var temp_file_name := str(audio_layer_count + 1).pad_zeros(number_of_digits) + ".mp3"
|
||||
if layer.audio is AudioStreamMP3 or layer.audio is AudioStreamWAV:
|
||||
var temp_file_name := str(audio_layer_count + 1).pad_zeros(number_of_digits)
|
||||
if layer.audio is AudioStreamMP3:
|
||||
temp_file_name += ".mp3"
|
||||
elif layer.audio is AudioStreamWAV:
|
||||
temp_file_name += ".wav"
|
||||
var temp_file_path := temp_path_real.path_join(temp_file_name)
|
||||
var temp_audio_file := FileAccess.open(temp_file_path, FileAccess.WRITE)
|
||||
temp_audio_file.store_buffer(layer.audio.data)
|
||||
if layer.audio is AudioStreamMP3:
|
||||
var temp_audio_file := FileAccess.open(temp_file_path, FileAccess.WRITE)
|
||||
temp_audio_file.store_buffer(layer.audio.data)
|
||||
elif layer.audio is AudioStreamWAV:
|
||||
layer.audio.save_to_wav(temp_file_path)
|
||||
ffmpeg_combine_audio.append("-i")
|
||||
ffmpeg_combine_audio.append(temp_file_path)
|
||||
var delay := floori(layer.playback_position * 1000)
|
||||
|
|
|
@ -53,7 +53,7 @@ func handle_loading_file(file: String, force_import_dialog_on_images := false) -
|
|||
var new_path := SHADERS_DIRECTORY.path_join(file.get_file())
|
||||
DirAccess.copy_absolute(file, new_path)
|
||||
shader_copied.emit(new_path)
|
||||
elif file_ext == "mp3": # Audio file
|
||||
elif file_ext == "mp3" or file_ext == "wav": # Audio file
|
||||
open_audio_file(file)
|
||||
|
||||
else: # Image files
|
||||
|
@ -474,6 +474,12 @@ func save_pxo_file(
|
|||
zip_packer.start_file(audio_path)
|
||||
zip_packer.write_file(layer.audio.data)
|
||||
zip_packer.close_file()
|
||||
elif layer.audio is AudioStreamWAV:
|
||||
var tmp_wav := FileAccess.create_temp(FileAccess.READ, "tmp", "wav")
|
||||
layer.audio.save_to_wav(tmp_wav.get_path())
|
||||
zip_packer.start_file(audio_path)
|
||||
zip_packer.write_file(tmp_wav.get_buffer(tmp_wav.get_length()))
|
||||
zip_packer.close_file()
|
||||
zip_packer.close()
|
||||
|
||||
if temp_path != path:
|
||||
|
@ -941,8 +947,11 @@ func set_new_imported_tab(project: Project, path: String) -> void:
|
|||
func open_audio_file(path: String) -> void:
|
||||
var audio_stream: AudioStream
|
||||
var file := FileAccess.open(path, FileAccess.READ)
|
||||
audio_stream = AudioStreamMP3.new()
|
||||
audio_stream.data = file.get_buffer(file.get_length())
|
||||
if path.get_extension().to_lower() == "mp3":
|
||||
audio_stream = AudioStreamMP3.new()
|
||||
audio_stream.data = file.get_buffer(file.get_length())
|
||||
elif path.get_extension().to_lower() == "wav":
|
||||
audio_stream = AudioStreamWAV.load_from_buffer(file.get_buffer(file.get_length()))
|
||||
if not is_instance_valid(audio_stream):
|
||||
return
|
||||
var project := Global.current_project
|
||||
|
|
|
@ -380,6 +380,8 @@ func deserialize(dict: Dictionary, zip_reader: ZIPReader = null, file: FileAcces
|
|||
if saved_layer.get("audio_type", "") == "AudioStreamMP3":
|
||||
stream = AudioStreamMP3.new()
|
||||
stream.data = audio_data
|
||||
elif saved_layer.get("audio_type", "") == "AudioStreamWAV":
|
||||
stream = AudioStreamWAV.load_from_buffer(audio_data)
|
||||
layer.audio = stream
|
||||
layers.append(layer)
|
||||
audio_layers += 1
|
||||
|
|
|
@ -200,6 +200,7 @@ layout_mode = 2
|
|||
disable_3d = true
|
||||
item_count = 2
|
||||
item_0/text = "Properties"
|
||||
item_0/id = 0
|
||||
item_1/text = "Clipping mask"
|
||||
item_1/checkable = 1
|
||||
item_1/id = 1
|
||||
|
|
|
@ -186,10 +186,13 @@ func _on_play_at_frame_slider_value_changed(value: float) -> void:
|
|||
|
||||
func _on_audio_file_dialog_file_selected(path: String) -> void:
|
||||
var audio_stream: AudioStream
|
||||
if path.get_extension() == "mp3":
|
||||
if path.to_lower().get_extension() == "mp3":
|
||||
var file := FileAccess.open(path, FileAccess.READ)
|
||||
audio_stream = AudioStreamMP3.new()
|
||||
audio_stream.data = file.get_buffer(file.get_length())
|
||||
elif path.to_lower().get_extension() == "wav":
|
||||
var file := FileAccess.open(path, FileAccess.READ)
|
||||
audio_stream = AudioStreamWAV.load_from_buffer(file.get_buffer(file.get_length()))
|
||||
for layer_index in layer_indices:
|
||||
var layer := Global.current_project.layers[layer_index]
|
||||
if layer is AudioLayer:
|
||||
|
|
|
@ -119,7 +119,7 @@ always_on_top = true
|
|||
ok_button_text = "Open"
|
||||
file_mode = 0
|
||||
access = 2
|
||||
filters = PackedStringArray("*.mp3 ; MP3 Audio")
|
||||
filters = PackedStringArray("*.mp3 ; MP3 Audio", "*.wav; WAV Audio")
|
||||
|
||||
[connection signal="visibility_changed" from="." to="." method="_on_visibility_changed"]
|
||||
[connection signal="text_changed" from="GridContainer/NameLineEdit" to="." method="_on_name_line_edit_text_changed"]
|
||||
|
|
Loading…
Add table
Reference in a new issue