Latest 1.9.0
Homepage https://github.com/libobjc/SGPlayer
License MIT
Platforms ios 8.0, osx 10.10, tvos 9.0, requires ARC
Authors

(Logo)

Build Status
Platform
Support

中文介绍 | Principle(原理详解) | Video Download(视频下载) | Android Version (XLPlayer)

SGPlayer

  • SGPlayer is a powerful media player framework for iOS, macOS, and tvOS. based on AVPlayer and FFmpeg. Support 360° panorama video, VR video. RTMP streaming.

Features

  • 360° panorama video.
  • Gestures and sensors control vr video.
  • distortion correction in cardboard mode.
  • Support iOS, macOS, and tvOS.
  • H.264 hardware accelerator (VideoToolBox).
  • RTMP, RTSP streamings.
  • Background playback mode.
  • Selected audio track.
  • Adjust the volume.
  • Capture video artwork.
  • Bitcode support.
  • Simplest callback handle.

Build Instructions (Choose one of the way)

Method 1. Using build script


// iOS
git clone https://github.com/libobjc/SGPlayer.git
cd SGPlayer
sh compile-build.sh iOS

// macOS
git clone https://github.com/libobjc/SGPlayer.git
cd SGPlayer
sh compile-build.sh macOS

// tvOS
git clone https://github.com/libobjc/SGPlayer.git
cd SGPlayer
sh compile-build.sh tvOS

Method 2. Manually build

  • Step 1 – clone and init submodule.
git clone https://github.com/libobjc/SGPlayer.git
cd SGPlayer
git submodule update --init --recursive
  • Step 2 – build FFmpeg and add libs to the corresponding directory.

/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-iOS        // iOS
/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-macOS      // macOS
/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-tvOS       // tvOS

check build results

ffmpeg-libs

Usage

  • more examples in the demo applications.

Dependencies


// iOS
- SGPlayer.framework
- SGPlatform.framework  Optional
- CoreMedia.framework
- AudioToolBox.framework
- VideoToolBox.framework
- libiconv.tbd
- libbz2.tbd
- libz.tbd

// macOS
- SGPlayer.framework
- SGPlatform.framework  Optional
- CoreMedia.framework
- AudioToolBox.framework
- VideoToolBox.framework
- VideoDecodeAcceleration.framework
- libiconv.tbd
- libbz2.tbd
- libz.tbd
- libizma.tbd

Basic video playback


self.player = [SGPlayer player];

// register callback handle.
[self.player registerPlayerNotificationTarget:self stateAction:@selector(stateAction:) progressAction:@selector(progressAction:) playableAction:@selector(playableAction:) errorAction:@selector(errorAction:)];

// display view tap action.
[self.player setViewTapAction:^(SGPlayer * _Nonnull player, SGPLFView * _Nonnull view) {
NSLog(@"player display view did click!");
}];

// playback plane video.
[self.player replaceVideoWithURL:contentURL]; // 方式1
[self.player replaceVideoWithURL:contentURL videoType:SGVideoTypeNormal]; // 方式2

// playback 360° panorama video.
[self.player replaceVideoWithURL:contentURL videoType:SGVideoTypeVR];

// start playing
[self.player play];

Advanced settings


// selected playback core.
self.player.decoder = [SGPlayerDecoder defaultDecoder];     // default config,Together with AVPlayer and FFmpeg.
self.player.decoder = [SGPlayerDecoder AVPlayerDecoder];    // only use AVPlayer
self.player.decoder = [SGPlayerDecoder FFmpegDecoder];      // only use FFmpeg

// set the specified format playback core.
self.player.decoder.decodeTypeForMPEG4 = SGDecoderTypeFFmpeg;      // use FFmoeg play mp4 files.

// open FFmpeg hardware accelerate.
self.player.decoder.hardwareAccelerateEnableForFFmpeg = YES;

// enter cardboard mode
self.player.displayMode = SGDisplayModeBox;

// set background mode.
// if allow background mode, you should open 'Background Modes' and check 'Audio' option, and set AVAudioSession Category to AVAudioSessionCategoryPlayback
self.player.backgroundMode = SGPlayerBackgroundModeAutoPlayAndPause;  // auto play and pause.
self.player.backgroundMode = SGPlayerBackgroundModeContinue;          // continue.

Screenshots

iOS

  • Plane video

ios-i-see-fire

  • 360° panorama video

ios-google-vr

  • Cardboard mode

ios-google-vr-box

macOS

  • Plane video

mac-i-see-fire

  • 360° panorama video

mac-google-vr

Communication

  • Email : [email protected]
  • Twitter : CoderSingle
  • Weibo : 程序员Single
  • QQ Group : 616349536

Latest podspec

{
    "name": "SGAVPlayer",
    "version": "1.9.0",
    "summary": "A media player framework for iOS, macOS, and tvOS.",
    "homepage": "https://github.com/libobjc/SGPlayer",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "Single": "[email protected]"
    },
    "social_media_url": "https://weibo.com/3118550737",
    "source": {
        "git": "https://github.com/libobjc/SGPlayer.git",
        "tag": "SGAVPlayer-Pod-1.9.0"
    },
    "source_files": [
        "SGPlayer/Classes/Extension/SGAVPlayer",
        "SGPlayer/Classes/Extension/SGAVPlayer/**/*.{h,m}",
        "SGPlayer/Classes/Core/SGCommon",
        "SGPlayer/Classes/Support/SGPlatform",
        "SGPlayer/Classes/Support/SGPlatform/**/*.{h,m}"
    ],
    "public_header_files": [
        "SGPlayer/Classes/Extension/SGAVPlayer/Classes/SGAVPlayer.h",
        "SGPlayer/Classes/Core/SGCommon/SGPlayerDefines.h",
        "SGPlayer/Classes/Core/SGCommon/SGPlayerAction.h",
        "SGPlayer/Classes/Support/SGPlatform/SGPlatform.h",
        "SGPlayer/Classes/Support/SGPlatform/**/*.h"
    ],
    "module_map": "SGPlayer/Classes/Extension/SGAVPlayer/module.modulemap",
    "ios": {
        "frameworks": [
            "Foundation",
            "AVFoundation",
            "UIKit"
        ]
    },
    "tvos": {
        "frameworks": [
            "Foundation",
            "AVFoundation",
            "UIKit"
        ]
    },
    "osx": {
        "frameworks": [
            "Foundation",
            "AVFoundation",
            "AppKit"
        ]
    },
    "platforms": {
        "ios": "8.0",
        "osx": "10.10",
        "tvos": "9.0"
    },
    "requires_arc": true
}

Pin It on Pinterest

Share This