-
Notifications
You must be signed in to change notification settings - Fork 15
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
0 parents
commit fe16f55
Showing
16 changed files
with
1,646 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,17 @@ | ||
# Auto detect text files and perform LF normalization | ||
* text=auto | ||
|
||
# Custom for Visual Studio | ||
*.cs diff=csharp | ||
|
||
# Standard to msysgit | ||
*.doc diff=astextplain | ||
*.DOC diff=astextplain | ||
*.docx diff=astextplain | ||
*.DOCX diff=astextplain | ||
*.dot diff=astextplain | ||
*.DOT diff=astextplain | ||
*.pdf diff=astextplain | ||
*.PDF diff=astextplain | ||
*.rtf diff=astextplain | ||
*.RTF diff=astextplain |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,4 @@ | ||
!bin/ | ||
*.exe | ||
.idea/ | ||
tests/ |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,118 @@ | ||
# goicy - AAC/AACplus/AACplusV2 & MP1/MP2/MP3 Icecast/Shoutcast source client | ||
|
||
![Screenshots](http://i.imgur.com/83kEcKO.png?1) | ||
|
||
## What's the point? | ||
goicy is a small, portable and fast MPEG1/2/2.5 Layer1/2/3 and | ||
AAC/AACplus/AACplusV2 Icecast/Shoutcast source client written in Go. | ||
It is written to be extremely light-weight and easy to use. | ||
|
||
|
||
## How it works? | ||
goicy can work in two modes: `ffmpeg` and `file`. | ||
In ffmpeg mode goicy feeds audio files to ffmpeg which recodes them in realtime | ||
to AAC or MP3 format and sends the output to an Icecast or Shoutcast server. | ||
|
||
In file mode goicy reads and parses AAC or MPEG (MP1, MP2, MP3) files and sends them to | ||
the server without any further processing. | ||
|
||
## What files are supported? | ||
In `ffmpeg` mode: any format of file recognizable by ffmpeg is supported. | ||
|
||
In `file` mode: AAC/AACplus/AACplusV2 and MPEG1/MPEG2/MPEG2.5 LayerI/II/III files | ||
can be streamed to a Icecast or Shoutcast server. All possible bitrates are | ||
fully supported, including CBR and VBR. | ||
|
||
## Tell me more. | ||
- Any audio files readable by ffmpeg are supported. All possible bitrates and their variations, including VBR. | ||
- Pretty precise timing. | ||
- Icecast and Shoutcast servers are fully supported. | ||
- Metadata updating supported. The metadata is read from ID3v1 and ID3v2 tags. | ||
It can also be read from cuesheets (.cue file with the same name as audio file). | ||
|
||
|
||
## What platforms are supported? | ||
Linux and Windows at the moment. | ||
|
||
## What is required? | ||
ffmpeg configured with `--enable-libfdk-aac`. Compile your own, or get the static compiled binaries, | ||
for example here: https://sourceforge.net/projects/ffmpeg-hi/ | ||
|
||
## How do I install goicy? | ||
The `go get` command will automatically fetch all dependencies required, compile the binary and place it in your $GOPATH/bin directory. | ||
|
||
go get github.com/stunndard/goicy | ||
|
||
## How do I configure it? | ||
Read `goicy.ini`. Tune it for your needs. | ||
```INI | ||
[stream] | ||
|
||
; stream type | ||
; must be 'file' or 'ffmpeg' | ||
streamtype = ffmpeg | ||
... | ||
|
||
[ffmpeg] | ||
|
||
; path to the ffmpeg executable | ||
; can be just ffmpeg or ffmpeg.exe if ffmpeg is in PATH | ||
; your ffmpeg should be compiled with fdk_aac support enabled! | ||
ffmpeg = ffmpeg-hi10-heaac | ||
|
||
; sample rate in Hz | ||
; ffmpeg will use its internal resampler | ||
samplerate = 44100 | ||
|
||
; number of channels | ||
; 1 = mono, 2 stereo | ||
channels = 2 | ||
|
||
; AAC stream bitrate | ||
bitrate = 192000 | ||
|
||
; AAC profile | ||
; must be 'lc' for AAC Low Complexity (LC) | ||
; 'he' for AAC SBR (High Efficiency AAC, HEAAC, AAC+, AACplus) | ||
; 'hev2' for AAC SBR + PS (AACplusV2) | ||
aacprofile = lc | ||
``` | ||
|
||
Prepare your static playlist file, like: | ||
``` | ||
/home/goicy/tracks/track1.mp3 | ||
/home/goicy/tracks/track2.flac | ||
/home/goicy/tracks/track3.m4a | ||
/home/goicy/tracks/track4.aac | ||
/home/goicy/tracks/track5.ogg | ||
``` | ||
Mixing different formats in one playlist is perfectly valid in ffmpeg mode! | ||
|
||
In file mode, though, you can only use AAC or MP1/MP2/MP3 files: | ||
``` | ||
/home/goicy/tracks/track1.aac | ||
/home/goicy/tracks/track2.aac | ||
/home/goicy/tracks/track3.aac | ||
/home/goicy/tracks/track4.aac | ||
/home/goicy/tracks/track5.aac | ||
``` | ||
|
||
or | ||
``` | ||
/home/goicy/tracks/track1.mp3 | ||
/home/goicy/tracks/track2.mp3 | ||
/home/goicy/tracks/track3.mp3 | ||
/home/goicy/tracks/track4.mp3 | ||
/home/goicy/tracks/track5.mp3 | ||
``` | ||
|
||
All files should be the same format, bitrate, samplerate and number of channels. | ||
Don't mix different format (MPx/AACx) or different samplerate in one playlist if goicy is set to file | ||
mode. | ||
|
||
|
||
## How do I run it? | ||
goicy goicyini.file, i.e.: | ||
|
||
./goicy /etc/goicy/rock.ini | ||
|
Oops, something went wrong.