Project Requirement: Music player app which will download audio files, encrypt and save them. The audio files should be playable in the app only. No other app should be able to play the files. Nor the user should be able to copy the files.
Approach: I don't want the entire decryted audio file to exist at any moment. So I want to encrypt the audio file as soon as it is downloaded. Then when the file is to be played, I want it to be decrypted chunk-by-chunk and played. I believe this can be achieved by using stream. As far as I searched, a package named "just_audio" can play the audio from stream source.
Problem: I cannot find any encryption package for Flutter/Dart which will output the decrypted data in the form of a stream. This is the first time I am trying to implement encryption/decryption, so my knowledge is very poor in this regard.
Notes:
- The encryption does not need to be heavy. A typical user not being able to copy the files and play them elsewhere would suffice.
- Audio files are going to be large, some of them even hours in length.
- I need all the usual functions of a music player (e.g. albums, playlists, progress bars with seeking function, etc.)
Options:
- It will be best if there is a package which can do what I need, off the shelf.
- To find a basic package and then modifying it into doing what is needed.
- Some radically different solution, which takes entirely different path but provides all the solutions.