Latest 0.3.2
Homepage https://github.com/jgh-/VideoCore
License MIT
Platforms ios 5.0
Dependencies boost, glm, UriParser-cpp
Frameworks VideoToolbox, AudioToolbox, AVFoundation, CFNetwork, CoreMedia, CoreVideo, OpenGLES, Foundation, CoreGraphics
Authors

VideoCore is a project inteded to be an audio and video manipulation and streaming graph. It currently works with iOS and periodic (live) sources. It is a work in progress and will eventually expand to other platforms such as OS X and Android. Contributors welcome!

Table of Contents

Setup

CocoaPods

Create a Podfile with the contents

platform :ios, '6.0'
pod 'VideoCore', '~> 0.2.0'

Next, run pod install and open the xcworkspace file that is created.

Sample Application

The SampleBroadcaster project in the sample folder uses CocoaPods to bring in
VideoCore as a dependency:

cd sample/SampleBroadcaster
pod install
open SampleBroadcaster.xcworkspace

… or you can build from the command-line:

xcodebuild -workspace SampleBroadcaster.xcworkspace -scheme SampleBroadcaster build

More on CocoaPods: http://cocoapods.org/

Architecture Overview

VideoCore’s architecture is inspired by Microsoft Media Foundation (except with saner naming). Samples start at the source, are passed through a series of transforms, and end up at the output.

e.g. Source (Camera) -> Transform (Composite) -> Transform (H.264 Encode) -> Transform (RTMP Packetize) -> Output (RTMP)

videocore/
sources/
videocore::ISource
videocore::IAudioSource : videocore::ISource
videocore::IVideoSource : videocore::ISource
videocore::Watermark : videocore:IVideoSource
iOS/
videocore::iOS::CameraSource : videocore::IVideoSource
Apple/
videocore::Apple::MicrophoneSource : videocore::IAudioSource
OSX/
videocore::OSX::DisplaySource : videocore::IVideoSource
videocore::OSX::SystemAudioSource : videocore::IAudioSource
outputs/
videocore::IOutput
videocore::ITransform : videocore::IOutput
iOS/
videocore::iOS::H264Transform : videocore::ITransform
videocore::iOS::AACTransform  : videocore::ITransform
OSX/
videocore::OSX::H264Transform : videocore::ITransform
videocore::OSX::AACTransform  : videocore::ITransform
RTMP/
videocore::rtmp::H264Packetizer : videocore::ITransform
videocore::rtmp::AACPacketizer : videocore::ITransform

mixers/
videocore::IMixer
videocore::IAudioMixer : videocore::IMixer
videocore::IVideoMixer : videocore::IMixer
videocore::AudioMixer : videocore::IAudioMixer
iOS/
videocore::iOS::GLESVideoMixer : videocore::IVideoMixer
OSX/
videocore::OSX::GLVideoMixer : videocore::IVideoMixer

rtmp/
videocore::RTMPSession : videocore::IOutput

stream/
videocore::IStreamSession
Apple/
videocore::Apple::StreamSession : videocore::IStreamSession

Version History

  • 0.3.1
    • Various bugfixes
    • Introduction of pixel buffer sources so you can add images to broadcast.
  • 0.3.0
    • Improvements to audio/video timestamps and synchronization
    • Adds an incompatible API call with previous versions. Custom
    • graphs must now call IMixer::start() to begin mixing.
  • 0.2.3
    • Add support for image filters
  • 0.2.2
    • Fix video streaking bug when adaptative bitrate is enabled
    • Increase the aggressiveness of the adaptative bitrate algorithm
    • Add internal pixel buffer format
  • 0.2.0
    • Removes deprecated functions
    • Adds Main Profile video
    • Improves adaptive bitrate algorithm
  • 0.1.12
    • Bugfixes
    • Red5 support
    • Improved Adaptive Bitrate algorithm
  • 0.1.10
    • Bugfixes
    • Adaptive Bitrate introduced
  • 0.1.9
    • Bugfixes, memory leak fixes
    • Introduces the ability to choose whether to use interface orientation or device orientation for Camera orientation.
  • 0.1.8
    • Introduces VideoToolbox encoding for iOS 8+ and OS X 10.9+
    • Adds -lc++ for compatibility with Xcode 6
  • 0.1.7
    • Add a simplified iOS API for the common case of streaming camera/microphone
    • Deprecate camera aspect ratio and position
    • Add a matrix transform for Position
    • Add a matrix transform for Aspect Ratio
    • Bugfixes
  • 0.1.6
    • Use device orientation for CameraSource rather than interface orientation
  • 0.1.5
    • Add aspect fill to CameraSource
  • 0.1.4
    • Switch from LGPL 2.1 to MIT licensing.
    • Add Camera preview layer.
    • Add front/back camera toggle.
    • Fix aspect ratio bug in Camera source.
  • 0.1.3
    • Update sample app with a more efficient viewport render
  • 0.1.2
    • Fixes a serious bug in the GenericAudioMixer that was causing 100% cpu usage and audio lag.
  • 0.1.1
    • Fixes Cocoapods namespace conflicts for UriParser-cpp
  • 0.1.0
    • Initial CocoaPods version

Latest podspec

{
    "name": "VideoCore",
    "version": "0.3.2",
    "summary": "An audio and video manipulation and streaming pipeline with support for RTMP.",
    "description": "                          This is a work-in-progress library with then                          intention of being an audio and video manipulationn                          and streaming pipeline for iOS.n",
    "homepage": "https://github.com/jgh-/VideoCore",
    "license": "MIT",
    "authors": {
        "James Hurley": "[email protected]"
    },
    "source": {
        "git": "https://github.com/jgh-/VideoCore.git",
        "tag": "0.3.2"
    },
    "requires_arc": false,
    "header_dir": "videocore",
    "header_mappings_dir": ".",
    "source_files": [
        "mixers/**/*.h*",
        "mixers/**/*.cpp",
        "mixers/**/*.m*",
        "rtmp/**/*.h*",
        "rtmp/**/*.cpp",
        "rtmp/**/*.m*",
        "sources/**/*.h*",
        "sources/**/*.cpp",
        "sources/**/*.m*",
        "stream/**/*.h*",
        "stream/**/*.cpp",
        "stream/**/*.m*",
        "system/**/*.h*",
        "system/**/*.cpp",
        "system/**/*.m*",
        "transforms/**/*.h*",
        "transforms/**/*.cpp",
        "transforms/**/*.m*",
        "api/**/*.h*",
        "api/**/*.m*",
        "filters/**/*.cpp",
        "filters/**/*.h*"
    ],
    "frameworks": [
        "VideoToolbox",
        "AudioToolbox",
        "AVFoundation",
        "CFNetwork",
        "CoreMedia",
        "CoreVideo",
        "OpenGLES",
        "Foundation",
        "CoreGraphics"
    ],
    "libraries": "c++",
    "dependencies": {
        "boost": [
            "~> 1.51.0"
        ],
        "glm": [
            "~> 0.9.4.6"
        ],
        "UriParser-cpp": [
            "~> 0.1.3"
        ]
    },
    "xcconfig": {
        "HEADER_SEARCH_PATHS": "${PODS_ROOT}/boost"
    },
    "platforms": {
        "ios": "5.0"
    }
}

Pin It on Pinterest

Share This