Details
-
Task
-
Resolution: Out of scope
-
P2: Important
-
None
-
None
-
None
-
-
Multimedia Wk 13-14, Multimedia wk 15-16, Multimedia wk 17-18, Multimedia wk 19-20
Description
Brief introduction
Users want to play secure video streams via QMediaPlayer. QMediaPlayer accepts URL (local file, remote file or stream, and QIODevice - tested only for local cases).
Currently, ffmpeg implements all networking by itself, using one of the secure backends (currently, openssl on linux and android, secure transport on macOS and iOS, and some native secure API on Windows).
FFmpeg supports different video streaming protocols, see https://ffmpeg.org/ffmpeg-protocols.html.
FFmpeg API has the option to take a custom by AVIOContext, see avio_alloc_context, avformat_open_input.
Problems
- SecureTransport is a private API, and users cannot push their applications to app store on iOS.
- It's pretty tricky to deploy dynamically linked ffmpeg with openssl dependencies, the best solution hasn't been found yet.
Possible solutions
- Investigate whether QIODevice is sufficient for implementing video streams (we're afraid it's not). If sufficient, we might document how to use qt networking to set a proper socket or implement specific sockets, e.g. QRtspSocket.
- Investigate setting more parameters and some private, multimedia-specific sockets, to AVIOContext before calling avformat_open_input.
Note, that video streaming protocols are not just TCP/UDP sockets., e.g. RTSP may use both.
The task implies an initial investigation, so we want to get a minimalistic prototype (a proof of the concept) or conclude that the approach is super complicated and we're not going to implement it for 6.8 and 6.9.