Giter Site home page Giter Site logo

maddox / wallop Goto Github PK

View Code? Open in Web Editor NEW
167.0 38.0 41.0 6.58 MB

๐Ÿ“บ A transcoding server for your HDHomeRun Prime

Ruby 52.41% CSS 1.38% JavaScript 3.28% CoffeeScript 14.13% Shell 3.52% HTML 25.28%
video-streaming ffmpeg http-live-streaming ios

wallop's Issues

Safari windows

safari windows, Firefox and internet explorer does not work either as far as i can tell there is no way to view from this on a windows PC,

no video... http 404 and 420

Super idea!

I am not getting video in browser, lets me select channels and then alternates between tuning/prepairing messages. Any idea where i should be looking to fix?

Setup works streaming to VLC client

Hardware Model HDHR3-CC
Firmware Version 20140121
DTCP-IP DTCP 1.7-SD20130219
WMDRM-NDT WMDRM 10-SD20130219
Memory Report 64 MB SDRAM, 2 MB Flash

Computer: MBP 2013
Browser: safari

== Sinatra/1.4.3 has taken the stage on 8888 for development with backup from Thin

Thin web server (v1.5.1 codename Straight Razor)
Maximum connections set to 1024
Listening on 0.0.0.0:8888, CTRL+C to stop
127.0.0.1 - - [28/Feb/2014 07:59:39] "GET / HTTP/1.1" 302 - 0.0019
127.0.0.1 - - [28/Feb/2014 07:59:39] "GET / HTTP/1.1" 302 - 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:39] "GET /channels?type=favorites HTTP/1.1" 200 6071 0.0390
127.0.0.1 - - [28/Feb/2014 07:59:42] "GET /channels/504 HTTP/1.1" 200 4589 0.0031
127.0.0.1 - - [28/Feb/2014 07:59:42] "GET /channels/504/status HTTP/1.1" 404 - 0.0007
127.0.0.1 - - [28/Feb/2014 07:59:42] "GET /channels/504.m3u8 HTTP/1.1" 404 - 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:42] "POST /channels/504/tune?resolution=1280x720&bitrate=8000k HTTP/1.1" 200 29 0.0028
127.0.0.1 - - [28/Feb/2014 07:59:42] "GET /channels/504.m3u8 HTTP/1.1" 420 - 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:42] "GET /channels/504.m3u8 HTTP/1.1" 420 - 0.0005
127.0.0.1 - - [28/Feb/2014 07:59:43] "GET /channels/504/status HTTP/1.1" 200 82 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:44] "GET /channels/504/status HTTP/1.1" 200 82 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:45] "GET /channels/504/status HTTP/1.1" 200 82 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:46] "GET /channels/504/status HTTP/1.1" 404 - 0.0006
127.0.0.1 - - [28/Feb/2014 07:59:46] "POST /channels/504/tune?resolution=1280x720&bitrate=8000k HTTP/1.1" 200 29 0.0009

Viewing Timeout?

Is is possible to have a viewing timeout? I've noticed over the course of a few weeks we have 1 or 2 sessions that just keep going. I'm not sure if this is due to a roku just getting left playing or if the roku didn't close the session properly.

If it's not something that can easily be implementing I guess we could just restart the wallop server via cron but I'd love a more elegant solution.

Thanks!

Wallop loads, but no channel list

Hello,

Sorry if a noob post / question, but I can't seem to get any channel data to load upon starting up wallop. The menu is visible, and I have setup my config file to point to the ip address of the homerun. I have noticed that there isn't a channels directory at all. (in app\public) Is this something that wallop automatically creates, or have I mucked something during installation? Would really love to get this working, but I seem to have hit a roadblock. Any suggestions? I can paste logs if needed, but I'm not showing any errors (404's or otherwise)...

Issue with launchd

Several months ago when I first set this up I was able to install the process and have it boot on startup. However in the past month or so (first time getting to reporting it) the process says its already installed but it doesnt appear to boot automatically or recover from being stopped, I have manually launch it.

I've attempted numerous uninstall / reinstalls and just think I'm not doing something in the right order to clean up whatever went wrong.

Any suggestions?

Issues with watching channels on FreeBSD

Hello,

I adapted your install guide as best as I could on my FreeBSD 9.1 system. I compiled ffmpeg from ports with:

AACPLUS
FAAC
FFSERVER
FREETYPE
FREI0R
OPENCV
SCHROEDINGER
THEORA
VORBIS
VO_AACENC
VPX
X264
XVID

I did a gem install bundler and then manually went through your scripts to install the dependencies. I changed the config file to point to my HDHomeRun Prime, made sure the ffmpeg path was correct and then started the server with RACK_ENV=production bundle exec ruby app/app.rb

I am able to browse to the server on port 8888 just fine and I see the channel lineup. However when I click on the channel using safari, it just loops between tuning channel and preparing stream.

The logs are filled with things such as:
10.50.3.142 - - [16/Oct/2013 17:56:11] "GET /channels/2/status HTTP/1.1" 404 - 0.0005
10.50.3.142 - - [16/Oct/2013 17:56:11] "POST /channels/2/tune HTTP/1.1" 200 29 0.0009

I realize that I'm using an unsupported platform, but was hoping someone would be able to shed some light on this.

Unknown encoder 'libfaac'

So... I compiled ffmpeg from source and tried to add libfaac, but it seems that libfaac support has been completely removed from ffmpeg.

http://git.videolan.org/?p=ffmpeg.git;a=commit;h=dc0f711459e0c682bf9f94ba38d26736e90cff45

It seems though that the HDHomeRun Prime is outputting FAAC audio, and the wallop.rb function is calling to just copy the audio streams, so ffmpeg is failing everything when using more modern versions.. any ideas how we can fix this? Maybe I'm not understanding the problem 100% either. Looking at the log looks like the wallop is trying to force faac encoding.. Here is a slice of my ffmpeg log:

Input #0, mpegts, from 'http://192.168.11.138:5004/auto/v1021':
Duration: N/A, start: 20007.707911, bitrate: N/A
Program 1020
Stream #0:0[0x1661], 64, 1/90000: Video: mpeg2video (Main), 1 reference frame ([2][0][0][0] / 0x0002), yuv420p(tv, top first, left), 1920x1080 [SAR 1:1 DAR 16:9], 0/1, Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn, 59.94 tbc
Stream #0:10x1662, 65, 1/90000: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
Stream #0:20x1663, 65, 1/90000: Audio: ac3 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, fltp, 384 kb/s
Stream #0:3[0x1664], 0, 1/90000: Data: scte_35, 0/1
Successfully opened the file.
Parsing a group of options: output url /home/rreese/wallop/tmp/1021.m3u8.
Applying option ac (set number of audio channels) with argument 2.
Applying option acodec (force audio codec ('copy' to copy stream)) with argument libfaac.
Applying option b:v (video bitrate (please use -b:v)) with argument 3000k.
Applying option vcodec (force video codec ('copy' to copy stream)) with argument libx264.
Applying option s (set frame size (WxH or abbreviation)) with argument 1280x720.
Applying option r (set frame rate (Hz value, fraction or abbreviation)) with argument 29.97.
Applying option map (set input stream mapping) with argument 0:0.
Applying option map (set input stream mapping) with argument 0:1.
Successfully parsed a group of options.
Opening an output file: /home/rreese/wallop/tmp/1021.m3u8.
Unknown encoder 'libfaac'

