当前位置: 首页 > 软件库 > 应用工具 > 多媒体工具 >

SGPlayer

跨平台媒体播放器框架
授权协议 GPL
开发语言 Objective-C
所属分类 应用工具、 多媒体工具
软件类型 开源软件
地区 国产
投 递 者 宗政法
操作系统 跨平台
开源组织
适用人群 未知
 软件概览

SGPlayer

  • SGPlayer 是一款基于 AVPlayer、FFmpeg 的媒体资源播放器框架。支持360°全景视频,VR视频,RTMP、RTSP 等直播流;同时支持 iOS、macOS、tvOS 三个平台。

功能特点

  • 支持播放360°全景视频。

  • 支持手势、传感器操控360°全景视频。

  • 支持双眼模式,具有畸变校正、色散校正。

  • 支持 iOS、macOS、tvOS。

  • 支持 H.264 硬件解码(VideoToolBox)。

  • 支持 RTMP、RTSP 等直播流。

  • 支持后台播放。

  • 支持选择音频轨道。

  • 支持控制音频输出音量。

  • 支持无损视频截图。

  • 支持近所有常用媒体格式。

  • 支持 Bitcode。

  • 极简的事件通知机制。

编译方式(2选1即可)

1.脚本编译

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

2.手动编译

  • 步骤1 - 克隆项目并安装子模块

git clone git@github.com:libobjc/SGPlayer.git
cd SGPlayer
git submodule update --init --recursive
  • 步骤2 - 手动编译 FFmpeg 并放在指定目录下

// 将FFmpeg编译出的.a静态库分别放在对应目录
/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-iOS        // iOS
/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-macOS      // macOS
/SGPlayer/Classes/Core/SGFFPlayer/ffmpeg/lib-tvOS       // tvOS

使用示例

  • 详细使用示例参见 demo

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

基础视屏播放

self.player = [SGPlayer player];

// 注册事件通知
[self.player registerPlayerNotificationTarget:self stateAction:@selector(stateAction:) progressAction:@selector(progressAction:) playableAction:@selector(playableAction:) errorAction:@selector(errorAction:)];

// 视频画面点击事件
[self.player setViewTapAction:^(SGPlayer * _Nonnull player, SGPLFView * _Nonnull view) {
    NSLog(@"player display view did click!");
}];

// 播放普通视频 (2种方式2选1即可)
[self.player replaceVideoWithURL:contentURL]; // 方式1
[self.player replaceVideoWithURL:contentURL videoType:SGVideoTypeNormal]; // 方式2

// 播放360度全景视频、VR视频
[self.player replaceVideoWithURL:contentURL videoType:SGVideoTypeVR];

// 播放
[self.player play];

高级设置

// 三种预设播放内核选择策略
self.player.decoder = [SGPlayerDecoder defaultDecoder];     // 默认配置,混合使用 AVPlayer和FFmpeg,根据容器格式动态选择播放内核
self.player.decoder = [SGPlayerDecoder AVPlayerDecoder];    // 仅使用 AVPlayer
self.player.decoder = [SGPlayerDecoder FFmpegDecoder];      // 仅使用 FFmpeg

// 单个容器格式单独配置示例
self.player.decoder.decodeTypeForMPEG4 = SGDecoderTypeFFmpeg;      // 使用 FFmpeg 播放 mp4 文件

// 开启 FFmpeg 硬解
self.player.decoder.hardwareAccelerateEnableForFFmpeg = YES;

// 进入 VR眼镜 模式
self.player.displayMode = SGDisplayModeBox;

// 设置后台播放模式
// 如果需要后台播放,需将项目的 Background Modes 打开并勾选 Audio 选项, 并将 AVAudioSession 的 Category 设为AVAudioSessionCategoryPlayback
self.player.backgroundMode = SGPlayerBackgroundModeAutoPlayAndPause;  // 自动暂停及恢复
self.player.backgroundMode = SGPlayerBackgroundModeContinue;          // 继续播放

演示

iOS

  • Plane video


  • 360° panorama video

 相关资料
  • 我正在开发一个包含一些音频播放器的RecyclerView的应用程序。应用程序将下载。3gp文件(如果尚未下载)。 当我单击playAudio按钮时,音频未被播放。 这是我的适配器代码: 我怎样才能解决这个问题?

  • 1.1.1. 多媒体播放 1.1.1. 多媒体播放 我们事实上对上游芯片厂商自带的播放器方式做了调整。 Amlogic 芯片 BaseCode 我们禁用了芯片厂商的原生代码的 libplayer 包,原因是芯片厂商的播放器是直接使用 ALSA 框架来调用音频播放功能的。 这对我们 RokidOS 平台让多个进程使用音频设备造成阻碍。基于这个因素,我们使用了 RokidOS 开发的媒体播放库 lib

  • 这可能不是一个可以接受的问题,但我现在非常绝望。 我需要一个同步java媒体播放器与快速寻找和平衡修改。 脚本: 我有一个javaFX项目,我必须在循环中播放一个非常短(50-100毫秒)的媒体文件。问题是,在重新启动之前,我需要等待一些要求。 简而言之:播放声音- javafx提供了一个我修改过的媒体播放器。 如果有人能为我指出正确的方向(图书馆/我错过的东西),我将不胜感激 ps允许的java

  • 当我使用MediaPlayer播放mp3文件时,系统会报告错误日志:。但是RealPlayer是正常的。 我发现它的错误只发生在更高的ROM版本。像4.0版本一样,它有错误。在2.3版中,它没有这个错误。 代码: 日志猫错误:

  • 我已经成功地能够从我的服务器流MP3,现在我想显示一个媒体播放器通知与控制时,歌曲开始播放。我已经遵循了一些教程如何做到这一点,但我仍然得到错误时,试图在我的应用程序中做同样的事情。 这是我尝试在音乐开始播放时显示通知的方式 这是完整的 但是,当我运行代码并单击播放按钮时,应用程序崩溃,logcat返回此错误,但没有指向特定的代码行。

  • 我的问题是关于媒体播放器直播流从我的应用程序的url? 我正在尝试通过媒体播放器播放实时流mp3音频。

  • 我正在开发我的第一个Android应用程序。这是一个录音应用程序。我正在用MediaRecord录制语音,如下所示: 我有另一个活动回放这些录制的声音(文件)。在这个活动中,有一个包含我录制的声音的ListView。我想用手机上安装的任何音乐播放器播放声音。这里我的代码:(此代码的来源:https://stackoverflow.com/a/3367231/556169) 但我得到了“音乐播放器不