要望
javascriptで動的に生成した音声をティラノスクリプトで再生させたいです。
playse(playbgm)タグのstorageにdata-urlやjavascriptのURL.createObjectURL(blob)で生成したオブジェクトurlを渡せるようにしたいです。
現状
ティラノスクリプトでは音楽を再生する方法として、playseやplaybgmタグが用意されています。
現在のコードを見ると、storageに音声ファイルのパス、もしくは、音声ファイルのhttpアドレスを指定できます。
ですが、バイナリデータをstorageに指定しても再生できません。
現在の実装は以下のようになっています。
playseのstorageに指定された文字列は、相対パスで指定されたものか、HTTPであるか判定されます。
HTTPであるかどうかは$.isHTTP()関数で判定しているようです。isHTTP関数では data-url形式かどうかをisBase64の関数で判定しています。
https://github.com/ShikemokuMK/tyranoscript/blob/c763ee2913307fd90f09461c98c2cc1efd2e481b/tyrano/libs.js#L15C1-L25C7
$.isHTTP = function (str) {
if ($.isBase64(str)) {
return true;
}
if (str.substring(0, 4) === "http") {
return true;
} else {
return false;
}
};
base64の判定は以下のような判定になっています。
https://github.com/ShikemokuMK/tyranoscript/blob/c763ee2913307fd90f09461c98c2cc1efd2e481b/tyrano/libs.js#L1302C3-L1310C7
$.isBase64 = function (str) {
if (!str) return false;
if (str.substr(0, 10) == "data:image") {
return true;
} else {
return false;
}
};
現在のこの実装では、data:imageのデータしか受け入れていないので、playbgmのタグでstorageにdata:audioで始まるbase64のバイナリデータを渡してもエラーになります。
修正案
以下のように修正すると動的に音声を再生できると思います。
$.isBase64 = function (str) {
if (!str || typeof str !== 'string') return false;
return str.startsWith("data:image") || str.startsWith("data:audio") || str.startsWith("data:video")
}
要望
javascriptで動的に生成した音声をティラノスクリプトで再生させたいです。
playse(playbgm)タグのstorageにdata-urlやjavascriptの
URL.createObjectURL(blob)で生成したオブジェクトurlを渡せるようにしたいです。現状
ティラノスクリプトでは音楽を再生する方法として、playseやplaybgmタグが用意されています。
現在のコードを見ると、storageに音声ファイルのパス、もしくは、音声ファイルのhttpアドレスを指定できます。
ですが、バイナリデータをstorageに指定しても再生できません。
現在の実装は以下のようになっています。
playseのstorageに指定された文字列は、相対パスで指定されたものか、HTTPであるか判定されます。
HTTPであるかどうかは$.isHTTP()関数で判定しているようです。isHTTP関数では data-url形式かどうかを
isBase64の関数で判定しています。https://github.com/ShikemokuMK/tyranoscript/blob/c763ee2913307fd90f09461c98c2cc1efd2e481b/tyrano/libs.js#L15C1-L25C7
base64の判定は以下のような判定になっています。
https://github.com/ShikemokuMK/tyranoscript/blob/c763ee2913307fd90f09461c98c2cc1efd2e481b/tyrano/libs.js#L1302C3-L1310C7
現在のこの実装では、
data:imageのデータしか受け入れていないので、playbgmのタグでstorageにdata:audioで始まるbase64のバイナリデータを渡してもエラーになります。修正案
以下のように修正すると動的に音声を再生できると思います。