{"id":24550797,"url":"https://github.com/ethand91/mediasoup-ios-client","last_synced_at":"2025-04-03T03:11:32.101Z","repository":{"id":36751028,"uuid":"223136312","full_name":"ethand91/mediasoup-ios-client","owner":"ethand91","description":"Mediasoup 3 iOS Client","archived":false,"fork":false,"pushed_at":"2022-10-21T05:34:09.000Z","size":201284,"stargazers_count":134,"open_issues_count":40,"forks_count":68,"subscribers_count":10,"default_branch":"master","last_synced_at":"2025-03-24T09:02:43.156Z","etag":null,"topics":["ios","ios-sdk","libmediasoupclient","mediasoup","objective-c","objective-c-plus-plus","webrtc"],"latest_commit_sha":null,"homepage":"","language":"Objective-C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"isc","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ethand91.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","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-11-21T09:24:45.000Z","updated_at":"2025-02-28T14:40:25.000Z","dependencies_parsed_at":"2022-08-08T17:00:54.346Z","dependency_job_id":null,"html_url":"https://github.com/ethand91/mediasoup-ios-client","commit_stats":null,"previous_names":[],"tags_count":30,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethand91%2Fmediasoup-ios-client","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethand91%2Fmediasoup-ios-client/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethand91%2Fmediasoup-ios-client/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ethand91%2Fmediasoup-ios-client/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ethand91","download_url":"https://codeload.github.com/ethand91/mediasoup-ios-client/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246927835,"owners_count":20856198,"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":["ios","ios-sdk","libmediasoupclient","mediasoup","objective-c","objective-c-plus-plus","webrtc"],"created_at":"2025-01-23T01:14:28.233Z","updated_at":"2025-04-03T03:11:32.076Z","avatar_url":"https://github.com/ethand91.png","language":"Objective-C","funding_links":["https://www.buymeacoffee.com/ethand9999"],"categories":[],"sub_categories":[],"readme":"# mediasoup-ios-client\n\nObjective-C wrapper library for libmediasoupclient for building mediasoup iOS based applications.\n\n**This project supports both 64 bit iOS devices and 64 bit iOS Simulators**\n\n![Cocoapods version](https://img.shields.io/cocoapods/v/mediasoup_ios_client?color=green\u0026label=Cocoapods\u0026logo=Cocoapods)\n![License](https://img.shields.io/github/license/ethand91/mediasoup-ios-client)\n\n## Website and Documentation\n\n* [mediasoup.org](https://mediasoup.org/)\n\n## Support Forum\n\n* [mediasoup.discourse.group](https://mediasoup.discourse.group/)\n\n---\n\n## Getting Started\n\n### Cocoapods\n\nAdd the below into your Podfile:\n\n```ruby\nuse_frameworks!\n\ntarget \"target\" do\n  pod \"mediasoup_ios_client\"\nend\n```\n\n**You will need to set enable bitcode to false**\n\nDue to the size of the WebRTC.framework with bitcode, it cannot be uploaded to Github.\n\n**Swift users will need to implement a Objective-C Bridging Header**\n\nBridging header sample:\n\nhttps://github.com/ethand91/mediasoup-ios-client-sample/blob/master/mediasoup-ios-cient-sample/mediasoup-ios-cient-sample-Bridging-Header.h\n\n## Documentation\n\n#### API\n\nhttps://github.com/ethand91/mediasoup-ios-client/blob/master/documentation/Api.md\n\n#### INSTALLATION (Only needed for development, not needed if you only intent to use the project)\n\nhttps://github.com/ethand91/mediasoup-ios-client/blob/master/documentation/Installation.md\n\n## Usage Example\n\n```objective-c\n#import \"mediasoup_client_ios/Mediasoupclient.h\n\n// Initialize the underlaying libmediasoupclient\n[Mediasoupclient initializePC];\n\n// Create a Device\nMediasoupDevice *device = [[MediasoupDevice alloc] init];\n\n// Communicate with our server app to retrieve router RTP capabilities\nNSString *routerRtpCapabilities = [mySignalling request:@\"getRouterRtpCapabilities\"];\n\n// Load the device with the routerRtpCapabilities\n[device load:routerRtpCapabilities];\n\n// Check whether we can produce video to the router\nif ![device canProduce:@\"video\"] {\n NSLog(@\"cannot produce video\");\n // Abort next steps\n}\n\n// Create a transport in the server for sending our media through it\nNSDictionary *transportData = [mySignalling request:@\"createTransport\"];\n\n// Object to handle SendTransportListener events\n@interface SendTransportHandler: NSObject\u003cSendTransportListener\u003e\n@property (nonatomic) id delegate;\n@end\n\n@implementation SendTransportHandler\n-(void)onConnect:(Transport *)transport dtlsParameters:(NSString *)dtlsParameters {\n // Here we communicate out local parameters to our remote transport\n [mySignalling request:@\"transport-connect\" transportId:[transport getId] dtlsParameters:dtlsParameters];\n}\n\n-(void)onConnectionStateChange:(Transport *)transport connectionState:(NSString *)connectionState {\n NSLog(@\"sendTransport::onConnectionStateChange newState = %@\", connectionState);\n}\n\n-(NSString *)onProduce:(Transport *)transport kind:(NSString *)kind rtpParameters:(NSString *)rtpParameters appData:(NSString *)appData callback:(void(^)(NSString *))callback {\n // Here we must communicate our local parameters to our remote transport\n NSString *id = [mySignalling request:@\"produce\" transportId:[transport getId] kind:kind rtpParameters:rtpParameters appData:appData];\n \n callback(id);\n}\n@end\n\nSendTransport *sendTransport = [device createSendTransport:sendTransportHandler.delegate id:transportData[\"id\"] iceParameters:transportData[\"iceParameters\"] iceCandidates:transportData[\"iceCandidates\"] dtlsParameters:transportData[\"dtlsParameters\"]];\n\n// Get the device camera\nNSArray *devices = [AVCaptureDevice devicesWithMediaType: AVMediaTypeVideo];\n\n// Start capturing it\nRTCPeerConnectionFactory *factory = [[RTCPeerConnectionFactory alloc] init];\nRTCCameraVideoCapturer *videoCapturer = [[RTCCameraVideoCapturer alloc] init];\n[videoCapturer startCaptureWithDevice:devices[0] format:[devices[0] activeFormat] fps:30];\nRTCVideoSource *videoSource = [factory videoSource];\n[videoSource adaptOutputFormatToWidth:640 height:480 fps:30];\n\nRTCVideoTrack *videoTrack = [factory videoTrackWithSource:videoSource trackId:@\"trackId\"];\n\n// Handler to handle producer events\n@interface ProducerHandler : NSObject\u003cProducerListener\u003e\n@property (nonatomic) id delegate;\n@end\n\n@implementation ProducerHandler\n-(void)onTransportClose:(Producer *)producer {\n NSLog(@\"Producer::onTransportClose\");\n}\n@end\n\n// Produce out camera video\nProducer *videoProducer = [sendTransport produce:producerHandler.delegate track:videoTrack encodings:nil codecOptions:nil];\n```\n\n## Contributing\n\n### Clone the repo and install submodules\n\nDue to the size of the WebRTC static library it cannot be uploaded to Github, therefore you will need to follow the instructions in the build folder and build it yourself. (This step is only needed for development, not for library usage)\n\n```bash\ngit clone https://github.com/ethand91/mediasoup-ios-client.git\ngit submodule init\ngit submodule update\n```\n \n ---\n \n Unfortunately my Macbook broke and I currently can't afford a new one. :( Will continue this project when I get a new mac.\n \n ---\n\n\nLike my work? Any support is appreciated.\n\n\u003ca href=\"https://www.buymeacoffee.com/ethand9999\" target=\"_blank\"\u003e\u003cimg src=\"https://www.buymeacoffee.com/assets/img/custom_images/orange_img.png\" alt=\"Buy Me A Coffee\" style=\"height: 41px !important;width: 174px !important;box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;-webkit-box-shadow: 0px 3px 2px 0px rgba(190, 190, 190, 0.5) !important;\" \u003e\u003c/a\u003e\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethand91%2Fmediasoup-ios-client","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fethand91%2Fmediasoup-ios-client","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fethand91%2Fmediasoup-ios-client/lists"}