First of all; HTTP Streaming on iOS and Android devices are different. Apple uses HLS (HTTP Live Streaming) while Android uses HDS (HTTP Dynamic Streaming).
from Apple's official documentation :
In a typical configuration, a hardware encoder takes audio-video input, encodes it as H.264 video and AAC audio, and outputs it in an MPEG-2 Transport Stream, which is then broken into a series of short media files by a software stream segmenter. These files are placed on a web server. The segmenter also creates and maintains an index file containing a list of the media files. The URL of the index file is published on the web server. Client software reads the index, then requests the listed media files in order and displays them without any pauses or gaps between segments.
Also there are some ffmpeg forks such as ffmpeg-hls (https://github.com/yfli/ffmpeg-hls)
I recommend you follow this document.(http://www.netmaster.dk/LiveStreaming)
It uses first segmenter that i mentioned above. Just strip AWS ec2 things.
I'm using ffmpeg/RTP to stream audio from Raspberry to my iOS devices. To stream a local file to iOS device (which has 192.168.1.3 IP address in this example) :
ffmpeg -i "Pink Martini_Sympathique/CDImage.flac" -strict experimental -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.1.3:1234
To listen stream from iOS device i use OPlayer (great player to watch movies/series also) and just call the stream URL : rtp://192.168.1.3:1234
After a bit caching/buffering it play smoothly.
To stream your mic/line-in sound change the ffmpeg commmand :
arecord -f cd -D plughw:0,0 | ffmpeg -i - -strict experimental -acodec libmp3lame -ab 32k -ac 1 -re -f rtp rtp://192.168.1.3:1234