{"id":3063,"url":"https://github.com/abdullahselek/Swifty360Player","last_synced_at":"2025-08-06T16:32:32.114Z","repository":{"id":25830199,"uuid":"106661605","full_name":"abdullahselek/Swifty360Player","owner":"abdullahselek","description":"iOS 360-degree video player streaming from an AVPlayer.","archived":false,"fork":false,"pushed_at":"2024-05-14T10:39:16.000Z","size":22120,"stargazers_count":178,"open_issues_count":5,"forks_count":46,"subscribers_count":12,"default_branch":"master","last_synced_at":"2024-09-17T21:03:42.990Z","etag":null,"topics":["360-video","avplayer","carthage","cocoapods","media","scenekit","streaming","uiview","uiviewcontroller","video"],"latest_commit_sha":null,"homepage":null,"language":"Swift","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/abdullahselek.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-10-12T07:49:21.000Z","updated_at":"2024-09-04T02:26:12.000Z","dependencies_parsed_at":"2023-09-23T04:14:52.739Z","dependency_job_id":"55393612-0b95-4453-90fd-3341d22ca08d","html_url":"https://github.com/abdullahselek/Swifty360Player","commit_stats":{"total_commits":151,"total_committers":6,"mean_commits":"25.166666666666668","dds":0.2516556291390728,"last_synced_commit":"9f299f0fa7d0ef0854094495ec41e9ede1eee23d"},"previous_names":[],"tags_count":10,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwifty360Player","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwifty360Player/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwifty360Player/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/abdullahselek%2FSwifty360Player/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/abdullahselek","download_url":"https://codeload.github.com/abdullahselek/Swifty360Player/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":228923770,"owners_count":17992575,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["360-video","avplayer","carthage","cocoapods","media","scenekit","streaming","uiview","uiviewcontroller","video"],"created_at":"2024-01-05T20:16:30.327Z","updated_at":"2024-12-09T16:31:23.900Z","avatar_url":"https://github.com/abdullahselek.png","language":"Swift","funding_links":[],"categories":["VR","Libs","HarmonyOS","Media and Graphics","Video [🔝](#readme)"],"sub_categories":["Web View","Video","Other free courses","Windows Manager"],"readme":"[![Build Status](https://travis-ci.org/abdullahselek/Swifty360Player.svg?branch=master)](https://travis-ci.org/abdullahselek/Swifty360Player)\n[![CocoaPods Compatible](https://img.shields.io/cocoapods/v/Swifty360Player.svg)](https://cocoapods.org/pods/Swifty360Player)\n[![Carthage Compatible](https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat)](https://github.com/Carthage/Carthage)\n![License](https://img.shields.io/dub/l/vibe-d.svg)\n\n# ![Swifty360Player](https://github.com/abdullahselek/Swifty360Player/blob/master/Resources/Swifty360Player.png) Swifty360Player\n\niOS 360-degree video player streaming from an AVPlayer.\n\n## Demo\n\n![Swifty360Player Demo](https://github.com/abdullahselek/Swifty360Player/blob/master/Resources/demo.gif)\n\n## Requirements\n\n| Swifty360Player Version | Minimum iOS Target  | Swift Version |\n|:--------------------:|:---------------------------:|:---------------------------:|\n| 0.2.7 | 11.0 | 5.x |\n| 0.2.2 | 11.0 | 4.2 |\n| 0.2.1 | 10.0 | 4.1 |\n| 0.2 | 10.0 | 4.0 |\n\n## CocoaPods\n\nCocoaPods is a dependency manager for Cocoa projects. You can install it with the following command:\n\n```\n$ gem install cocoapods\n```\n\nTo integrate Swifty360Player into your Xcode project using CocoaPods, specify it in your Podfile:\n\n```\nsource 'https://github.com/CocoaPods/Specs.git'\nplatform :ios, '11.0'\nuse_frameworks!\n\ntarget '\u003cYour Target Name\u003e' do\n    pod 'Swifty360Player', '0.2.7'\nend\n```\n\nThen, run the following command:\n\n```\n$ pod install\n```\n\n## Carthage\n\nCarthage is a decentralized dependency manager that builds your dependencies and provides you with binary frameworks.\n\nYou can install Carthage with Homebrew using the following command:\n\n```\nbrew update\nbrew install carthage\n```\n\nTo integrate Swifty360Player into your Xcode project using Carthage, specify it in your Cartfile:\n\n```\ngithub \"abdullahselek/Swifty360Player\" ~\u003e 0.2.7\n```\n\nRun carthage update to build the framework and drag the built Swifty360Player.framework into your Xcode project.\n\n## Swift Package Manager\n\nModify your Package.swift file to include the following dependency:\n\n```\n.package(url: \"https://github.com/abdullahselek/Swifty360Player.git\", from: \"0.2.7\")\n```\n\nRun `swift package resolve`\n\n## XCFramework\n\nXCFrameworks require Xcode 11 or later and integration is very similar to integration of .framework format. Please use script [scripts/build-framework.sh](scripts/build-framework.sh) to generate binary Swifty360Player.xcframework archive that you can use as a dependency in Xcode.\n\nSwifty360Player.xcframework is a Release (Optimized) binary that offer best available Swift code performance.\n\n## Example Usage\n\nYou just need an `AVPlayer` instance created with a valid video url and a `Swifty360MotionManager` instance. You can use these code snippets in a `UIViewController` instance.\n\nVideo url can be either local or remote.\n\n```\nlet videoURL = URL(fileURLWithPath: Bundle.main.path(forResource: \"google-help-vr\", ofType: \"mp4\")!)\nlet player = AVPlayer(url: videoURL)\n\nlet motionManager = Swifty360MotionManager.shared\nswifty360ViewController = Swifty360ViewController(withAVPlayer: player, motionManager: motionManager)\n\naddChildViewController(swifty360ViewController)\nview.addSubview(swifty360ViewController.view)\nswifty360ViewController.didMove(toParentViewController: self)\n\nplayer.play()\n\nlet tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(reorientVerticalCameraAngle))\nview.addGestureRecognizer(tapGestureRecognizer)\n```\n\nTap Gesture Handler\n\n```\n@objc func reorientVerticalCameraAngle() {\n    swifty360ViewController.reorientVerticalCameraAngleToHorizon(animated: true)\n}\n```\n\nUsing storyboard and `Swifty360ViewController` as parent class\n\n```\nguard let swifty360ViewController = self.storyboard?.instantiateViewController(withIdentifier: \"TestViewController\") as? TestViewController else {\n    return\n}\nlet videoURL = URL(fileURLWithPath: Bundle.main.path(forResource: \"google-help-vr\", ofType: \"mp4\")!)\nlet player = AVPlayer(url: videoURL)\nlet motionManager = Swifty360MotionManager.shared\nswifty360ViewController.player = player\nswifty360ViewController.motionManager = motionManager\nself.present(swifty360ViewController, animated: true, completion: nil)\n```\n\n```\nimport UIKit\nimport Swifty360Player\n\nclass TestViewController: Swifty360ViewController {\n\n    override func viewDidLoad() {\n        super.viewDidLoad()\n\n        player.play()\n    }\n\n}\n```\n\nExample use of `Swifty360View` with using code commands\n\n```\nlet videoURL = URL(fileURLWithPath: Bundle.main.path(forResource: \"google-help-vr\", ofType: \"mp4\")!)\nlet player = AVPlayer(url: videoURL)\n\nlet motionManager = Swifty360MotionManager.shared\n\nlet swifty360View = Swifty360View(withFrame: view.bounds,\n                                  player: player,\n                                  motionManager: motionManager)\nswifty360View.setup(player: player, motionManager: motionManager)\nview.addSubview(swifty360View)\n\nplayer.play()\n```\n\nUsing `Swifty360View` with Storyboard\n\n- Add a `UIView` to your viewcontroller and change it's class as `Swifty360View`\n- Connect via IBOutlets\n\nand\n\n```\nlet videoURL = URL(fileURLWithPath: Bundle.main.path(forResource: \"google-help-vr\", ofType: \"mp4\")!)\nlet player = AVPlayer(url: videoURL)\n\nlet motionManager = Swifty360MotionManager.shared\n\nswifty360View.setup(player: player, motionManager: motionManager)\n\nplayer.play()\n```\n\nTap gesture recognizers for `Swifty360View`, create one recognizer for your viewcontroller's view\n\n```\nlet tapGestureRecognizer = UITapGestureRecognizer(target: self, action: #selector(reorientVerticalCameraAngle))\nview.addGestureRecognizer(tapGestureRecognizer)\n```\n\nand selector function\n\n```\n@objc func reorientVerticalCameraAngle() {\n    swifty360View.reorientVerticalCameraAngleToHorizon(animated: true)\n}\n```\n\n## License\n\nSwifty360Player is released under the MIT license. See LICENSE for details.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdullahselek%2FSwifty360Player","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fabdullahselek%2FSwifty360Player","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fabdullahselek%2FSwifty360Player/lists"}