{"id":16563134,"url":"https://github.com/stunndard/goicy","last_synced_at":"2025-07-05T09:05:39.883Z","repository":{"id":46005029,"uuid":"60007124","full_name":"stunndard/goicy","owner":"stunndard","description":"AAC and MPEG (MP1, MP2, MP3) Icecast/Shoutcast source client written in Go","archived":false,"fork":false,"pushed_at":"2021-11-21T09:46:14.000Z","size":70,"stargazers_count":70,"open_issues_count":4,"forks_count":15,"subscribers_count":6,"default_branch":"master","last_synced_at":"2025-04-02T00:23:50.783Z","etag":null,"topics":["aac","audio-streaming","golang-application","icecast","mp3","shoutcast"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/stunndard.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2016-05-30T12:04:00.000Z","updated_at":"2024-11-22T03:09:30.000Z","dependencies_parsed_at":"2022-08-25T11:01:15.234Z","dependency_job_id":null,"html_url":"https://github.com/stunndard/goicy","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/stunndard/goicy","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stunndard%2Fgoicy","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stunndard%2Fgoicy/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stunndard%2Fgoicy/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stunndard%2Fgoicy/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/stunndard","download_url":"https://codeload.github.com/stunndard/goicy/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/stunndard%2Fgoicy/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263715328,"owners_count":23500242,"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":["aac","audio-streaming","golang-application","icecast","mp3","shoutcast"],"created_at":"2024-10-11T20:38:49.619Z","updated_at":"2025-07-05T09:05:39.864Z","avatar_url":"https://github.com/stunndard.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# goicy - AAC/AACplus/AACplusV2 \u0026 MP1/MP2/MP3 Icecast/Shoutcast source client\n\n![Screenshots](http://i.imgur.com/83kEcKO.png?1)\n\n## What's the point?\ngoicy is a small, portable and fast MPEG1/2/2.5 Layer1/2/3 and\nAAC/AACplus/AACplusV2 Icecast/Shoutcast source client written in Go.\nIt is written to be extremely light-weight, cross-platform and easy to use.\nIt is a complete rewrite in Go of my old source client called hz and\nwritten in Free Pascal: https://github.com/stunndard/hz\n\n\n## How it works?\ngoicy can work in two modes: `ffmpeg` and `file`.\nIn `ffmpeg` mode goicy feeds audio files to ffmpeg which recodes them in realtime\nto AAC or MP3 format and sends the output to an Icecast or Shoutcast server.\n\nIn `file` mode goicy reads and parses AAC or MPEG (MP1, MP2, MP3) files and sends them to\nthe server without any further processing.\n\n## What files are supported?\nIn `ffmpeg` mode: any format of file recognizable by ffmpeg is supported.\n\nIn `file` mode: AAC/AACplus/AACplusV2 and MPEG1/MPEG2/MPEG2.5 LayerI/II/III files\ncan be streamed to a Icecast or Shoutcast server. All possible bitrates are\nfully supported, including CBR and VBR.\n\n## Tell me more.\n - Any audio files readable by ffmpeg are supported. All possible bitrates and their variations, including VBR.\n - Pretty precise timing.\n - Icecast and Shoutcast servers are fully supported.\n - Metadata updating supported. The metadata is read from ID3v1 and ID3v2 tags.\n   It can also be read from cuesheets (.cue file with the same name as audio file).\n\n\n## What platforms are supported?\nLinux and Windows at the moment.\n\n## What is required?\nffmpeg configured with `--enable-libfdk-aac`. Compile your own, or get the static compiled binaries,\nfor example here: https://sourceforge.net/projects/ffmpeg-hi/\n\n## How do I install goicy?\nThe `go get` command will automatically fetch all dependencies required, compile the binary and place it in your $GOPATH/bin directory.\n\n    go get github.com/stunndard/goicy\n\n## How do I configure it?\nRead `goicy.ini`. Tune it for your needs.\n```INI\n[stream]\n\n; stream type\n; must be 'file' or 'ffmpeg'\nstreamtype = ffmpeg\n...\n\n[ffmpeg]\n\n; path to the ffmpeg executable\n; can be just ffmpeg or ffmpeg.exe if ffmpeg is in PATH\n; your ffmpeg should be compiled with libmp3lame and fdk_aac support enabled!\nffmpeg = ffmpeg-hi10-heaac\n\n; sample rate in Hz\n; ffmpeg will use its internal resampler\nsamplerate = 44100\n\n; number of channels\n; 1 = mono, 2 stereo\nchannels = 2\n\n; AAC stream bitrate\nbitrate = 192000\n\n; AAC profile\n; must be 'lc' for AAC Low Complexity (LC)\n; 'he' for AAC SBR (High Efficiency AAC, HEAAC, AAC+, AACplus)\n; 'hev2' for AAC SBR + PS (AACplusV2)\naacprofile = lc\n```\n\nPrepare your static playlist file, like:\n```\n/home/goicy/tracks/track1.mp3\n/home/goicy/tracks/track2.flac\n/home/goicy/tracks/track3.m4a\n/home/goicy/tracks/track4.aac\n/home/goicy/tracks/track5.ogg\n```\nMixing different formats in one playlist is perfectly valid in `ffmpeg` mode!\n\nHow about a remote file, or a radio station?\n```\nhttp://your.server/your/music.mp3\nhttps://your.box/your/music.mp4\nhttp://your.icecast.radio/\n```\nAny input recognizable by ffmpeg is perfectly valid in `ffmpeg` mode\nSo you can easily reencode and relay internet radios too.\n\n\nIn `file` mode, though, you can only use AAC or MP1/MP2/MP3 files:\n```\n/home/goicy/tracks/track1.aac\n/home/goicy/tracks/track2.aac\n/home/goicy/tracks/track3.aac\n/home/goicy/tracks/track4.aac\n/home/goicy/tracks/track5.aac\n```\n\nor \n```\n/home/goicy/tracks/track1.mp3\n/home/goicy/tracks/track2.mp3\n/home/goicy/tracks/track3.mp3\n/home/goicy/tracks/track4.mp3\n/home/goicy/tracks/track5.mp3\n```\n\nAll files should be the same format, bitrate, samplerate and number of channels.\nDon't mix different format (MPx/AACx) or different samplerate in one playlist if goicy is set to `file`\nmode.\n\n\n## How do I run it?\ngoicy inifile, i.e.:\n\n    ./goicy /etc/goicy/rock.ini\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstunndard%2Fgoicy","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fstunndard%2Fgoicy","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fstunndard%2Fgoicy/lists"}