All Projects → keitaoouchi → RxAudioVisual

keitaoouchi / RxAudioVisual

Licence: MIT license
A reactive wrapper built around AVFoundation.

Programming Languages

swift
15916 projects
ruby
36898 projects - #4 most used programming language
objective c
16641 projects - #2 most used programming language

Projects that are alternatives of or similar to RxAudioVisual

KDInstagram
Instagram Clone built in Swift. Utilize three design patterns in three major modules.
Stars: ✭ 119 (+395.83%)
Mutual labels:  rxswift
awesome-demo-app
100% programmatically written in Swift. Clearly demonstrating the RxSwift, RxCocoa, RxRealm & SnapKit.
Stars: ✭ 16 (-33.33%)
Mutual labels:  rxswift
RxCleanSwift
Example repository of Clean Swift built on ReactiveX
Stars: ✭ 42 (+75%)
Mutual labels:  rxswift
RxSwift-Xcode-Templates
A handful of Xcode file templates for projects that use RXSwift and MVVM
Stars: ✭ 77 (+220.83%)
Mutual labels:  rxswift
ReactiveAPI
Write clean, concise and declarative network code relying on URLSession, with the power of RxSwift. Inspired by Retrofit.
Stars: ✭ 79 (+229.17%)
Mutual labels:  rxswift
podcatcher
Podcast App
Stars: ✭ 21 (-12.5%)
Mutual labels:  avfoundation
RxSwift-MVVM-iOS
SwiftMVVM is an sample iOS App written in Swift using the MVVM architecture.
Stars: ✭ 96 (+300%)
Mutual labels:  rxswift
Soundable
Soundable allows you to play sounds, single and in sequence, in a very easy way
Stars: ✭ 88 (+266.67%)
Mutual labels:  avfoundation
VITimelineView
VITimelineView can represent any time base things. Made with fully customizable & extendable.
Stars: ✭ 51 (+112.5%)
Mutual labels:  avfoundation
RxApolloClient
RxSwift extensions for Apollo Client
Stars: ✭ 46 (+91.67%)
Mutual labels:  rxswift
HikingClub iOS
매시업산악회11기 iOS팀 열정! 열정! 열정!🔥🔥
Stars: ✭ 12 (-50%)
Mutual labels:  rxswift
WWDC17
WWDC 2017 Scholarship Submission by Phil Zet (Philipp Zakharchenko)
Stars: ✭ 14 (-41.67%)
Mutual labels:  avfoundation
onlyRxSwift
RxSwift範例跟一些學習心得
Stars: ✭ 28 (+16.67%)
Mutual labels:  rxswift
AVPlayerItemHomeOutput
Coordinate the output of content associated with your HomeKit lightbulbs. #Ambilight
Stars: ✭ 38 (+58.33%)
Mutual labels:  avfoundation
Moya-Gloss
Gloss bindings for Moya
Stars: ✭ 37 (+54.17%)
Mutual labels:  rxswift
mvvm-ios
A sample app to demonstrate MVVM implementation in iOS
Stars: ✭ 26 (+8.33%)
Mutual labels:  rxswift
RxExamples
RxSwift Examples.
Stars: ✭ 48 (+100%)
Mutual labels:  rxswift
CLE-Architecture-Tools
A library for making view controller presentation and dismissal more functional.
Stars: ✭ 32 (+33.33%)
Mutual labels:  rxswift
WhatFilm
Simple iOS app using TMDb API and RxSwift
Stars: ✭ 35 (+45.83%)
Mutual labels:  rxswift
RxStudy
RxSwift/RxCocoa框架,MVVM模式编写wanandroid客户端
Stars: ✭ 122 (+408.33%)
Mutual labels:  rxswift

RxAudioVisual

Build Status Swift 4.0 Carthage compatible Version License Platform

RxAudioVisual is a RxSwift wrapper around AVFoundation.

Requirements

Target Version
iOS => 10.0
Swift ~> 4.0
RxSwift / RxCocoa ~> 4.0

Installation

RxAudioVisual is available through CocoaPods.

CocoaPods

pod "RxAudioVisual"

Getting started

AVAsynchronousKeyValueLoading

asset.rx.playable.subscribe(
  onSuccess: { playable in
    // Do something nice.
  }
)

KVO

player.rx.status.filter { $0 == .readyToPlay }.subscribe(onNext: { _ in
  player.play()
}).addDisposableTo(self.disposeBag)
playerLayer.rx.readyForDisplay.filter { $0 == true }.subscribe(onNext: { [weak self] _ in
  playerLayer.frame = self?.videoView.bounds
  self?.videoView.layer.addSublayer(playerLayer)
}).addDisposableTo(self.disposeBag)

Notification

item.rx.didPlayToEnd.subscribe(onNext: { _ in
  player.seek(to: kCMTimeZero)
  player.play()
}).addDisposableTo(self.disposeBag)

Overview

AVAsset

property ObservableType Element
duration Single CMTime
preferredRate Single Float
preferredVolume Single Float
preferredTransform Single CGAffineTransform
tracks Single [AVAssetTrack]
playable Single Bool
exportable Single Bool
readable Single Bool
composable Single Bool
compatibleWithSavedPhotosAlbum Single Bool
compatibleWithAirPlayVideo Single Bool

AVAssetTrack

property ObservableType Element
playable Single Bool
enabled Single Bool
selfContained Single Bool
totalSampleDataLength Single Int64
timeRange Single CMTimeRange
naturalTimeScale Single CMTimeScale
estimatedDataRate Single Float
naturalSize Single CGSize
preferredTransform Single CGAffineTransform
preferredVolume Single Float
nominalFrameRate Single Float

AVPlayer

property ObservableType Element
status Observable AVPlayerStatus
error Observable NSError?
timeControlStatus Observable AVPlayerTimeControlStatus
rate Observable Float
currentItem Observable AVPlayerItem?
actionAtItemEnd Observable AVPlayerActionAtItemEnd
volume Observable Float
muted Observable Bool
closedCaptionDisplayEnabled Observable Bool
allowsExternalPlayback Observable Bool
externalPlaybackActive Observable Bool
usesExternalPlaybackWhileExternalScreenIsActive Observable Bool

AVPlayerItem

property ObservableType Element
asset Observable AVAsset?
duration Observable CMTime
error Observable NSError?
loadedTimeRanges Observable [NSValue]
presentationSize Observable CMTime
status Observable AVPlayerItemStatus
timebase Observable CMTimebase?
tracks Observable [AVPlayerItemTrack]
seekableTimeRanges Observable [NSValue]
isPlaybackLikelyToKeepUp Observable Bool
isPlaybackBufferEmpty Observable Bool
isPlaybackBufferFull Observable Bool
didPlayToEnd Observable Notification
timeJumped Observable Notification
failedToPlayToEndTime Observable Notification
playbackStalled Observable Notification
newAccessLogEntry Observable Notification
newErrorLogEntry Observable Notification

AVPlayerLayer

property ObservableType Element
player Observable AVPlayer?
readyForDisplay Observable Bool
videoRect Observable CGRect

Author

keita.oouchi, [email protected]

License

RxAudioVisual is available under the MIT license. See the LICENSE file for more info.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].