Ubuntu 15.04, Google Chrome not working

Hi,

I'm running wallop from a docker container on Ubuntu 14.04 server. I'm trying to watch stream in Google Chrome browser on Ubuntu 15.04 x64. I get :
image
but stream does not start to play.

This is part of wallop.log:

212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /channels/5012 HTTP/1.1" 200 4891 0.0009
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /css/bootstrap.min.css HTTP/1.1" 304 - 0.0006
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /css/bootstrap-responsive.min.css HTTP/1.1" 304 - 0.0007
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /css/styles.css HTTP/1.1" 304 - 0.0015
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /css/font-awesome.min.css HTTP/1.1" 304 - 0.0021
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/jquery-ui-1.9.1.min.js HTTP/1.1" 304 - 0.0020
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/jquery-1.9.1.min.js HTTP/1.1" 304 - 0.0019
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/plugins/spin.min.js HTTP/1.1" 304 - 0.0006
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/plugins/jquery.spin.js HTTP/1.1" 304 - 0.0005
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/bootstrap.min.js HTTP/1.1" 304 - 0.0006
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/src/channel.coffee HTTP/1.1" 304 - 0.0005
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/src/favorites.coffee HTTP/1.1" 304 - 0.0006
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/src/settings.coffee HTTP/1.1" 304 - 0.0005
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/coffee-script.js HTTP/1.1" 304 - 0.0006
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /js/src/channel.coffee HTTP/1.1" 304 - 0.0010
212.56.227.238 - - [05/Nov/2015 09:11:58] "GET /channels/5012.m3u8 HTTP/1.1" 206 - 0.0023
212.56.227.238 - - [05/Nov/2015 09:11:59] "GET /channels/5012/status HTTP/1.1" 200 81 0.0015
212.56.227.238 - - [05/Nov/2015 09:11:59] "GET /js/src/favorites.coffee HTTP/1.1" 304 - 0.0013
212.56.227.238 - - [05/Nov/2015 09:11:59] "GET /channels/5012.m3u8 HTTP/1.1" 206 - 0.0017

and ffmpeg.log:

root@fb45c60c6b36:/wallop/log# tail -f ffmpeg.log 
[mpeg2video @ 0x34a9e20] Invalid frame dimensions 0x0.
    Last message repeated 9 times

Error running setup, should add one step to README

Hi, I was attempting to get wallop working on my server but the bundle install in the setup/script was failing.

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:434:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:513:in `block in try_link0'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/tmpdir.rb:88:in `mktmpdir'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:510:in `try_link0'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:534:in `try_link'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:620:in `block in try_ldflags'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:613:in `with_ldflags'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:619:in `try_ldflags'
        from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/mkmf.rb:1725:in `pkg_config'
        from extconf.rb:65:in `pkg_config_wrapper'
        from extconf.rb:92:in `<main>'

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/ejakubowski/wallop/vendor/gems/ruby/2.0.0/extensions/universal-darwin-14/2.0.0/eventmachine-1.2.0.1/mkmf.log

extconf failed, exit code 1

Gem files will remain installed in /Users/ejakubowski/wallop/vendor/gems/ruby/2.0.0/gems/eventmachine-1.2.0.1 for inspection.
Results logged to /Users/ejakubowski/wallop/vendor/gems/ruby/2.0.0/extensions/universal-darwin-14/2.0.0/eventmachine-1.2.0.1/gem_make.out

An error occurred while installing eventmachine (1.2.0.1), and Bundler cannot continue.
Make sure that `gem install eventmachine -v '1.2.0.1'` succeeds before bundling.

Based on the errors I installed the xcode command line tools with the following command:

xcode-select --install

After installing that the error went away and setup worked. I'm running on a Mac Yosemite. Thanks!

wallop HTTP interface stuck on "preparing stream"

Just installed wallop since i have HDHomerun prime. Though when i try opening any channel. it gets stuck on "preparing stream"

On terminal, see this.

127.0.0.1 - - [14/Oct/2013 23:24:43] "GET /channels/622/status HTTP/1.1" 200 87 0.0008
127.0.0.1 - - [14/Oct/2013 23:24:44] "GET /channels/622/status HTTP/1.1" 200 87 0.0008
127.0.0.1 - - [14/Oct/2013 23:24:45] "GET /channels/622/status HTTP/1.1" 200 87 0.0009
127.0.0.1 - - [14/Oct/2013 23:24:46] "GET /channels/622/status HTTP/1.1" 200 87 0.0008
127.0.0.1 - - [14/Oct/2013 23:24:47] "GET /channels/622/status HTTP/1.1" 200 87 0.0008
127.0.0.1 - - [14/Oct/2013 23:24:48] "GET /channels/622/status HTTP/1.1" 200 87 0.0008
127.0.0.1 - - [14/Oct/2013 23:24:49] "GET /channels/622/status HTTP/1.1" 200 87 0.0008

Plex?

First let me say wallop is awesome, thanks!

Has anyone got it to work with Plex?

New auto-tune isn't working for me

I just did a pull and got #4, but it doesn't appear to be working for me. I'm not sure if I should see a request for /channel/x/tune or a "tuning channel" entry in any of the outputs or logs (I'm not), but I've added a log entry right before the ffmpeg command that I'm not seeing either. It doesn't ever seem to be getting to tune command as near as I can tell.

Output looks as below, with 404s continuing until I eventually give up. Based on #4, I'm guessing the first 404 is expected, but after that it ought to tune...

== Sinatra/1.3.5 has taken the stage on 8888 for production with backup from Thin
>> Thin web server (v1.5.0 codename Knife)
>> Maximum connections set to 1024
>> Listening on 0.0.0.0:8888, CTRL+C to stop

192.168.1.191 - - [21/Jul/2013 10:20:55] "GET /channels/7 HTTP/1.1" 200 2354 0.0212
192.168.1.191 - - [21/Jul/2013 10:20:56] "GET /channels/7.m3u8 HTTP/1.1" 404 - 0.0043
192.168.1.191 - - [21/Jul/2013 10:20:56] "GET /channels/7/status HTTP/1.1" 404 - 0.0039
192.168.1.191 - - [21/Jul/2013 10:20:57] "GET /channels/7/status HTTP/1.1" 404 -

