{"id":13586833,"url":"https://github.com/maddox/wallop","last_synced_at":"2025-05-06T21:30:07.942Z","repository":{"id":7814596,"uuid":"9185379","full_name":"maddox/wallop","owner":"maddox","description":"📺 A transcoding server for your HDHomeRun Prime","archived":false,"fork":false,"pushed_at":"2022-05-27T17:39:41.000Z","size":6741,"stargazers_count":167,"open_issues_count":15,"forks_count":40,"subscribers_count":37,"default_branch":"master","last_synced_at":"2025-05-06T09:14:23.178Z","etag":null,"topics":["ffmpeg","http-live-streaming","ios","video-streaming"],"latest_commit_sha":null,"homepage":"","language":"Ruby","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/maddox.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":"2013-04-03T02:49:55.000Z","updated_at":"2023-04-26T12:32:16.000Z","dependencies_parsed_at":"2022-08-31T00:21:35.602Z","dependency_job_id":null,"html_url":"https://github.com/maddox/wallop","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maddox%2Fwallop","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maddox%2Fwallop/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maddox%2Fwallop/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/maddox%2Fwallop/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/maddox","download_url":"https://codeload.github.com/maddox/wallop/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252771779,"owners_count":21801780,"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":["ffmpeg","http-live-streaming","ios","video-streaming"],"created_at":"2024-08-01T15:05:50.492Z","updated_at":"2025-05-06T21:30:07.919Z","avatar_url":"https://github.com/maddox.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# :zap: Wallop :zap:\n\n:warning::warning::warning:\n\nThis project has been discontinued. Check out what we made with the knowledge we learned by building Wallop: https://getchannels.com\n\n\n:warning::warning::warning:\n\nWallop is a transcoding server for your [HDHomeRun Prime](https://www.silicondust.com/product/hdhomerun-prime/).\n\nWallop lets you watch TV streams on your iPhone, iPad, Roku, Web, Android device. Even away from home.\n\n## Warning\n\nWallop is still very new, and because of that, it's unstable.\n\nNot unstable as in crash prone, unstable as in lots will change. Not a lot has been decided on, so things could change any time. Keep an eye on the [pull requests](https://github.com/maddox/wallop/pulls) in this repo to see what is new and what has changed.\n\n## Why?\n\nThe HDHomeRun Prime is an amazing CableCard TV tuner. It has 3 tuners, and makes its tuned content available over your local network. It even lets you capture these streams via HTTP with a simple CURL command!\n\nThe problem is, TV is generally broadcast in MPEG2 at bitrates hovering around 16-20mbps. This causes 3 problems:\n\n* These streams are usually too large for WiFi.\n* These streams are definitely too large to stream to your mobile device when away from home.\n* Basically no modern devices decode MPEG2 in hardware, leaving the devices to do it with CPU.\n\nThis means, as awesome as this device is, and as accessible as the TV streams are, it's still basically useless. It can't stream to your phone, tablet, or even over your WiFi.\n\nThe solution is simple. Take these MPEG2 streams and transcode them to h.264 at a lower bitrate. That's what Wallop does.\n\n## How\n\nUsing FFMPEG, Wallop tunes the channel you request and consumes the stream from the HDHomeRun. It then transcodes it to a more consumable bitrate and broadcasts it as an HTTP Live Stream.\n\nVoila! Now basically any modern device can stream TV from your HDHomeRun Prime.\n\n\n## Setup\n\nWallop is written in Ruby and runs fine with the Ruby that ships on OS X 10.8.\n\nWallop has only been tested running on OS X, though its just Ruby and FFMPEG, so it should run ok elsewhere.\n\n### FFMPEG\n\nYou should have a modern version of FFMPEG compiled and installed. I'd suggest you just compile a fresh version from the most recent source. [Here](http://ffmpeg.org/trac/ffmpeg/wiki/MacOSXCompilationGuide) are good instructions on how get FFMPEG built for OS X. It's not that bad!\n\n```\n$ brew update\n$ cp vendor/libaacplus.rb /usr/local/Library/Formula/\n$ cp vendor/x264.rb /usr/local/Library/Formula/\n$ brew install x264 --HEAD\n$ brew install vendor/ffmpeg.rb --with-fdk-aac --with-libaacplus --with-libvo-aacenc --with-schroedinger --with-opencore-amr --disable-stripping\n```\n\n### Quickie Set Up\n\nWallop is a simple Ruby server. All you need to do is clone it down, install its dependencies, and start it up!\n\nBe sure you have bundler installed first. `gem install bundler` Bundler is a dependency management tool for Ruby.\n\n```sh\ngit clone https://github.com/maddox/wallop.git\ncd wallop\nscript/setup\nscript/start\nopen http://127.0.0.1:8888\n```\n\n### Starting Server\n\nTo start the server after you've already set it up, just run this:\n\n```sh\nscript/start\nopen http://127.0.0.1:8888\n```\n\n### Installing/Uninstalling\n\nYou can optionally use [launchd](http://en.wikipedia.org/wiki/Launchd) in OS X to start Wallop on boot. Not only will this start the server when the computer boots, but it will keep it running in case it crashes.\n\nI'd suggest you make sure Wallop is running normally via `script/start` before you install it this way.\n\n#### Install\n\nThis will install the script to launch it at boot and keep it alive. If you seem to be having trouble, you can tail the log for the install at `~/Library/Logs/wallop.log`.\n\n```sh\nscript/install\n```\n\n#### Uninstall\n\nThis will remove the script from launchd.\n\n```sh\nscript/uninstall\n```\n\n#### Restart\n\nThis will restart the server. If you update the server, you'll want to run this to get the updates running.\n\n```sh\nscript/restart\n```\n### Updating\n\nIf you want to update Wallop, just do a normal `git pull` on the repo you cloned down. Watch the development via this repo to see if there's anything you want to update for.\n\nAfter updating the code, run:\n\n```sh\nscript/update\n```\n\nThis will fulfill any new dependencies as well as anything else that needs to happen after an update.\n\n### Configuring\n\nWallop is pretty simple, but it does have a couple user configurable settings.\n\nYou can edit these settings via the `config/config.toml.example` file. Once you have updated your setting save the file back to the config directory as `config.toml`.\n\n```toml\nhdhomerun_host = \"192.168.1.13\"\nffmpeg_path = \"/usr/local/bin/ffmpeg\"\ntranscoding_path = \"./tmp\"\nport = \"8888\"\nhd_start = 500\n```\n\n##### `hdhomerun_host`\nThe IP address of your HDHomeRun Prime on your network.\n\n##### `ffmpeg_path`\nThe path to your FFMPEG binary.\n\n##### `transcoding_path`\nThe path where Wallop will write the temporary segments when transcoding and streaming the tv streams. This defaults to the `tmp` directory in Wallops own directory. If you want these files written somewhere else, you can change that here.\n\n##### `port`\nThe port that the server will run on.\n\n##### `hd_start`\nThe start channel of your HD channels. Most providers start all of their HD channels at a certain number. Providing this number will let you browse JUST your HD channels.\n\n### Network Logos\n\nWallop supports the serving of Network Logos if you configure your channels to use them. Within the `config.toml` file, you can map your channels to images. Just map the channel number to a file name and place those files into `/app/public/logos`. Wallop will send the logo urls along in its JSON response to services talking to it.\n\n```\n[channel_logos]\n506 = \"cbs.png\"\n508 = \"abc.png\"\n511 = \"fox.png\"\n512 = \"nbc.png\"\n```\n\nyou can see that `cbs.png` corresponds to:\n\n![](/app/public/logos/cbs.png)\n\n## Logs\n\nLogs are written out to the `log` directory.\n\nWallop rolls its logs whenever it starts up. So only information for the current process will be found in `log/wallop.log`. When Wallop starts, it moves the old log to `log/wallop.old.log` before starting up.\n\n## Usage\n\nWallop is more of a tool than a user facing application. It's designed to be used in coordination with other things like:\n\n* an iPhone app\n* an XBMC/Plex addon/channel\n\nIt has a full API that lets you kick off the transcode, pick your resolution and bitrate, and provides status of the stream. [Read the documentation](/docs) on how to talk to Wallop.\n\n### Via Web\n\nWallop DOES have some web views that you can use to watch a stream though. Just open the server with your browser to see a list of channels. Tap/click a channel to start the stream.\n\nJust point your browser to [http://localhost:8888](http://localhost:8888), or whatever host it's on.\n\nJust tap/click a channel, and it will do it's thing and start streaming.\n\n![](http://cl.ly/image/1j1s3J2q0r16/Image%202013.04.09%2012:35:42%20PM.png)\n\n### Favorite Channels\n\nYou have LOTS of channels. To alleviate this pain, you can set which ones are your favorites. Just tap/click the star and it will be set as a favorite channel.\n\nThis should speed up getting to the channels you want.\n\n### Browser Support\n\nBasically the only browser that is supported right now is Safari. Sorry, Google hates HLS for some reason.\n\nChrome won't play the HLS stream natively, and [JWPlayer](http://www.longtailvideo.com/jw-player/pricing/) wants $300 per year for their player that will fallback to flash for HLS streams. Even for non-commercial use. :thumbsdown:\n\n* :thumbsup: iPhone (Safari)\n* :thumbsup: iPad (Safari)\n* :thumbsup: OS X (Safari)\n* :thumbsdown: Chrome\n* :question: Android\n\nI don't have any Android devices, nor do I have any experience with them. So your milage may vary. I'd love to hear some feedback via [issues](https://github.com/maddox/wallop/issues)\n\n## Docker Image\n\nTo get Wallop up and running quickly you can use the Docker image provided by\n[ipstatic](https://github.com/ipstatic). It contains everything required to run\nWallop.\n\nOn a machine that has Docker installed, pull the image down:\n\n```sh\ndocker pull ipstatic/wallop\n```\n\nNext copy the sample config.toml file and ensure these directives are set:\n```toml\nffmpeg_path = \"/ffmpeg/bin/ffmpeg\"\nacodec = \"libfdk_aac\"\ntranscoding_path = \"/tmp\"\n```\n\nThen start the container:\n\n```sh\ndocker run --rm --name wallop -v $(pwd)/config.toml:/wallop/config/config.toml -p 8888:8888 ipstatic/wallop:latest\n```\n\n## Contributing\n\n* Fork the repo\n* Create a topic branch\n* Push your topic branch\n* Submit a pull request for your feature\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaddox%2Fwallop","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmaddox%2Fwallop","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmaddox%2Fwallop/lists"}