Single App License


  • Perpetual license (does not expire)
  • 1 application
  • Can distribute binary products only
  • Commercial use allowed
  • 6 months support
$249.99 Read License

Developer License


  • Perpetual license (does not expire)
  • 5 applications
  • Can distribute binary products only
  • Commercial use allowed
  • 6 months support
$749.99 Read License

Distributor License


  • Perpetual license (does not expire)
  • Unlimited projects
  • Can distribute code and binary products
  • Commercial use allowed
  • 1 year support
$1,999.99 Read License

14 Day money-back guarantee

Full refund within 14 days of purchase date.

You need to log-in or create an account
  • Create an account
  • Log-in

Please use your real name.

Activation link will be sent to this address.

Minimum 8 characters

Enter your password again

Clicking this button confirms you read and agreed to the terms of use and privacy policy.

(42 ratings)

RadioTunes SDK for iOS

Featured RadioTunes SDK for iOS
Developed by Kemal Taskin, Released Oct 11, 2011

A radio streaming SDK for iOS with support for the http and mms protocols. RadioTunes SDK can play mp3, aac, aac+ and wma audio streams. Includes documented source code of a demo XCode project demonstrating usage.

Objective-C

Tags: ffmpeg , ios , ipad , iphone

RadioTunes Codec Support

A Powerful Radio Streaming Framework for iOS Software Developers!

RadioTunes SDK is written for iOS developers who want to add radio streaming functionality to their app using a couple lines of code. Behind the scenes RadioTunes relies on the iOS AudioQueue framework and the open source LGPL licensed FFmpeg library.

If your app does not require mms/wma codec functionality you can also use the RadioTunes SDK without including the FFmpeg library. The code for mms streaming is completely separated from the code for http streaming so that you can choose which portions of code you want to include in your project.

Disclaimer: RadioTunes SDK can play all Window Media Audio version 9 streams but some streams based on version 10 could fail.

A professional look for your app

Be sure to check out the Radiojive Template if you want a great looking design for your radio app. This template also includes a fully working radio app that uses the RadioTunes SDK!

Download the FREE Trial now and see for yourself how simple it is to add radio playback functionality to your app.

Back to top

Features & Package

Features

  • NEW FEATURE IN VERSION 2.1!
    • ASX playlist support.
  • NEW FEATURES IN VERSION 2.0!
    • Realtime audio recording.
    • Improved audio session management.
    • Bandwidth usage statistics.
  • Support for the http and mms protocols.
  • Supports mp3, aac, aac+ and wma audio streams.
  • PLS, M3U, ASX, XSPF and direct URL support.
  • Parsing of Shoutcast/Icecast metadata.
  • Automatic handling of interruptions like incoming phone calls.
  • Background playback.
  • Robust error handling.
  • Auto reconnect feature.
  • Works on Edge/3G/WiFi.

Package

  • Complete source code of RadioTunes SDK.
  • Detailed documentation with integration instructions.
  • Demo Xcode project.
  • Fully automated FFmpeg build scripts that will build universal static libraries for the armv7 and i386 architectures.
  • Pre-built FFmpeg universal static libraries with support for the mms protocol and wma audio codec.
Back to top

Documentation

Code Documentation

All public classes of RadioTunes SDK are documented using appledoc. See the documentation for further information.

Requirements

The source code of RadioTunes SDK is developed on Xcode 4.5.1 with iOS Base SDK 6.0. RadioTunes SDK works on a deployment target of iOS 5 or greater on armv7 and armv7s and can be used in ARC and non-ARC projects.

Integration

RadioTunes SDK can be integrated in two ways into your app.

1. Add the binary RadioTunes.framework

  • Drag RadioTunes.framework into the "Frameworks" group of your Xcode project.
  • Add the required libraries as shown in the screenshot below. You can add the FFmpeg libraries (libavcodec.a, libavformat.a, libavutil.a and libswresample.a) by dragging them from the "External/ffmpeg/lib" directory into your "Frameworks" group.
  • Open the Build Settings tab and apply the following changes:
    • Other Linker Flags -> -all_load -ObjC -lxml2
    • Don't Create Position Independent Executables -> Yes
  • Add the "Required background modes" key to your project's plist file and set it's value to "App plays audio".
  • Add the following import statement everywhere you want to use RadioTunes SDK: #import <RadioTunes/RadioTunes.h> Binary

2. Add RadioTunes.xcodeproj as a dependency

  • Copy the whole RadioTunes folder into your project's root folder.
  • Drag RadioTunes.xcodeproj into the "Frameworks" group of your Xcode project.
  • Add RadioTunes as a target dependency.
  • Add the required libraries as shown in the screenshot below.
  • Open the Build Settings tab and apply the following changes:
    • Other Linker Flags -> -all_load -ObjC -lxml2
    • Don't Create Position Independent Executables -> Yes
    • Add the following paths to "Header Search Paths":
      • $(SRCROOT)/RadioTunes/External/ffmpeg/include"
      • $(SRCROOT)/RadioTunes/RadioTunes"
    • Add the following path to "Library Search Paths":
      • **$(SRCROOT)/RadioTunes/External/ffmpeg/lib"
  • If your project uses ARC, open the Compile Sources section in the Build Phases tab. Add the -fno-objc-arc compiler flag to all .m source files belonging to RadioTunes SDK!
  • Add the "Required background modes" key to your project's plist file and set it's value to "App plays audio".
  • Add the following import statement everywhere you want to use RadioTunes SDK: #import "RadioTunes.h" Source