Thoughts?

plist doesn't work

Sep 18 15:52:05 xxxx com.apple.xpc.launchd1: Service could not initialize: Unable to set current working directory. error = 2: No such file or directory, path = /usr/opt/wallop: 15F34: xpcproxy + 12068 [1343][F7717708-ACF7-307D-B04E-998DFC36598F]: 0x2

The WorkingDirectory key is correct in the plist but the service won't start. I can't find any reference to /usr/opt/wallop anywhere. Not in the wallop dir, not in the com.wallop.plist file that I've generated from your scripts.

Proxy support

Wallop is really nifty! I'm most excited that it seems to provide a ffmpeg configuration that doesn't freeze during streaming. Thanks!

I was wondering if you had any suggestions for hooking wallop up to some sort of proxy running elsewhere. I have a server that has great upstream bandwidth but my home connection (where my tuner is) does not. It would be nice to support multiple clients watching the same stream while only paying for the bandwidth 1x out of my home connection.

I was thinking about using the nginx-rtmp-module.

Connection Refused

Do I need my HDHomeRun to be set up before I access the web interface?
When I try to access it I get [Internal Server Error] with the following in the command window.

Log

I also had to create the config file to even get the server to start, don't know if that was related.

Was messing around and broke something

Ok so I'll admit I was messing with ruby which I don't know and seemed to have broken something. Wallop started throwing 500s, I rolled back the code to master and then changed the config file again but when I went to run 'script/server' to test things were back to working order I got an error around being unable to load EventMachine C extension and to use "require 'em/pure_ruby'".

Adding that to boot.rb at least got sinatra booting again but things still appear to be white screening. Odd because I did a full git pull reset so none of my code hacking are around anymore.

Is it possible wallop is still running in a process somewhere? I did attempt to uninstall it from launchd.

All I was really trying to do was give Wallop another variable url to pull from, basically storing the raw url without the http protocol so I could attempt to pass it to other apps as a secondary link.

500 Internal Server Error when getting channel list

Hi,

When I use urllib or urllib2 in python to get a list of channels the servers returns an 500 error. I can use curl with no issue. I can also use urllib2 to tune and get the status of a channel. It only fails when I try to pull the list. Are there debug logs I can look at? I need to use python because I'm writing an XBMC plugin to play Wallop channels.

Python 2.7.6 (default, Mar 22 2014, 22:59:56)
[GCC 4.8.2] on linux2
Type "help", "copyright", "credits" or "license" for more information.

import urllib2
urllib2.urlopen("http://192.168.1.202:8888/channels")
Traceback (most recent call last):
File "", line 1, in
File "/usr/lib/python2.7/urllib2.py", line 127, in urlopen
return _opener.open(url, data, timeout)
File "/usr/lib/python2.7/urllib2.py", line 410, in open
response = meth(req, response)
File "/usr/lib/python2.7/urllib2.py", line 523, in http_response
'http', request, response, code, msg, hdrs)
File "/usr/lib/python2.7/urllib2.py", line 448, in error
return self._call_chain(_args)
File "/usr/lib/python2.7/urllib2.py", line 382, in _call_chain
result = func(_args)
File "/usr/lib/python2.7/urllib2.py", line 531, in http_error_default
raise HTTPError(req.get_full_url(), code, msg, hdrs, fp)
urllib2.HTTPError: HTTP Error 500: Internal Server Error

JSON::ParserError - 399: unexpected token at

wallop refuses to coperate. I have installed it as pre the instructions.

message:

