私は、IsolatedStorageFileStreamから継承したXorIsoStoreFileStreamというクラスがあります。このクラスを使用すると、stuffはXORの "暗号化"で書き込まれます。それをXORします。例:IsolatedStorageFileStreamから継承したカスタムストリームを使用したMediaElementのSetSource
public override int Read(byte[] buffer, int offset, int count)
{
int startbyte = (int)base.Position;
int readlength = base.Read(buffer, offset, count);
xor(startbyte, buffer);
return readlength;
}
これは、プログラム内の他の場所で問題なく動作しているようです。今、私はそこからmp3ファイルを再生する必要があり、オーバーライドされたReadとReadByteのために、SetSourceにIsolatedStorageFileStreamを与えた場合と同じように動作するはずです。それは私のXorクラスを取ることはありません。私が演奏すると、SetSource行でNotSupportedExceptionにヒットします。 "ストリームはIsolatedStorageFileStream型でなければなりません"。
using(var appStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
if(appStorage.FileExists(path))
{
using(var stream = new XorIsoStoreFileStream(path, FileMode.Open, appStorage))
{
App.MainAudioPlayer.SetSource(stream); // how to put Xor stream here?
}
}
}
SetSource自体のように、上書きできるものはありますか?それが助けになるようには思われません。
MediaStreamSourceを実装する必要がありますか?それは巨大な過度の過失、車輪の改革などのようです。
これはうまくいかないのでしょうか?ファイルの復号化された部分を一時的な場所に保存し、SetSourceを通常のIsolatedStorageFileStreamに保存する必要がありますか?
応答ありがとう、Dennis!しかし、ディスク上に完全に読み込み可能なファイルを持っていないことは必須条件です...作業中の 'IsolatedStorageFileStream'を渡すとどうしたらいいですか?私はそれを吸い取って 'MediaStreamSource'を使用しなければならないかもしれませんが、私は見ていない他のトリックや回避策が本当にあることを期待していました。 – Nagisa
しかし、すでにローカルストレージからファイルをロードしていますが、私はそうでしょうか?だからすでにどこかに保存されている。 –
はい、Xorクラスは(インターネットからの)ファイルを隔離されたストレージにも保存していますので、すべてxorされ、MediaElementはそれを解読しない通常のストリームを使用しているときと同じように再生できません。 – Nagisa