別のデータ構造の一部として AudioClip をファイルにシリアル化する必要がありますが、残念ながら AudioClip はシリアル化できないようです。プロキシとしてシリアル化できるオブジェクトはありますか。必要に応じて AudioClip 間を行き来できるものはありますか?
この単純なコード/クラスを試しました
import java.applet.AudioClip;
import java.io.FileOutputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.net.URL;
import javax.swing.JApplet;
public class RandomClass implements Serializable {
private AudioClip myAudioClip;
private int RandomInteger;
private String RandomString;
public RandomClass(String soundpath){
soundpath = soundpath.replace(" ", "%20");
soundpath = soundpath.replace("\\", "/");
try{
URL sound = new URL("file:/"+soundpath);
myAudioClip = JApplet.newAudioClip(sound);
}catch(Exception e){
e.printStackTrace();
}
}
public void serializeMe(){
try{
FileOutputStream fout = new FileOutputStream("c:\\serialized.ser");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(this);
oos.close();
}catch(Exception ex){
ex.printStackTrace();
}
}
public static void main(String args[]){
RandomClass d = new RandomClass("C:\\audioclip.wav");
d.serializeMe();
}
}
java.io.NotSerializableException: sun.applet.AppletAudioClip が発生します。
私が実際に望んでいるのは、オーディオクリップを他のメンバーオブジェクトまたはタイプとともに単一のシリアル化されたファイルに保存することです。そのため、ファイル (実際にはこれらの RandomClass オブジェクトの arrayList を含む) をリロードするたびに、元のオーディオクリップをハードドライブに保持する必要なく、これらの各 RandomClass オブジェクトのすべてのデータ メンバーを取得できます (つまり、何らかの種類のオーディオ クリップを作成したい)。データ メンバーの一部として audioclip を含むオブジェクトのアーカイブ)。また、オーディオ クリップをハード ドライブに *.wav として保存しなくても再生できるようにする必要があります。VLC が各クリップを抽出することなく、zip ファイル内のプレイリスト全体を再生できるのと同じように。何か案は?
ありがとう、