127.0.0.1 - - [14/Feb/2014 00:15:29] "GET /channels?type=favorites HTTP/1.1" 500 30 127.2288
JSON::ParserError - 399: unexpected token at '[{"GuideNumber":"1","GuideName":"SRF 1","Tags":"f..... way to many entries here ... GuideNumber":"839","GuideName":"Rai Radio 4","Tags":""}':
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/json-1.7.7/lib/json/common.rb:155:in `parse'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/json-1.7.7/lib/json/common.rb:155:in `parse'
    /Users/chronos/Documents/workspace/wallop/lib/wallop.rb:121:in `lineup'
    /Users/chronos/Documents/workspace/wallop/lib/wallop.rb:139:in `favorite_lineup'
    app/app.rb:45:in `block in <class:App>'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1541:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1541:in `block in compile!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in `[]'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in `block (3 levels) in route!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:966:in `route_eval'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in `block (2 levels) in route!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:987:in `block in process_route'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:985:in `catch'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:985:in `process_route'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:948:in `block in route!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:947:in `each'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:947:in `route!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1059:in `block in dispatch!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `block in invoke'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `catch'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `invoke'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1056:in `dispatch!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:882:in `block in call!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `block in invoke'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `catch'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in `invoke'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:882:in `call!'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:870:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:212:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/xss_header.rb:18:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/path_traversal.rb:16:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/json_csrf.rb:18:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/base.rb:49:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/base.rb:49:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-protection-1.5.0/lib/rack/protection/frame_options.rb:31:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-1.5.2/lib/rack/logger.rb:15:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:212:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:205:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/rack-1.5.2/lib/rack/head.rb:11:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:175:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1949:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1449:in `block in call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1726:in `synchronize'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/sinatra-1.4.3/lib/sinatra/base.rb:1449:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/thin-1.5.1/lib/thin/connection.rb:81:in `block in pre_process'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/thin-1.5.1/lib/thin/connection.rb:79:in `catch'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/thin-1.5.1/lib/thin/connection.rb:79:in `pre_process'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:1037:in `call'
    /Users/chronos/Documents/workspace/wallop/vendor/gems/ruby/2.0.0/gems/eventmachine-1.0.3/lib/eventmachine.rb:1037:in `block in spawn_threadpool'

Preparing stream...

When I hit the web interface I just see, Preparing stream..., tunning channel...

On the console I see this fly on the screen

192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0027
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0027
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0030
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0026
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0025
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0026
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0027
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0028
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0027
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0026
192.168.15.185 - - [25/Jul/2015 18:05:14] "GET /channels/1999/status HTTP/1.1" 200 88 0.0026

What would be some reasons I don't actually see any video displayed in Safari?

Internal server error

Hi,
Please, I have installed Wallop but I must have done something wrong.
When I run script/start I get "Internal server error" in the browser.
When I run script/server I get "OpenURI::HTTPError at /channels 404 Not Found".
selection_001

I have installed gem, ffmpeg and ruby first and then Wallop.
I changed config file to point to corret host and ffmpeg path.
PS: I have a PRIME.
Could you please shed some light on what could be the issue?
Thanks
Sbre

Terminal output:

Maximum connections set to 1024
Listening on 0.0.0.0:8888, CTRL+C to stop
194.168.0.15 - - [05/Aug/2014 08:37:08] "GET / HTTP/1.1" 302 - 0.0013
OpenURI::HTTPError - 404 Not Found:
/usr/lib/ruby/1.9.1/open-uri.rb:346:in open_http' /usr/lib/ruby/1.9.1/open-uri.rb:775:inbuffer_open'
/usr/lib/ruby/1.9.1/open-uri.rb:203:in block in open_loop' /usr/lib/ruby/1.9.1/open-uri.rb:201:incatch'
/usr/lib/ruby/1.9.1/open-uri.rb:201:in open_loop' /usr/lib/ruby/1.9.1/open-uri.rb:146:inopen_uri'
/usr/lib/ruby/1.9.1/open-uri.rb:677:in open' /usr/lib/ruby/1.9.1/open-uri.rb:33:inopen'
/home/gordo/apps/wallop/lib/wallop.rb:121:in lineup' /home/gordo/apps/wallop/lib/wallop.rb:139:infavorite_lineup'
app/app.rb:45:in block in <class:App>' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1541:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1541:in block in compile!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in[]'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in block (3 levels) in route!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:966:inroute_eval'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:950:in block (2 levels) in route!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:987:inblock in process_route'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:985:in catch' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:985:inprocess_route'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:948:in block in route!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:947:ineach'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:947:in route!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1059:inblock in dispatch!'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in block in invoke' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:incatch'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in invoke' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1056:indispatch!'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:882:in block in call!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:inblock in invoke'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:in catch' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1041:ininvoke'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:882:in call!' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:870:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:212:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/xss_header.rb:18:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/path_traversal.rb:16:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/json_csrf.rb:18:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/base.rb:49:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/base.rb:49:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-protection-1.5.0/lib/rack/protection/frame_options.rb:31:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-1.5.2/lib/rack/logger.rb:15:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-1.5.2/lib/rack/commonlogger.rb:33:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:212:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:205:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/rack-1.5.2/lib/rack/head.rb:11:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/showexceptions.rb:21:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:175:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1949:incall'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1449:in block in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1726:insynchronize'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/sinatra-1.4.3/lib/sinatra/base.rb:1449:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:81:inblock in pre_process'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:in catch' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/thin-1.5.1/lib/thin/connection.rb:79:inpre_process'
/home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/eventmachine-1.0.3/lib/eventmachine.rb:1037:in call' /home/gordo/apps/wallop/vendor/gems/ruby/1.9.1/gems/eventmachine-1.0.3/lib/eventmachine.rb:1037:inblock in spawn_threadpool'

Log:

Logfile created on 2014-08-05 08:36:48 -0400 by logger.rb/31641

I, [2014-08-05T08:36:48.544000 #20018] INFO -- : Starting up
194.168.0.15 - - [05/Aug/2014 08:37:08] "GET / HTTP/1.1" 302 - 0.0010
194.168.0.15 - - [05/Aug/2014 08:37:08] "GET /sinatra/500.png HTTP/1.1" 304 - 0.0100
194.168.0.15 - - [05/Aug/2014 11:44:49] "GET /sinatra/500.png HTTP/1.1" 304 - 0.0023

Trouble opening m3u8 stream

First I just want to say thank you for making wallop! I will be working on first streaming to a simple Roku app for football season, then I may see if I can get it to stream to a plex media server. Should be fairly easy with your API.

I've got it running on my Mac, but I am unable to get the streams to actually play. I've tried it in Safari as well as opening the stream in VLC, both just hang there and don't display anything. I can see the clients are making GET requests to get the m3u8 and .ts files, but they never actually play the video. I can also see ffmpeg working. Any idea why I'm having trouble viewing the stream?

In case it helps, here is the output of ffmpeg -i. I compiled it just a few days ago.

ffmpeg version N-56198-gbbcaf25 Copyright (c) 2000-2013 the FFmpeg developers
  built on Sep 12 2013 00:33:06 with llvm-gcc 4.2.1 (LLVM build 2336.11.00)
  configuration: --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-libaacplus --enable-libcelt --enable-libfaac --enable-libfdk-aac --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-openssl --enable-libtheora --enable-libvo-aacenc --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --prefix=/usr/local
  libavutil      52. 43.100 / 52. 43.100
  libavcodec     55. 31.101 / 55. 31.101
  libavformat    55. 16.102 / 55. 16.102
  libavdevice    55.  3.100 / 55.  3.100
  libavfilter     3. 84.100 /  3. 84.100
  libswscale      2.  5.100 /  2.  5.100
  libswresample   0. 17.103 /  0. 17.103
  libpostproc    52.  3.100 / 52.  3.100

Suggestions

First thing first. This is a great start maddox. The picture quality of streaming video is great and the interface is simple and clean. i watched tv on my ipad mini today for an hour while working out. I think wallop has great potential and I hope you are working on it. I had few suggestions which i wanted to pass it along.

  1. The interface is simple but buggy. When i select a channel, it goes to tuning to preparing streaming to back to tuning to streaming is ready to play and sometimes that text keeps going on for pages. I don't think the text is beneficial for users, i would just show the icon of loading until the streaming starts.

  2. Once the streaming starts on mobile devices, it would be cool to make the video full screen automatically.

  3. The streaming takes a good 15-20 seconds to starts. I have a 6 core mac pro, gigabit ethernet. I'm not sure if this happens with other and if there is something could be done to improve the performance + start the streaming faster.

I have lot of other ideas but i'll hold on for now :)
thanks again for working on wallops.

Error when attempting to launch script/server

I get this error:

Failed to match sequence (ALL_SPACE (TABLE / TABLE_ARRAY / KEY_VALUE / COMMENT_LINE){0, } ALL_SPACE) at line 5 char 1.
- Don't know what to do with "port = โ€œ88" at line 5 char 1. /Users/MoyChan/wallop/lib/wallop.rb:54:in expand_path': no implicit conversion of nil into String (TypeError)
from /Users/MoyChan/wallop/lib/wallop.rb:54:in transcoding_path' from /Users/MoyChan/wallop/lib/wallop.rb:59:in setup'
from /Users/MoyChan/wallop/app/boot.rb:22:in <top (required)>' from app/app.rb:2:in require'
from app/app.rb:2:in `

'

I'm EXTREMELY green and can not for the life of me figure this out. Help!

"Internal Server Error" on Ubuntu 13.04 w/ HDHomeRun (Dual - NOT the Prime)

I'm probably doing something wrong here, but ...

