ADX2スクリプトで16bit44100Hzに変換
はじめに
前回原音再生をやってみたのですが、
どうもPyAudioだと32bitFloat波形が読めないようなので、
選択中のマテリアルを16bit44100Hzにすることで対処した。
環境:CRI AotmCraft 3.45.00
説明
変換したいマテリアルをツリーで選択し、スクリプトを実行する。
あらかじめffmpegのインストールが必要かもです。(自分の環境では入れていたので未確認)
破壊的な操作なので中間ファイル(_bak)など
万が一の時のために生成していますが、不要なら削除してください。
(無いように書くこともできるけど、元波形が失われる操作なので注意)
プログラムで消すと後で戻せないから本当に要らなくなった時に手動で消すのが安全
スクリプト
backup_folder のパスは適宜変えてください。
ffmpeg-pythonを使って
wav to wav変換しています。
(レートの指定も外したかったけど、外すと変なファイルができてしまうようでした)
# --Description:[tatmos][Conv]マテリアルを16bit44100Hzに変換する
import ffmpeg
import shutil
import os
import cri.atomcraft.project as acproject
import cri.atomcraft.debug as acdebug
#元波形のコピー先
backup_folder = "C:/MyDearest/backup/"
selectedMaterials = acproject.get_selected_objects("Material")["data"]
if len(selectedMaterials) == 0:
acdebug.warning("変換するマテリアルを選択してください。")
sys.exit()
for selectedMaterial in selectedMaterials:
input_path = acproject.get_value(selectedMaterial, "SrcFileAbsolutePath")["data"]
print(input_path)
print(src_path)
#元ファイルをコピー(作業フォルダへコピー)
src_path = backup_folder + os.path.basename(input_path)
shutil.copyfile(input_path, src_path)
#元ファイルリネーム(念のためその場にもバックアップファイル化)
os.rename(input_path,input_path + "_bak")
#16bit44100Hzに変換する
stream = ffmpeg.input(src_path)
stream = ffmpeg.output(stream, input_path, f='wav',ar=44100,acodec='pcm_s16le')
ffmpeg.run(stream)
Author And Source
この問題について(ADX2スクリプトで16bit44100Hzに変換), 我々は、より多くの情報をここで見つけました https://qiita.com/tatmos/items/662a0b29135bca225cda著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .