{"id":20620887,"url":"https://github.com/irons163/irplayer","last_synced_at":"2025-04-15T12:14:26.149Z","repository":{"id":56915187,"uuid":"205123131","full_name":"irons163/IRPlayer","owner":"irons163","description":"IRPlayer is a powerful video player framework for iOS.","archived":false,"fork":false,"pushed_at":"2025-01-27T03:40:50.000Z","size":283474,"stargazers_count":16,"open_issues_count":0,"forks_count":2,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-04-15T12:14:11.413Z","etag":null,"topics":["360-video","fisheye","ios","ipcamera","media","objective-c","player","video","video-player-framework","videoplayer","vr"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","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/irons163.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}},"created_at":"2019-08-29T09:00:56.000Z","updated_at":"2025-04-09T10:14:38.000Z","dependencies_parsed_at":"2022-08-20T20:50:38.342Z","dependency_job_id":null,"html_url":"https://github.com/irons163/IRPlayer","commit_stats":null,"previous_names":[],"tags_count":18,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRPlayer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRPlayer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRPlayer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/irons163%2FIRPlayer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/irons163","download_url":"https://codeload.github.com/irons163/IRPlayer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":249067779,"owners_count":21207396,"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","fisheye","ios","ipcamera","media","objective-c","player","video","video-player-framework","videoplayer","vr"],"created_at":"2024-11-16T12:15:58.703Z","updated_at":"2025-04-15T12:14:26.140Z","avatar_url":"https://github.com/irons163.png","language":"Objective-C","funding_links":[],"categories":[],"sub_categories":[],"readme":"![Build Status](https://img.shields.io/badge/build-%20passing%20-brightgreen.svg)\n![Platform](https://img.shields.io/badge/Platform-%20iOS%20-blue.svg)\n\n# IRPlayer\n\n### IRPlayer is a powerful video player framework for iOS.\n\n### Swift version in here: [IRPlayer-swift](https://github.com/irons163/IRPlayer-swift)\n### This objc project will soon be no longer maintaining.\n\n- Use IRPlayer to play video.\n    - See demo.\n- Use IRPlayer to make video player with custom UI.\n    - See [IRPlayerUIShell](https://github.com/irons163/IRPlayerUIShell)\n- Use IRPlayer to play IP Camera stream.\n    - See [IRIPCamera](https://github.com/irons163/IRIPCamera)\n\n## Features\n\n- Support Normal video mode.\n- Support VR mode.\n- Support VR Box mode.\n- Support Fisheye mode.\n    - Support Normal Fisheye mode.\n    - Support Fisheye to Panorama mode.\n    - Support Fisheye to Perspective mode.\n- Support multi windows.\n- Support multi modes selection.\n\n- 0.3.6\n    - Support set the specific renders to each mode.\n    - Support custom video input(IRFFVideoInput). See what it works in [IRIPCamera](https://github.com/irons163/IRIPCamera).\n    - Support custom display view(inherit IRGLView). See what it works in [IREffectPlayer](https://github.com/irons163/IREffectPlayer).\n\n## Install\n### Cocoapods\n- Add `pod 'IRPlayer', '~\u003e 0.3.2'`  in the `Podfile`\n- `pod install`\n\n## Usage\n\n- more examples in the demo applications.\n\n### Basic\n\n```obj-c\n\nself.player = [IRPlayerImp player];\n[self.mainView insertSubview:self.player.view atIndex:0];\n\nNSURL * normalVideo = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@\"i-see-fire\" ofType:@\"mp4\"]];\nNSURL * vrVideo = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@\"google-help-vr\" ofType:@\"mp4\"]];\nNSURL * fisheyeVideo = [NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@\"fisheye-demo\" ofType:@\"mp4\"]];\n\n```\n\n#### Set mode and video source\n\n``` obj-c\nswitch (self.demoType)\n{\n    case DemoType_AVPlayer_Normal:\n        [self.player replaceVideoWithURL:normalVideo];\n        break;\n    case DemoType_AVPlayer_VR:\n        [self.player replaceVideoWithURL:vrVideo videoType:IRVideoTypeVR];\n        break;\n    case DemoType_AVPlayer_VR_Box:\n        self.player.displayMode = IRDisplayModeBox;\n        [self.player replaceVideoWithURL:vrVideo videoType:IRVideoTypeVR];\n        break;\n    case DemoType_FFmpeg_Normal:\n        self.player.decoder.mpeg4Format = IRDecoderTypeFFmpeg;\n        self.player.decoder.ffmpegHardwareDecoderEnable = NO;\n        [self.player replaceVideoWithURL:normalVideo];\n        break;\n    case DemoType_FFmpeg_Normal_Hardware:\n        self.player.decoder = [IRPlayerDecoder FFmpegDecoder];\n        [self.player replaceVideoWithURL:normalVideo];\n        break;\n    case DemoType_FFmpeg_Fisheye_Hardware:\n        self.player.decoder = [IRPlayerDecoder FFmpegDecoder];\n        [self.player replaceVideoWithURL:fisheyeVideo videoType:IRVideoTypeFisheye];\n        break;\n    case DemoType_FFmpeg_Fisheye_Hardware_Modes_Selection:\n        self.player.decoder = [IRPlayerDecoder FFmpegDecoder];\n        [self.player replaceVideoWithURL:fisheyeVideo videoType:IRVideoTypeFisheye];\n        break;\n}\n\n```\n\n#### Set custom video source\n\n- See what it works in [IRIPCamera](https://github.com/irons163/IRIPCamera).\n\n``` obj-c\nIRFFVideoInput *input = [[IRFFVideoInput alloc] init];\n[self.player replaceVideoWithInput:input videoType:IRVideoTypeNormal];\n\n...\n\nIRFFAVYUVVideoFrame * yuvFrame = [[IRFFAVYUVVideoFrame alloc] init];\n/*\nsetup the yuvFrame.\n*/\n[input updateFrame:frame];\n```\n\n### Advanced settings\n```obj-c\n\nNSArray *modes = [self createFisheyeModesWithParameter:nil];\nself.player.renderModes = modes;\n[self.player replaceVideoWithURL:fisheyeVideo videoType:IRVideoTypeCustom];\n\n\n- (NSArray\u003cIRGLRenderMode*\u003e *)createFisheyeModesWithParameter:(nullable IRMediaParameter *)parameter {\n    IRGLRenderMode *normal = [[IRGLRenderMode2D alloc] init];\n    IRGLRenderMode *fisheye2Pano = [[IRGLRenderMode2DFisheye2Pano alloc] init];\n    IRGLRenderMode *fisheye = [[IRGLRenderMode3DFisheye alloc] init];\n    IRGLRenderMode *fisheye4P = [[IRGLRenderModeMulti4P alloc] init];\n    NSArray\u003cIRGLRenderMode*\u003e* modes = @[\n    fisheye2Pano,\n    fisheye,\n    fisheye4P,\n    normal\n    ];\n\n    normal.shiftController.enabled = NO;\n\n    fisheye2Pano.contentMode = IRGLRenderContentModeScaleAspectFill;\n    fisheye2Pano.wideDegreeX = 360;\n    fisheye2Pano.wideDegreeY = 20;\n\n    fisheye4P.parameter = fisheye.parameter = [[IRFisheyeParameter alloc] initWithWidth:0 height:0 up:NO rx:0 ry:0 cx:0 cy:0 latmax:80];\n    fisheye4P.aspect = fisheye.aspect = 16.0 / 9.0;\n\n    normal.name = @\"Rawdata\";\n    fisheye2Pano.name = @\"Panorama\";\n    fisheye.name = @\"Onelen\";\n    fisheye4P.name = @\"Fourlens\";\n\n    return modes;\n}\n\n```\n\n## Screenshots\n| Normal | VR |\n|:---:|:---:|\n| ![Normal](./demo/ScreenShots/demo1.PNG)  |  ![VR](./demo/ScreenShots/demo2.PNG)  |\n| VR Box| Fisheye 360 |\n| ![VR Box](./demo/ScreenShots/demo3.PNG) | ![Fisheye 360](./demo/ScreenShots/demo4.PNG) |\n| Panorama| Modes Selection |\n| ![Panorama](./demo/ScreenShots/demo5.PNG) | ![Modes Selection](./demo/ScreenShots/demo6.PNG) |\n| Multi Windows |  |\n| ![Multi Windows](./demo/ScreenShots/demo7.PNG)|  |\n\n\n## Copyright\n\n##### This project has some basic codes from [SGPlayer](https://github.com/libobjc/SGPlayer).\n\nCopyright for portions of project IRPlayer are held by Single, 2017. \nAll other copyright for project IRPlayer are held by irons163, 2019.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firons163%2Firplayer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Firons163%2Firplayer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Firons163%2Firplayer/lists"}