What I did:

  • apt-get installed bundler and ffmpeg
  • cloned git repository
  • cd'd in, ran script/setup
  • received this error: "cp: cannot stat โ€˜config/config.example.tomlโ€™: No such file or directory"
  • checked /config directory, there was no config.example.toml file, so I commented that line out of the setup script and ran again just in case.
  • manually adjusted the config.toml file for my setup (entered static IP of my HDHomeRun, set it to start at channel 2 since I'm using OTA, adjusted path of ffmpeg to /usr/bin/ffmpeg, and changed transcoding path)
  • started the server
  • was able to connect via browser
  • clicking on links at top for All channels or HD channels just gives me an "Internal Server Error" message.

Now, I realize I'm not running it on the recommended setup at all, but I'm really hoping to get this working. Don't know where the logs are going, since I'm on Ubuntu (if they're going anywhere at all, didn't see a way to change this in any of the included files).

So is this not working because I'm on Linux, because it's not an HDHomeRun Prime, because I'm using OTA, or a combination of any/all of the above?

GREAT WORK by the way. Been waiting on something like this for a long time. This is truly exciting!

HD streams are jittery/pixelated (SD plays fine)

So excited to get this installed and running, thanks for your effort. I'm seeing one issue with my setup, SD streams play fine, but HD streams fail to play. The streams will usually start and immediately become unresponsive and distorted.

Here is my ffmpeg log, any thoughts? Running on Ubuntu 12.04.

Changing channels results in multiple ffmpeg processes

I'm running this on a lightweight virtual server that only has enough resources to handle 1 channel at a time. If I start watching a channel then change to another, the system will spawn multiple ffmpeg processes until the unwatched one reaches some timeout. But until that timeout occurs, my latest channel is unwatchable due to resource contention of ffmpegs. Please add something like a max ffmpeg process setting to the config

Problem after upgrading to mavericks

after upgrading I'm getting this?/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:in require': cannot load such file -- bundler/setup (LoadError) from /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/rubygems/core_ext/kernel_require.rb:45:inrequire'
from bin/rackup:14:in `

'

assume something is wrong with my ruby? but I'm not up on ruby.

Any ideas?

thanks!

Docker Image

I have created a Docker image which contains the latest FFMPEG and Wallop. It can be found here:

https://registry.hub.docker.com/u/ipstatic/wallop/

I don't know if you would like to add it to the README or some other means to communicate it to anyone interested. Let me know if I can help in any way (adding a pull request with the updated README for example).

Docker Container - Internal Server Error

I receive an Internal Server Error after firing up wallop via docker. See below, and let me know if I provide any additional details.

config.toml
ffmpeg_path = "/ffmpeg/bin/ffmpeg"
acodec = "libfdk_aac"
transcoding_path = "/tmp"
hdhomerun_host = "10.0.0.106"
port = "8888"

docker startup command
docker run --rm --name wallop -v $(pwd)/config.toml:/wallop/config/config.toml -p 8888:8888 ipstatic/wallop:latest

hdhr firmware
20160902beta3

hdhr channel lineup
http://10.0.0.106/lineup.json
returns json

Docker Terminal Output after accessing http://localhost:8888 and receiving Internal Server Error
== Sinatra (v1.4.7) has taken the stage on 8888 for production with backup from Thin
172.17.0.1 - - [18/Sep/2016:08:56:33 +0000] "GET / HTTP/1.1" 302 - 0.0026
2016-09-18 08:56:33 - NoMethodError - undefined method []' for nil:NilClass: /wallop/lib/wallop.rb:128:inblock in lineup'
/wallop/lib/wallop.rb:126:in each' /wallop/lib/wallop.rb:126:inlineup'
/wallop/lib/wallop.rb:143:in favorite_lineup' app/app.rb:45:inblock in class:App'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:inblock in compile!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in block (3 levels) in route!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:inroute_eval'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in block (2 levels) in route!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:inblock in process_route'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in catch' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:inprocess_route'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:in block in route!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:ineach'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in route!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:inblock in dispatch!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in block in invoke' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:incatch'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in invoke' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:indispatch!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in block in call!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:inblock in invoke'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in catch' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:ininvoke'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in call!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/logger.rb:15:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:inblock in call'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:in synchronize' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:86:in block in pre_process' /wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:incatch'
/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in pre_process' /wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in block in spawn_threadpool' 172.17.0.1 - - [18/Sep/2016:08:56:33 +0000] "GET /channels?type=favorites HTTP/1.1" 500 30 0.0196 172.17.0.1 - - [18/Sep/2016:08:56:33 +0000] "GET / HTTP/1.1" 302 - 0.0015 2016-09-18 08:56:33 - NoMethodError - undefined method[]' for nil:NilClass:
/wallop/lib/wallop.rb:128:in block in lineup' /wallop/lib/wallop.rb:126:ineach'
/wallop/lib/wallop.rb:126:in lineup' /wallop/lib/wallop.rb:143:infavorite_lineup'
app/app.rb:45:in block in <class:App>' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in block in compile!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:inblock (3 levels) in route!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:in route_eval' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:inblock (2 levels) in route!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:in block in process_route' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:incatch'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in process_route' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:inblock in route!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in each' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:inroute!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in block in dispatch!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:inblock in invoke'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in catch' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:ininvoke'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in dispatch!' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:inblock in call!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in block in invoke' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:incatch'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in invoke' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:incall!'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/logger.rb:15:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in call' /wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:incall'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in block in call' /wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:insynchronize'
/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in call' /wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:86:inblock in pre_process'
/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in catch' /wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:inpre_process'
/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in call' /wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:inblock in spawn_threadpool'
172.17.0.1 - - [18/Sep/2016:08:56:33 +0000] "GET /channels?type=favorites HTTP/1.1" 500 30 0.0016

Loops preparing and tuning

My installation keeps looping between preparing and tuning. I've seen similar issues on here that main end in correctly installing ACC.

67.185.134.181 - - [15/Aug/2016:21:00:26 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0031
67.185.134.181 - - [15/Aug/2016:21:00:27 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0030
67.185.134.181 - - [15/Aug/2016:21:00:27 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0026
67.185.134.181 - - [15/Aug/2016:21:00:28 -0700] "GET /channels/7/status HTTP/1.1" 404 - 0.0021
67.185.134.181 - - [15/Aug/2016:21:00:28 -0700] "POST /channels/7/tune?resolution=640x360&bitrate=320k&profile=mobile HTTP/1.1" 200 29 0.0165
67.185.134.181 - - [15/Aug/2016:21:00:28 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:29 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023
67.185.134.181 - - [15/Aug/2016:21:00:29 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:29 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:30 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023
67.185.134.181 - - [15/Aug/2016:21:00:30 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:30 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:31 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023
67.185.134.181 - - [15/Aug/2016:21:00:31 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0025
67.185.134.181 - - [15/Aug/2016:21:00:31 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0025
67.185.134.181 - - [15/Aug/2016:21:00:32 -0700] "GET /channels/7/status HTTP/1.1" 404 - 0.0024
67.185.134.181 - - [15/Aug/2016:21:00:32 -0700] "POST /channels/7/tune?resolution=640x360&bitrate=320k&profile=mobile HTTP/1.1" 200 29 0.0045
67.185.134.181 - - [15/Aug/2016:21:00:32 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023
67.185.134.181 - - [15/Aug/2016:21:00:32 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023
67.185.134.181 - - [15/Aug/2016:21:00:33 -0700] "GET /channels/7/status HTTP/1.1" 200 79 0.0023

Well I did the compile and it says I have ACC.

โžœ wallop git:(master) ffmpeg
ffmpeg version N-81350-g3282e31 Copyright (c) 2000-2016 the FFmpeg developers
built with gcc 6.1.1 (GCC) 20160621 (Red Hat 6.1.1-3)
configuration: --enable-gpl --enable-libx264 --enable-libmp3lame --enable-nonfree --enable-libfdk-aac
libavutil 55. 28.100 / 55. 28.100
libavcodec 57. 52.100 / 57. 52.100
libavformat 57. 46.101 / 57. 46.101
libavdevice 57. 0.102 / 57. 0.102
libavfilter 6. 51.100 / 6. 51.100
libswscale 4. 1.100 / 4. 1.100
libswresample 2. 1.100 / 2. 1.100
libpostproc 54. 0.100 / 54. 0.100
Hyper fast Audio and Video encoder
usage: ffmpeg [options] [[infile options] -i infile]... {[outfile options] outfile}...

Use -h to get full help or, even better, run 'man ffmpeg'
โžœ wallop git:(master)

I also think I have the correct settings...

โžœ wallop git:(master) cat config/config.toml
hdhomerun_host = "10.0.0.100"
hdhr_transcode = false
ffmpeg_path = "/usr/local/bin/ffmpeg"
transcoding_path = "./tmp"
port = "8888"
hd_start = 500

[ffmpeg]
threads = 2
acodec = "libfaac"
framerate = "29.97"
h264_preset = "veryfast"
hls_time = 2
hls_wrap = 40
options = "-loglevel warning -async 1 -tune zerolatency -flags -global_header -fflags +genpts -map 0:0 -map 0:1"

[channel_logos]
506 = "cbs.png"
508 = "abc.png"
511 = "fox.png"
512 = "nbc.png"
โžœ wallop git:(master) ls /usr/local/bin/ffmpeg
/usr/local/bin/ffmpeg
โžœ wallop git:(master) ping -c 4 10.0.0.100
PING 10.0.0.100 (10.0.0.100) 56(84) bytes of data.
64 bytes from 10.0.0.100: icmp_seq=1 ttl=64 time=0.261 ms
64 bytes from 10.0.0.100: icmp_seq=2 ttl=64 time=0.369 ms
64 bytes from 10.0.0.100: icmp_seq=3 ttl=64 time=0.373 ms
64 bytes from 10.0.0.100: icmp_seq=4 ttl=64 time=0.374 ms

--- 10.0.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3000ms
rtt min/avg/max/mdev = 0.261/0.344/0.374/0.049 ms
โžœ wallop git:(master)

[Docker] Can't open Web Interface

I'm using the docker image and I followed your instructions.

When I try to connect to the WebUI I get these errors:

wallop_1      | 10.0.0.61 - - [02/Nov/2016:01:01:56 +0000] "GET /channels/1/status HTTP/1.1" 404 - 0.0021
wallop_1      | 2016-11-02 01:01:56 - NoMethodError - undefined method `[]' for nil:NilClass:
wallop_1      | 	/wallop/lib/wallop.rb:29:in `ffmpeg_command'
wallop_1      | 	app/app.rb:75:in `block in <class:App>'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `block in compile!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (3 levels) in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:in `route_eval'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (2 levels) in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:in `block in process_route'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `process_route'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:in `block in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `each'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in `block in dispatch!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in `dispatch!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `block in call!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `call!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/logger.rb:15:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `block in call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:in `synchronize'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:86:in `block in pre_process'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `pre_process'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in `block in spawn_threadpool'

Or:

wallop_1      | 10.0.0.61 - - [02/Nov/2016:01:02:02 +0000] "GET /channels?type=hd HTTP/1.1" 500 30 0.0097
wallop_1      | 2016-11-02 01:02:05 - NoMethodError - undefined method `[]' for nil:NilClass:
wallop_1      | 	/wallop/lib/wallop.rb:128:in `block in lineup'
wallop_1      | 	/wallop/lib/wallop.rb:126:in `each'
wallop_1      | 	/wallop/lib/wallop.rb:126:in `lineup'
wallop_1      | 	app/app.rb:47:in `block in <class:App>'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1611:in `block in compile!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (3 levels) in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:994:in `route_eval'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:975:in `block (2 levels) in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1015:in `block in process_route'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1013:in `process_route'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:973:in `block in route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `each'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:972:in `route!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1085:in `block in dispatch!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1082:in `dispatch!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `block in call!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `block in invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1067:in `invoke'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:907:in `call!'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:895:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/xss_header.rb:18:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/path_traversal.rb:16:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/json_csrf.rb:18:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/base.rb:49:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-protection-1.5.3/lib/rack/protection/frame_options.rb:31:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/logger.rb:15:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/commonlogger.rb:33:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:219:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:212:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/rack-1.6.4/lib/rack/head.rb:13:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:182:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:2013:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `block in call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1787:in `synchronize'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/sinatra-1.4.7/lib/sinatra/base.rb:1487:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:86:in `block in pre_process'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `catch'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/thin-1.6.4/lib/thin/connection.rb:84:in `pre_process'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in `call'
wallop_1      | 	/wallop/vendor/gems/ruby/2.3.0/gems/eventmachine-1.2.0.1/lib/eventmachine.rb:1076:in `block in spawn_threadpool'

Channel never becomes ready for streaming

Looking at the Prime's tuner logs, you can see Wallop tuning and un-tuning at an alarmingly quick rate as well. Any ideas what may be causing this?

I, [2017-01-10T00:14:50.390900 #80097]  INFO -- : Tuning channel 760 with transcode profile mobile
I, [2017-01-10T00:14:50.391200 #80097]  INFO -- : Creating session for channel 760
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0013
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0004
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0004
192.168.1.184 - - [10/Jan/2017:00:14:50 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
I, [2017-01-10T00:14:50.432751 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:50.933099 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:51.434744 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:51.939506 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
192.168.1.184 - - [10/Jan/2017:00:14:52 -0800] "GET /channels/760/status HTTP/1.1" 200 83 0.0004
I, [2017-01-10T00:14:52.441468 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:52.942747 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:53.444934 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:53.950279 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80101, :ready=>false, :last_read=>2017-01-10 00:14:50 -0800}
I, [2017-01-10T00:14:53.950402 #80097]  INFO -- : SESSSION COMPLETED - CLEANING UP - 760 - 80101
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "GET /channels/760/status HTTP/1.1" 404 - 0.0004
I, [2017-01-10T00:14:54.397424 #80097]  INFO -- : Tuning channel 760 with transcode profile mobile
I, [2017-01-10T00:14:54.397788 #80097]  INFO -- : Creating session for channel 760
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0010
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0009
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0005
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0004
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0007
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0004
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0002
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0002
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0002
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0005
192.168.1.184 - - [10/Jan/2017:00:14:54 -0800] "POST /channels/760/tune?resolution=1280x720&bitrate=3000k&profile=mobile HTTP/1.1" 200 29 0.0003
I, [2017-01-10T00:14:54.450850 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80103, :ready=>false, :last_read=>2017-01-10 00:14:54 -0800}
I, [2017-01-10T00:14:54.956187 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80103, :ready=>false, :last_read=>2017-01-10 00:14:54 -0800}
I, [2017-01-10T00:14:55.461496 #80097]  INFO -- : CHECKING READY STATUS OF SESSION - {:channel=>"760", :pid=>80103, :ready=>false, :last_read=>2017-01-10 00:14:54 -0800}

Cannot configure images for channels with decimal points

Perhaps I am just using the toml syntax wrong, but when I set the image for a channel with a decimal place, like 5.1, I get this:

Failed to match sequence (ALL_SPACE (KEY_GROUP / KEY_VALUE / COMMENT_LINE){0, } ALL_SPACE) at line 10 char 1.
`- Don't know what to do with "5.1 = \"abc" at line 10 char 1.

config:

[channel_logos]
5.1 = "abc.png"

Audio only

No matter what I do I can only get audio. Any idea?

Installed but just receiving 404s in logs

After installing FFMPEG, the proper GCC tweaks for ML and having the script run successfully (minus the caveat of the "missing" config file from the other issue.) I get Wallop to load, can reach the server page for it, it correctly shows channels but when I go to the stream page for a channel it just continues to spin and I receive the following on the command line:

127.0.0.1 - - [02/Jul/2013 17:44:32] "POST /channels/504/tune HTTP/1.1" 200 29 0.0030
127.0.0.1 - - [02/Jul/2013 17:44:32] "GET /channels/504 HTTP/1.1" 200 2406 0.0047
127.0.0.1 - - [02/Jul/2013 17:44:32] "GET /channels/504.m3u8 HTTP/1.1" 404 - 0.0014
127.0.0.1 - - [02/Jul/2013 17:44:32] "GET /channels/504/status HTTP/1.1" 404 - 0.0014
127.0.0.1 - - [02/Jul/2013 17:44:32] "GET /favicon.ico HTTP/1.1" 404 447 0.0015
127.0.0.1 - - [02/Jul/2013 17:44:33] "GET /channels/504/status HTTP/1.1" 404 - 0.0011
127.0.0.1 - - [02/Jul/2013 17:44:34] "GET /channels/504/status HTTP/1.1" 404 - 0.0011
127.0.0.1 - - [02/Jul/2013 17:44:35] "GET /channels/504/status HTTP/1.1" 404 - 0.0011

I've seen it throw 420 and 404 codes on the .m3u8 step as if its not creating the file or something, any help would be great, this is an AWESOME project.

Not Showing on CentOS release 6.2 (Final) x64

I have compiled ffmpeg by following Centos instruction at https://trac.ffmpeg.org/wiki/CentosCompilationGuide.

I see a dark grey frame saying "Stream is ready", but nothing is playing from channel 600. I am using FIOS in NJ. The top of ffmpeg log is as below. If you knew the fix, this would be a quickie for me. Otherwise, I will have to find time to dig into ffmpeg code to find the fixes.

[mpeg2video @ 0x205ca60] Invalid frame dimensions 0x0.
Last message repeated 24 times
[mpegts @ 0x2057040] Could not find codec parameters for stream 2 (Unknown: none ([5][0][0][0] / 0x0005)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[ac3 @ 0x205d4c0] frame sync error
Error while decoding stream #0:1: Invalid data found when processing input
[mpegts @ 0x2057040] PES packet size mismatch
Last message repeated 1 times
[ac3 @ 0x205d4c0] exponent out-of-range
[ac3 @ 0x205d4c0] error decoding the audio block
[mpegts @ 0x2057040] PES packet size mismatch
[ac3 @ 0x205d4c0] frame sync error
Error while decoding stream #0:1: Invalid data found when processing input
[mpeg2video @ 0x205ca60] ac-tex damaged at 7 64
[mpeg2video @ 0x205ca60] 00 motion_type at 41 5
[mpeg2video @ 0x205ca60] invalid mb type in P Frame at 36 6

mavericks help

I am having issues setting this up w/ Mavericks.

I've tried installing ffmpeg with brew, however it appears that brew doesn't fully support the Xcode version that ships with mavericks.

Error: Homebrew doesn't know what compiler versions ship with your version of
Xcode.

I found a precompiled version of ffmpeg but apparently its not compiled with fdk_aac
http://ffmpegmac.net ffmpeg pre compiled

I receive the following in the ffmpeg log while trying to play any stream via wallop...

[mpeg2video @ 0x7f9c7501d200] Invalid frame dimensions 0x0.
Last message repeated 8 times
Unknown encoder 'libfdk_aac'

If anyone has had luck compiling ffmpeg in Mavericks can you point me in the right direction.

Thanks in advance!!

H.265 support?

Would love to see support for H.265, with an option in settings to select desired codec. I know there aren't many devices that offer native support for it yet but being able to stream 1080p video in the same 3Mbps network footprint that a 720p H.264 stream consumes now would be pretty cool.

Wallop getting 404 - Stuck on "Preparing Stream"

Not sure what I'm missing, getting the same results on two different MAC installs:

Here is the log entry from the FFMPEG log:

[mpeg2video @ 0x7f951b83fa00] 0x0 is invalid
Last message repeated 4 times
[mpegts @ 0x7f951b806600] max_analyze_duration 2000000 reached at 2002000 microseconds
[mpegts @ 0x7f951b806600] Estimating duration from bitrate, this may be inaccurate
Unknown encoder 'libfdk_aac'

Terminal display:

127.0.0.1 - - [19/Jan/2014 11:35:41] "POST /channels/3.1/tune HTTP/1.1" 200 29 0.0012
127.0.0.1 - - [19/Jan/2014 11:35:41] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0008
127.0.0.1 - - [19/Jan/2014 11:35:41] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:41] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0008
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:42] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0011
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0008
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:43] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:44] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:44] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:44] "GET /channels/3.1/status HTTP/1.1" 200 88 0.0007
127.0.0.1 - - [19/Jan/2014 11:35:44] "GET /channels/3.1/status HTTP/1.1" 404 - 0.0006
127.0.0.1 - - [19/Jan/2014 11:35:44] "GET /channels/3.1/status HTTP/1.1" 404 - 0.0016

