Skip to content
This repository has been archived by the owner. It is now read-only.
*No longer in development* At some point I will be publishing a new system
Branch: master
Clone or download
jgh- Merge pull request #233 from maxcampolo/bug/setRtmpSessionState
Bug Fix: Check current queue before calling delegate on main queue
Latest commit 859dc77 Dec 30, 2015
Type Name Latest commit message Commit time
Failed to load latest commit information.
api/iOS Check if we are on the main queue before calling delegate on main que… Dec 2, 2015
docs Test layout stuff Jun 22, 2014
filters Adding Glow filter. Adjusting Podfile.lock May 29, 2015
mixers RingBuffer类添加一个unget方法,回退读指针 Sep 29, 2015
rtmp Merge pull request #226 from dourgulf/Rewrite-RTMP-Parser Dec 29, 2015
sample Merge pull request #208 from dourgulf/Rewrite-RTMP-Parser Nov 21, 2015
sources BUG Fixed: When TCP package size large than message size, Oct 10, 2015
stream Delete AsyncStreamSession.hpp Nov 27, 2015
system BUG fixed: When received RTMP_HEADER_TYPE_TIMESTAMP type(2) message, Oct 10, 2015
transforms Provide "Pure" CoreFoundation objects to VTCompressionSessionCreate Nov 30, 2015
LICENSE Update to MIT Jun 11, 2014 Update Jul 21, 2015
VideoCore.podspec Update podspec May 26, 2015


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



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:

##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::IAudioSource : videocore::ISource
videocore::IVideoSource : videocore::ISource
videocore::Watermark : videocore:IVideoSource
videocore::iOS::CameraSource : videocore::IVideoSource
videocore::Apple::MicrophoneSource : videocore::IAudioSource
videocore::OSX::DisplaySource : videocore::IVideoSource
videocore::OSX::SystemAudioSource : videocore::IAudioSource
videocore::ITransform : videocore::IOutput
videocore::iOS::H264Transform : videocore::ITransform
videocore::iOS::AACTransform  : videocore::ITransform
videocore::OSX::H264Transform : videocore::ITransform
videocore::OSX::AACTransform  : videocore::ITransform
videocore::rtmp::H264Packetizer : videocore::ITransform
videocore::rtmp::AACPacketizer : videocore::ITransform

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

videocore::RTMPSession : videocore::IOutput

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
You can’t perform that action at this time.