Video streaming and processing framework for Linux, macOS, and iOS/iPadOS/tvOS. Swift 5.1+ because I'm just opening this up and I really don't feel like dealing with older versions of Swift.
For now, check the Examples directory for some hints about how to use this framework. I promise I will be creating documentation to clarify how it all fits together and how you can do useful, interesting things with this framework.
- Add
.package(url: "https://github.com/unpause-live/SwiftVideo.git", from: "0.2.0")to your package dependencies - In your target dependencies, add either
SwiftVideoorSwiftVideo_Baredepending on whether or not you wish to build with FFmpeg and Freetype support.
You can use this project in Xcode for iOS as a Swift Package as of 0.2.0.
- Go to File -> Swift Packages -> Add Package Dependency, or in your Project settings go to the Swift Packages tab and press +
- Set the package repository URL to https://github.com/unpause-live/SwiftVideo
- Select the branch or version you want to reference. Only 0.2.0 and above will be usable on iOS unless you also compile FFmpeg and Freetype for it.
- Choose the
SwiftVideo_Bareproduct when prompted. This will build SwiftVideo without FFmpeg and Freetype. If you have built those libraries for iOS and wish to use them with SwiftVideo, choose theSwiftVideoproduct instead. - If you are using the VideoMixer you will need to include
Sources/SwiftVideo/kernels.metalin your project directly so that they are included. This will be changed when Swift 5.3 is released.
- RTMP Client and Server
- "Flavor" Client and Server (toy protocol, see flavor.md)
- OpenCL Support
- Metal Support
- Audio Decode/Encode (via FFmpeg and CoreAudio)
- Video Decode/Encode (via FFmpeg and CoreVideo)
- Camera capture (macOS/iOS)
- Text rendering (via FreeType)
- Video Mixer
- Audio Mixer
- Audio Resampler (via FFmpeg+SOX)
FFmpeg support is thanks to https://github.com/sunlubo/SwiftFFmpeg