Apache2 proxy via location

Not sure if this is something that needs a tweak to the underlying code or my own stupidity, but I'm trying to use Apache to proxy to wallop so that I can access my HDHR remotely from work and other firewalled locations (where port 8888 is blocked).

My apache config file contains the following:

 <Location /wallop>
 ProxyPass http://[wallop host]:8888/
 ProxyPassReverse http://[wallop host]:8888/
 RequestHeader set X-Forwarded-Proto "https"
 Order Deny,Allow
 Deny from all
 allow from [my specified IPs/domains]
 Satisfy any
 </Location>

When I got to https://[my apache host]/wallop I clearly get directed to the wallop server. But none of the urls that wallop generates internally to redirect between favorites/all channels/streams are rewritten to have an initial "wallop" so I quickly get bounced away from wallop and back to the main apache server (where it of course dies with a 404 file not found error). Is there some easy tweak I could do to install a "wallop/" prefix to all of the internally generated urls?

Thanks,

Seth Green

Ceton

Forgive me if this isn't the place or best place to request this, however I've looked endlessly for another solution and this appears to be the only thing close to what I need.

I have a setup that uses a 6 tuner ETH6 from Ceton, which in practice is the same as a HDHomeRun with less software support. The Ceton works well and uses only one cable card, which for reasons I won't go into was a requirement for me.

