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
SwiftVideo
orSwiftVideo_Bare
depending 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_Bare
product 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 theSwiftVideo
product instead. - If you are using the VideoMixer you will need to include
Sources/SwiftVideo/kernels.metal
in 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