HSPポータル
サイトマップ お問い合わせ


HSPTV!掲示板


未解決 解決 停止 削除要請

2021
1001
はるhsp3dishのアンドロイド版::アプリ内で編集したwavファイルを再生できません6解決


はる

リンク

2021/10/1(Fri) 19:29:12|NO.94031

はじめまして。

hsp3dishでアンドロイドアプリを作り始めて、ボタン表示、wav再生までは
問題なくできたのですが、bloadで読み込んだwavファイルを編集して、bsave
で保存したwavファイルをmmloadで読み込もうとすると、アプリが強制終了
してしまいます。
例えば下記のようなスクリプトです。


sdim buf,100000 bload "test1.wav",buf bsave "test2.wav",buf mmload "test2.wav",1 mmplay 1

assetsフォルダにtest1.wavを入れてビルドすると、test1.wavは
再生できました。
また保存されたtest2.wavをexistで確認すると、存在することは
確認できました。
mmloadだけが何らかの原因でエラーとなってしまうようです。

開発環境は『しまくろねこ』さんのホームページを参考にさせて
いただきました。
Windows10、JDK8、SDK25.2.5、NDKr17、Ant1.10.11、android10 API-29です。

アンドロイド使用機種はSHARP AQUOS SW001SH Android6.0.1です。
念のためAmazon FireHD8 Android9にインストールしましたが、同じ症状でした。

どうぞよろしくお願い申し上げます。



この記事に返信する


猪野

リンク

2021/10/2(Sat) 15:15:42|NO.94035

実機で検証したわけではないので、無関係なことを言っていたらすみません。

sdimの文字数をリテラルにした上でbload/bsaveのサイズ指定を省略していますが、これだと元ファイルの一部しか読み込めていないか、書き出しサイズが余分に膨らんでいる可能性があります。
このようにしても変わりませんか?

exist "test1.wav" size=strsize sdim buf,size bload "test1.wav",buf,size bsave "test2.wav",buf,size mmload "test2.wav",1 mmplay 1



はる

リンク

2021/10/2(Sat) 21:04:30|NO.94036

猪野様

どうもありがとうございます。

こちらの説明が不正確で申し訳ありません。
正確には猪野様のご指摘の通りです。

具体的には、過去ログを参考にさせていただき、ファイルサイズを指定した上で
bloadを行い、複数のwavファイルを結合(各チャンクデータのサイズを求めて、
データチャンクを結合)してbsaveを行うスクリプトを作成致しました。

Windows10の環境では、作成したスクリプトにより問題なく結合したwavファイルが
再生されました。
また、作成されたwavファイルを、ffmpegで無劣化結合したwavファイルの波形
データと比較しても同等のwavファイルが作成されていることが確認できました。

また、念のためにアンドロイド実機上で

 /mnt/sdcard/Android/data/hspxxx.xxx/files/xxx.wav 

のようにパスを指定して保存したwavファイルを確認したところ、一般的な再生
アプリでは再生することが可能でした。

何分にもandroidのプログラミングは初心者なので、他に見落としている部分が
あるかもしれません。
ご教示頂けましたら幸いです。



猪野

リンク

2021/10/3(Sun) 10:53:34|NO.94037

こちらこそ失礼しました。
生成されたファイルに問題はなさそうですね。

アプリ固有の内部ストレージでは大きなファイルが扱えないこともあると聞きますが、固有の外部ストレージに保存しても再生されないならそれとも違うようです。
保存先に内部の共有ストレージを指定した場合はどうですか?

以下サンプルですが、こちらでは試せていないので不備があるかもしれません。

public="/storage/emulated/0" music=public+"/Music" dummy="" exist "test1.wav" sdim buf,strsize bload "test1.wav",buf chdir public dirlist dummy,"Music",5 if stat=0 { mkdir music } bsave music+"/test2.wav",buf mmload music+"/test2.wav",1 mmplay 1



はる

リンク

2021/10/3(Sun) 15:36:45|NO.94040

猪野様

お忙しい中、どうもありがとうございます。

念のため、PermissionにREAD_EXTERNAL_STORAGEを加えてビルドしましたが、
そもそも"/storage/emulated/0/Music/"等の共有ストレージに対する読み書きは
不可能でした。
これはhsp3dishの仕様なのかもしれません。



ふゆ

リンク

2021/10/3(Sun) 21:05:55|NO.94041

いや、悪質なバグだろ



はる

リンク

2021/10/11(Mon) 20:43:14|NO.94132

問い合わせましたところ、今後のバージョンアップで検証、確認を行って
頂けるとのことでした。

したがって、当面は他の言語で対応する予定です。

どうもありがとうございました。



ONION software Copyright 1997-2023(c) All rights reserved.