I'm interested in either customizing a solution or pulling together a few different pieces to enable my various android, roku, and perhaps RaspberryPI/xbmc devices as extenders to view live and/or recorded content either directly from the ETH6 and/or from the WMC

Let me know where else I should seek information if this is not the best place.

Expose bitrate, encoder, and other params in config

This is a suggestion for a future enhancement. I am using the graphics accelerated ffmpeg which uses a different video codec, h264_qsv instead of libx264. I'm also using wallop in conjunction with Roku-HDHomeRun and the quality seems to default to 3000k, but I would like it higher (ideal for hardwired connections). I also like to copy the audio as is instead of defaulting to 2 channel AAC. Thanks.

Video stutter / choppy both SD and HD regardless of resolution or bitrate

Maddox, I love your work on Wallop and it has caused me to explore ffmpeg and its streaming capabilities. I also had to learn a bit about ruby, home-brew etc. Thanks for the effort you have put into this. The streams I get are usable, but with some issues. Even after letting them line out for a minute or two, I still have issues and am trying to find out what can be done to get smooth HD video (720 p would be OK).

I am using ffmpeg 2.2.2 and have tried different versions of x264.rb as your vendor file does not have a copy. What do you suggest as the best source for x264.rb as the versions do vary greatly?

I get choppy video or stutter and pixilation several times per minute. I am on a desktop Mac with ethernet connection to the HDHomeRun. I am using a quad core i5 running at 3.4 Ghz and 16 GB of Ram.

