RxAudioVisual

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
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.