Sample Usage

YLHTTPRadio *radio = [[YLHTTPRadio alloc] initWithURL:[NSURL URLWithString:@"http://someurl"]];
[radio play];

YLMMSRadio *radio = [[YLMMSRadio alloc] initWithURL:[NSURL URLWithString:@"mms://someurl"]];
[radio play];
[radio startRecordingWithDestination:filePath];    
View all 34 reviews »

User Reviews

  • 1 of 1 people found this review helpful Cheng Tzu Hsiu 2 months ago
    It is a really very nice sdk, help me a lot. :)
    Flag
    Was this helpful? Yes No
  • 2 of 2 people found this review helpful Patrick Rørth 6 months ago
    Great SDK, looks good, workes awesome !
    Flag
    Was this helpful? Yes No
  • 1 of 1 people found this review helpful gholias 7 months ago
    Works as advertised. No problems installing it.
    Flag
    Was this helpful? Yes No
Read all 347 comments »

Questions & Comments


Or enter your name and Email
  • Damien Glancy License holderSingle App License 19 hours ago
    Kemal: Just an FYI, my Mac app using my OSX variant of your library has eventually shipped at http://radioformac.com
    • Kemal Taskin Developer 15 hours ago
      Hi Damien,

      Congrats with the launch of your Mac app. It's a good idea to have it integrated in the menubar.
  • Patrick Rørth License holderSingle App License 4 weeks ago
    Is there a way to add AirPlay ?
    • Kemal Taskin Developer 4 weeks ago
      Hi Patrick,

      You can add AirPlay to your app by using the MPVolumeView class which is a part of the iOS SDK and not RadioTunes SDK.
    • Patrick Rørth License holderSingle App License 4 weeks ago
      Thanks a lot. I'll give it a try
    • comonitos 2 days ago
      is there any eq support?
  • N. Persson License holderSingle App License 1 month ago
    Hi,

    I have a few things I would like clarified:

    - Have you made your own custom streaming player using CoreAudio /w hardware decoding, or are you using AVFoundation or similar (maybe even libav) to provide decoding + playback functionality?

    - Are there any support for connection loss/network issues, feeding the audio stream to prevent iOS shutting down the background thread when multitasking?

    - You mention m3u support - how about the m3u8 playlist format?

    Thanks!
    • Kemal Taskin Developer 1 month ago
      Hi,

      - RadioTunes SDK is using its own custom audio player based on AudioQueue to provide hardware decoding and playback functionality. MMS audio streams are software decoded by FFmpeg and use AudioQueue for playback.

      - RadioTunes handles audio interruptions and network issues. During network loss it tries to reconnect with a timeout of 60 seconds. There's also a mechanism that can detect the availability of WiFi and automatically switch from 3G to WiFi.

      - RadioTunes works in the background of course and also has ways to reconnect in the background during network loss.

      - M3U is supported but there's no support for m3u8.
    • N. Persson License holderSingle App License 1 month ago
      Thanks for answering!

      So how's it all connected - how would I go about creating my own m3u8 parser using your player? Do I simply extend some "base-playlist-parser"-class and provide the file URLs when I've finished parsing it, or?
    • Kemal Taskin Developer 1 month ago
      Yes, you can create your own parser which must implement the YLPlaylistParserProtocol:
      http://yakamozlabs.com/static/radiotunes/Protocols/YLPlaylistParserProtocol.html

      So your parser should basically return an URL.
    • N. Persson License holderSingle App License 1 month ago
      But there can be multiple chunks//files in a single playlist - there's no support for that?
    • Kemal Taskin Developer 1 month ago
      Right now only one URL is supported. So if you want to play a playlist with multiple URL items in it, you'll need to parse the playlist yourself and pass the URL's one by one to YLHTTPRadio or YLMMSRadio.
    • N. Persson License holderSingle App License 1 month ago
      Alright. Thanks again for answering this quick.

      Last question: I'm going to need the source code to make the changes needed. Would the $250 version be good enough for that, given that I'm only going to use this in a single app distributed on the AppStore?
    • Kemal Taskin Developer 1 month ago
      Yes, all our licenses come with source code but have different terms regarding distribution and the number of apps you can use it with.
    • N. Persson License holderSingle App License 4 weeks ago
      Hey Kemal

      We tried out your "Demo" app on one of our live radio streams (we chose the MP3 one) and it had problems buffering (took ages - >10s - and ran out constantly).

      The phone was connected to the LTE network with a 30 mbit up- and downstream connection.

      Is this a known issue or something easily fixable?

      The streams were the same as those used by TuneIn.
    • Kemal Taskin Developer 4 weeks ago
      Hi,

      10 seconds is not normal, it should be more like 2-3 seconds. Can you share the radio URL with me? You can also mail it to "kemal dot taskin at gmail dot com" if it's private.
You must be logged-in to vote. Log-in to your account or register now.