So my issue seems to be software and not hardware related. Here is a small segment of the ffmpeg log file:

[mpeg2video @ 0x7f9c0a81d200] Invalid frame dimensions 0x0.
Last message repeated 18 times
[mpegts @ 0x7f9c0a017800] Could not find codec parameters for stream 2 (Unknown: none ([134][0][0][0] / 0x0086)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
[mpegts @ 0x7f9c0a017800] PES packet size mismatch
[ac3 @ 0x7f9c0a81d800] exponent out-of-range
[ac3 @ 0x7f9c0a81d800] error decoding the audio block
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 7 51
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 37 52
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 53
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 10 54
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 55
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 56
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 5 57
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 58
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 39 59
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 16 60
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 18 61
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 1 62
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 48 63
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 13 65
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 25 66
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 18 49
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 17 23
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 16 25
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 20 26
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 27
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 4 28
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 23 29
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 31 30
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 10 31
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in P Frame at 38 32
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 33
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 12 35
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 36
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 3 37
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 38
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 39
[mpeg2video @ 0x7f9c0a81d200] slice mismatch
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 5 41
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 5 42
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 7 43
[mpeg2video @ 0x7f9c0a81d200] invalid cbp 0 at 8 44
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 24 45
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 3 46
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 1 47
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 4 48
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 0 49
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 15 50
[mpeg2video @ 0x7f9c0a81d200] Warning MVs not available
[ac3 @ 0x7f9c0a81d800] frame sync error
Error while decoding stream #0:1: Invalid data found when processing input
[mpegts @ 0x7f9c0a017800] PES packet size mismatch
[ac3 @ 0x7f9c0a81d800] bandwidth code = 62 > 60
[ac3 @ 0x7f9c0a81d800] error decoding the audio block
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 34
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 35
[mpeg2video @ 0x7f9c0a81d200] skip with previntra
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 37
[mpeg2video @ 0x7f9c0a81d200] skip with previntra
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 3 38
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 14 52
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 6 39
[mpeg2video @ 0x7f9c0a81d200] skip with previntra
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 7 40
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 9 54
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 14 41
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 9 55
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 42
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 7 56
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 15 43
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 57
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 33 44
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 28 45
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 3 59
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in B Frame at 19 46
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in B Frame at 3 61
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 47
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 18 62
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 6 48
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 63
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 12 49
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 6 50
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 7 65
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 25 66
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 87 26
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 11
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 12
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 5 13
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 14
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 15
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 9 16
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 2 17
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 18
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 19
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 20
[mpeg2video @ 0x7f9c0a81d200] ac-tex damaged at 0 21
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 11 22
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 11 23
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 33 24
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 1 25
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 2 26
[mpeg2video @ 0x7f9c0a81d200] mb incr damaged
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 27 28
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 3 29
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 26 30
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 28 31
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 4 32
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 12 33
[ac3 @ 0x7f9c0a81d800] frame sync error
Error while decoding stream #0:1: Invalid data found when processing input
[mpegts @ 0x7f9c0a017800] PES packet size mismatch
[ac3 @ 0x7f9c0a81d800] frame sync error
Error while decoding stream #0:1: Invalid data found when processing input
[mpeg2video @ 0x7f9c0a81d200] invalid mb type in B Frame at 10 51
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 28 52
[mpeg2video @ 0x7f9c0a81d200] 00 motion_type at 8 53

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.