私はビデオストリーミングアプリケーションに取り組んでいます。サーバー上でm3u8ファイルを保護しました。暗号化されたtsファイル(AES-128暗号化)が含まれています。安全なm3u8ファイルを解析してから、tsファイルをダウンロードして復号化します。
復号化されたすべてのファイルをデバイスの外部ストレージの場所に保存します。次に、復号化されたすべての ts ファイルを指す新しい m3u8 ファイルを作成します。
NanoHTTPDクラスを使用して、デバイス自体にカスタム サーバーを作成しています。これは、復号化されたすべての ts ファイルと新しい m3u8 ファイルを配置したディレクトリを指しています。
次にVideoView
、カスタム サーバー上の m3u8 ファイルの URL を使用して渡します。
再生を開始するVideoView
とビデオは正常に開始されますが、しばらくすると「このビデオを再生できません」というエラー メッセージが表示されます。
ログにこのメッセージが表示されます
01-15 18:53:52.072: W/AudioSystem(16009): AudioFlinger server died!
01-15 18:53:52.072: W/IMediaDeathNotifier(16009): media server died
01-15 18:53:52.072: E/MediaPlayer(16009): error (100, 0)
01-15 18:53:52.072: E/MediaPlayer(16009): Error (100,0)
01-15 18:53:52.072: D/VideoView(16009): Error: 100,0
問題がどこにあるのかわかりません。私のサーバーまたはVideoViewで。
暗号化されたすべての ts ファイルが適切に復号化されていることを確認しました。カスタム サーバーの m3u8 URL を Android プレーヤーで再生したところ、完全に動作しました。
Apple のサンプルm3u8 urlも試しました。ここでは、ts ファイルをダウンロードして、独自の m3u8 ファイルを動的に作成します。正常に動作します。
どこで、何が間違っているのか教えてください。