我正在开发一个视频流应用程序。在服务器上,我保护了 m3u8 文件。其中包含加密的 ts 文件(AES-128 加密)。我正在解析安全的 m3u8 文件,然后我下载 ts 文件并解密它们。
我将所有解密的文件存储在设备的外部存储位置。然后我创建一个新的 m3u8 文件,它指向所有解密的 ts 文件。
我正在使用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 播放器,它运行良好。
我也尝试过来自苹果的示例m3u8 url,在这里我只是下载 ts 文件并动态创建我自己的 m3u8 文件。它工作正常。
请指导我在哪里以及我做错了什么。