AndroidHDMI for Channels (ah4c): A virtual channel tuner using HDMI Encoder(s) + streaming stick(s)

I see the no audio works ....

+ adb -s 192.168.50.139 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/SHOHW/6578292319676893105/SHOHW
Warning: Activity not started, its current task has been brought to the front
+ activeAudioCheck 40 false 5 1
++ date +%s
+ local startTime=1715898614
+ local maxDuration=40
+ local minimumLoudness=-50
+ local sleepBeforeAudioCheck=5
+ local sleepAfterAudioCheck=1
+ local preTuneAudioCheck=false
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715898625 - 1715898614 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715898636 - 1715898614 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715898648 - 1715898614 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715898659 - 1715898614 > 40  ))
+ echo 'Active audio stream not detected in 40 seconds.'
+ '[' false = false ']'
+ echo 'Active audio stream not detected after tuning completed'
+ echo 'Killing app and re-tuning...'
+ adb -s 192.168.50.139 shell am force-stop com.xfinity.cloudtvr.tenfoot

2
+ tuneChannel
+ adb -s 192.168.50.139 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/SHOHW/6578292319676893105/SHOHW
+ exit 0
+ finish
+ echo 'bmitune.sh is exiting for 192.168.50.139 with exit code 0'
'
[EXECUTE] Finished running ./scripts/firetv/xfinity/bmitune.sh in 47.692734571s

I noticed that sometimes when you close the Stream it goes back to the guide data and immediately goes to sleep ... so when it starts up again ... it starts with the guide data waits 40 seconds closes and restarts the stream.

OK, so we probably need a sleep 1 or sleep 2 between the KEYCODE_BACK and KEYCODE_HOME in stopbmitune.sh

You read my mine. Was just looking at the code. Easily reproduced happens every time I tune SHOHW.

It is only that Channel that for some reason it will not launch unless you close XFNITY.... All others work ..

I tested with my windows script and the same thing happens not your code.

Could potentially be added to the specialChannels() function, where the app would be closed right away, followed by tuning, rather than waiting for failed audio.

EDIT: NM, the problem happens when stopping that channel, not starting it -- right? We'd need a special channels function in stopbmitune.sh...

EDIT2: I do keep track of last channel tuned for each streaming stick though, so back to my original idea. If the last channel tuned is SHOHW, we could go right to killing the app and then tuning.

This is what I added to my windows script ...

if "%channel%"=="878" adb -s %device% shell am force-stop com.xfinity.cloudtvr.tenfoot

adb -s %device% shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity "%channel_url%" >NUL

@bnhf
BTW your script works it will kill that app after 40 seconds with no sound and retune if you can maybe set that to less.? or set the time as a variable. ? That way it will cover all problems better than excluding a channel.

I think I'm pretty close on getting ah4c set up, but I've got something configured wrong... When I tune a channel in Channels DVR, the log doesn't show any activity for the attempt and no commands appear on the Chromecast.

I'm running ah4c in a docker. The environmental variables in the Portainer stack are:

TAG=latest
DOMAIN=localdomain
IPADDRESS=http://192.168.132.205:7674
NUMBER_TUNERS=2
TUNER1_IP=192.168.132.13:5555
ENCODER1_URL=http://192.168.132.206/8.ts
TUNER2_IP=192.168.132.162:5555
ENCODER2_URL=http://192.168.132.206/12.ts
STREAMER_APP=scripts/chromecast/freeviewnz
CHANNELSIP=192.168.132.145
ALERT_SMTP_SERVER=
ALERT_AUTH_SERVER=
ALERT_EMAIL_FROM=
ALERT_EMAIL_PASS=
ALERT_EMAIL_TO=
LIVETV_ATTEMPTS=25
CREATE_M3US=false
TZ=Pacific/Auckland
HOST_DIR=/data

The log (below the email setting) shows:

2024/05/18 09:00:15 [ENV] ALERT_WEBHOOK_URL
2024/05/18 09:00:15 [ENV] ALLOW_DEBUG_VIDEO_PREVIEW
2024/05/18 09:00:15 [ENV] Creating tuner 1
2024/05/18 09:00:15 [ENV] ENCODER1_URL http://192.168.132.206/8.ts
2024/05/18 09:00:15 [ENV] TUNER1_IP 192.168.132.13:5555
2024/05/18 09:00:15 [ENV] CMD1
2024/05/18 09:00:15 [ENV] TEECMD1
2024/05/18 09:00:15 [ENV] PRE SCRIPT ./scripts/chromecast/freeviewnz/prebmitune.sh
2024/05/18 09:00:15 [ENV] START SCRIPT ./scripts/chromecast/freeviewnz/bmitune.sh
2024/05/18 09:00:15 [ENV] STOP SCRIPT ./scripts/chromecast/freeviewnz/stopbmitune.sh
2024/05/18 09:00:15 [ENV] REBOOT SCRIPT ./scripts/chromecast/freeviewnz/reboot.sh
2024/05/18 09:00:15 [ENV] Creating tuner 2
2024/05/18 09:00:15 [ENV] ENCODER2_URL http://192.168.132.206/12.ts
2024/05/18 09:00:15 [ENV] TUNER2_IP 192.168.132.162:5555
2024/05/18 09:00:15 [ENV] CMD2
2024/05/18 09:00:15 [ENV] TEECMD2
2024/05/18 09:00:15 [ENV] PRE SCRIPT ./scripts/chromecast/freeviewnz/prebmitune.sh
2024/05/18 09:00:15 [ENV] START SCRIPT ./scripts/chromecast/freeviewnz/bmitune.sh
2024/05/18 09:00:15 [ENV] STOP SCRIPT ./scripts/chromecast/freeviewnz/stopbmitune.sh
2024/05/18 09:00:15 [ENV] REBOOT SCRIPT ./scripts/chromecast/freeviewnz/reboot.sh
2024/05/18 09:00:15 [START] ah4c is ready
2024/05/18 09:00:41 [GIN-debug] Request: 192.168.132.104 GET /status/andlogs, latency: 5.059762ms, status: 200
2024/05/18 09:00:42 [GIN-debug] Request: 192.168.132.104 GET /logs?notime, latency: 5.337295ms, status: 200
2024/05/18 09:00:42 [GIN-debug] Request: 192.168.132.104 GET /status, latency: 11.007086ms, status: 200

The source in Custom Channels is:
http://192.168.132.205:7654/m3u/freeviewnz.m3u

The m3u is viewable from ah4c at:
http://192.168.132.205:7654/m3us

If I go to http://192.168.132.205:7655 and then to the shell, I can run the commands successfully. The environmental indicate an IP address of the host using port 7674, but Portainer doesn't show anything running on that port.

Appreciate any guidance.

1 Like

Based on where your M3U is, and where ws-scrcpy is running, it looks like your IPADDRESS s/b:

IPADDRESS=http://192.168.132.205:7654

EDIT: Also, I noticed the docker-compose in the first post of this thread was slightly out-of-date from what's now preferred. So, I'd suggest using the latest compose (just updated in post #1), along with the current set of companion env vars.

2 Likes

We can certainly make the maxDuration value a environment variable, although I believe 40 seconds is the correct number. This is because there will be times when the app isn't already running, and for me, it takes about 35 seconds to v-tune in that instance. In fact, the 40 second setting might be cutting it a bit close, since we certainly don't want the app to be killed because of the max time being exceeded when we have a successful tune.

For now, I'd propose we update this function in bmitune.sh. This will kill the app, if the channel to be tuned is SHOHW :

#Special channels to kill app or reboot FireStick
specialChannels() {
    if [ $specialID = "SHOHW" ]; then
      echo "Tuning to SHOHW, which requires killing the app first..."
      rm $streamerNoPort/last_channel $streamerNoPort/adbAppRunning
      $adbTarget shell am force-stop $packageName
      sleep 2
    elif [ $specialID = "exit" ]; then
      echo "Exit $packageName requested on $streamerIP"
      rm $streamerNoPort/last_channel $streamerNoPort/adbAppRunning
      $adbTarget shell am force-stop $packageName
      exit 0
    elif [ $specialID = "reboot" ]; then
      echo "Reboot $streamerIP requested"
      rm $streamerNoPort/last_channel $streamerNoPort/adbAppRunning
      $adbTarget reboot
      exit 0
    elif [[ -f $streamerNoPort/adbCommunicationFail ]]; then
      rm $streamerNoPort/adbCommunicationFail
      exit 1
    else
      echo "Not a special channel (exit nor reboot)"
      #if appFocusCheck; then
        #echo "$packageName is the app in focus, OK to tune"
      #fi      
    fi
}

As I don't have this problem channel in my lineup, I'd appreciate if you could test the above to be sure it performs as expected. If so, I'll add it to the next build. It should be significantly faster tuning this channel -- as there won't be any need to wait for failed audio first. Doing it this way, we should get confirmation that 40 seconds is long enough to load the app, tune, and confirm audio.

The Problem is that testing this morning after I got Cable back it happened on different Channels. I did a countdown and your 40 seconds is about right ... so there is really nothing for you to change. SHOHW failed then started working.

+ adb -s 192.168.50.139 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/HBOHW/5232923399725817105/HBOHW
Warning: Activity not started, its current task has been brought to the front
+ activeAudioCheck 40 false 5 1
++ date +%s
+ local startTime=1715983624
+ local maxDuration=40
+ local minimumLoudness=-50
+ local sleepBeforeAudioCheck=5
+ local sleepAfterAudioCheck=1
+ local preTuneAudioCheck=false
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715983634 - 1715983624 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715983646 - 1715983624 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715983657 - 1715983624 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/0.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715983669 - 1715983624 > 40  ))
+ echo 'Active audio stream not detected in 40 seconds.'
+ '[' false = false ']'
+ echo 'Active audio stream not detected after tuning completed'
+ echo 'Killing app and re-tuning...'
+ adb -s 192.168.50.139 shell am force-stop com.xfinity.cloudtvr.tenfoot

2
+ tuneChannel
+ adb -s 192.168.50.139 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/HBOHW/5232923399725817105/HBOHW
+ exit 0
+ finish
+ echo 'bmitune.sh is exiting for 192.168.50.139 with exit code 0'
'
[EXECUTE] Finished running ./scripts/firetv/xfinity/bmitune.sh in 47.574146353s

Did you try adding a sleep between KEYCODE_BACK and KEYCODE_HOME, or do you think the issue is elsewhere?

I will try the sleep .... see what happens...

+ adb -s 192.168.50.140 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/SHOHW/6578292319676893105/SHOHW
Warning: Activity not started, its current task has been brought to the front
+ activeAudioCheck 40 false 5 1
++ date +%s
+ local startTime=1715984198
+ local maxDuration=40
+ local minimumLoudness=-50
+ local sleepBeforeAudioCheck=5
+ local sleepAfterAudioCheck=1
+ local preTuneAudioCheck=false
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/2.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715984208 - 1715984198 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/2.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715984220 - 1715984198 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/2.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715984231 - 1715984198 > 40  ))
++ echo '-70.0 > -50'
++ bc -l
+ ((  0  ))
+ echo 'Active audio stream not yet detected -- loudness is -70.0 LUF. Continuing...'

1
+ true

5
++ ffmpeg -t 1 -i http://192.168.50.242:8086/2.ts -filter:a ebur128 -map 0:a -f null -hide_banner -
++ awk '/I:        /{print $2}'
+ checkLoudness=-70.0
++ date +%s
+ ((  1715984243 - 1715984198 > 40  ))
+ echo 'Active audio stream not detected in 40 seconds.'
+ '[' false = false ']'
+ echo 'Active audio stream not detected after tuning completed'
+ echo 'Killing app and re-tuning...'
+ adb -s 192.168.50.140 shell am force-stop com.xfinity.cloudtvr.tenfoot

2
+ tuneChannel
+ adb -s 192.168.50.140 shell am start -n com.xfinity.cloudtvr.tenfoot/com.xfinity.common.view.LaunchActivity https://www.xfinity.com/stream/live/SHOHW/6578292319676893105/SHOHW
+ exit 0
+ finish
+ echo 'bmitune.sh is exiting for 192.168.50.140 with exit code 0'
'
[EXECUTE] Finished running ./scripts/firetv/xfinity/bmitune.sh in 47.570393691s

I gather this is correct ....

adb -s 192.168.50.139 shell input keyevent 'KEYCODE_BACK;' input keyevent sleep '2;' input keyevent KEYCODE_HOME

You probably don't need those single quotes, but if you use them, the semicolon should be on the outside.

There are no quotes in the code.

#Stop stream
adbStop() {
  stop="input keyevent KEYCODE_BACK; \
        input keyevent sleep 2; \
        input keyevent KEYCODE_HOME"
  #stop="am force-stop $packageName"
  $adbTarget shell $stop; sleep 2
  echo "Streaming stopped for $streamerIP"
}

Yes -- try that.

EDIT: Fixed the sleep 2 line in this post as well.

That seems to be working... stay tuned. Forgot the sleep 2 is not a keyevent.

#Stop stream
adbStop() {
  stop="input keyevent KEYCODE_BACK; \
        sleep 2; \
        input keyevent KEYCODE_HOME"
  #stop="am force-stop $packageName"
  $adbTarget shell $stop; sleep 2
  echo "Streaming stopped for $streamerIP"

Thank you. I'm now using the latest docker compose and env vars. I reloaded the M3U in ChannelsDVR and the ah4c log appears to show that. I then tried tuning to a few channels and don't see anything in the logs for those attempts. I've set the permissions for the three tuning files to 777, so I think it should be able to see those...

2024/05/18 11:31:34 [START] ah4c is starting
2024/05/18 11:31:34 [ENV] Not loading env
2024/05/18 11:31:34 [ENV] IPADDRESS http://192.168.132.205:7654
2024/05/18 11:31:34 [ENV] ALERT_SMTP_SERVER smtp.gmail.com:587
2024/05/18 11:31:34 [ENV] ALERT_AUTH_SERVER smtp.gmail.com
2024/05/18 11:31:34 [ENV] ALERT_EMAIL_FROM [email protected]
2024/05/18 11:31:34 [ENV] ALERT_EMAIL_PASS xxxxxxxxxxxxxxxx
2024/05/18 11:31:34 [ENV] ALERT_EMAIL_TO [email protected]
2024/05/18 11:31:34 [ENV] ALERT_WEBHOOK_URL
2024/05/18 11:31:34 [ENV] ALLOW_DEBUG_VIDEO_PREVIEW
2024/05/18 11:31:34 [ENV] Creating tuner 1
2024/05/18 11:31:34 [ENV] ENCODER1_URL http://192.168.132.206/8.ts
2024/05/18 11:31:34 [ENV] TUNER1_IP 192.168.132.13:5555
2024/05/18 11:31:34 [ENV] CMD1
2024/05/18 11:31:34 [ENV] TEECMD1
2024/05/18 11:31:34 [ENV] PRE SCRIPT ./scripts/chromecast/freeviewnz/prebmitune.sh
2024/05/18 11:31:34 [ENV] START SCRIPT ./scripts/chromecast/freeviewnz/bmitune.sh
2024/05/18 11:31:34 [ENV] STOP SCRIPT ./scripts/chromecast/freeviewnz/stopbmitune.sh
2024/05/18 11:31:34 [ENV] REBOOT SCRIPT ./scripts/chromecast/freeviewnz/reboot.sh
2024/05/18 11:31:34 [ENV] Creating tuner 2
2024/05/18 11:31:34 [ENV] ENCODER2_URL http://192.168.132.206/12.ts
2024/05/18 11:31:34 [ENV] TUNER2_IP 192.168.132.162:5555
2024/05/18 11:31:34 [ENV] CMD2
2024/05/18 11:31:34 [ENV] TEECMD2
2024/05/18 11:31:34 [ENV] PRE SCRIPT ./scripts/chromecast/freeviewnz/prebmitune.sh
2024/05/18 11:31:34 [ENV] START SCRIPT ./scripts/chromecast/freeviewnz/bmitune.sh
2024/05/18 11:31:34 [ENV] STOP SCRIPT ./scripts/chromecast/freeviewnz/stopbmitune.sh
2024/05/18 11:31:34 [ENV] REBOOT SCRIPT ./scripts/chromecast/freeviewnz/reboot.sh
2024/05/18 11:31:34 [START] ah4c is ready
2024/05/18 11:31:49 [GIN-debug] Request: 192.168.132.104 GET /status/andlogs, latency: 4.77904ms, status: 200
2024/05/18 11:31:49 [GIN-debug] Request: 192.168.132.104 GET /status, latency: 9.162605ms, status: 200
2024/05/18 11:31:49 [GIN-debug] Request: 192.168.132.104 GET /logs?notime, latency: 5.525974ms, status: 200
2024/05/18 11:32:37 [GIN-debug] Request: 192.168.132.145 GET /m3u/freeviewnz.m3u, latency: 74.465078ms, status: 200
2024/05/18 11:33:01 [GIN-debug] Request: 192.168.132.145 GET /m3u/freeviewnz.m3u, latency: 70.224733ms, status: 200

env vars:

TAG=latest
DOMAIN=local
ADBS_PORT=5037
HOST_PORT=7654
WSCR_PORT=7655
IPADDRESS=http://192.168.132.205:7654
NUMBER_TUNERS=2
TUNER1_IP=192.168.132.13:5555
ENCODER1_URL=http://192.168.132.206/8.ts
TUNER2_IP=192.168.132.162:5555
ENCODER2_URL=http://192.168.132.206/12.ts
STREAMER_APP=scripts/chromecast/freeviewnz
CHANNELSIP=192.168.132.145
ALERT_SMTP_SERVER=smtp.gmail.com:587
ALERT_AUTH_SERVER=smtp.gmail.com
[email protected]
ALERT_EMAIL_PASS=xxxxxxxxxxxxxxxx
[email protected]
LIVETV_ATTEMPTS=45
CREATE_M3US=false
UPDATE_SCRIPTS=true
UPDATE_M3US=true
TZ=Pacific/Auckland
HOST_DIR=/data

Could you post your M3U, what shows in the Channels DVR log when you try to tune, and what shows in the Portainer log for that same tuning attempt?

Here's the m3u:

#EXTM3U

#EXTINF:-1 channel-id="9991",TVNZ 1
http://{{ .IPADDRESS }}/play/tuner/1

#EXTINF:-1 channel-id="9992",TVNZ 2
http://{{ .IPADDRESS }}/play/tuner/2

#EXTINF:-1 channel-id="9993",three
http://{{ .IPADDRESS }}/play/tuner/3

#EXTINF:-1 channel-id="9994",Bravo NZ
http://{{ .IPADDRESS }}/play/tuner/4

#EXTINF:-1 channel-id="9995",WHAKAATA MAORI
http://{{ .IPADDRESS }}/play/tuner/5

#EXTINF:-1 channel-id="9996",TVNZ Duke
http://{{ .IPADDRESS }}/play/tuner/6

#EXTINF:-1 channel-id="9997",TVNZ 2+
http://{{ .IPADDRESS }}/play/tuner/7

#EXTINF:-1 channel-id="9998",Eden
http://{{ .IPADDRESS }}/play/tuner/8

#EXTINF:-1 channel-id="9999",Bravo +1
http://{{ .IPADDRESS }}/play/tuner/9

#EXTINF:-1 channel-id="99910",Te Reo
http://{{ .IPADDRESS }}/play/tuner/10

#EXTINF:-1 channel-id="99911",TVNZ 1+
http://{{ .IPADDRESS }}/play/tuner/11

#EXTINF:-1 channel-id="99912",TVNZ Duke +1
http://{{ .IPADDRESS }}/play/tuner/12

#EXTINF:-1 channel-id="99913",three +1
http://{{ .IPADDRESS }}/play/tuner/13

#EXTINF:-1 channel-id="99914",Rush
http://{{ .IPADDRESS }}/play/tuner/14

#EXTINF:-1 channel-id="99915",Sky Open
http://{{ .IPADDRESS }}/play/tuner/15

#EXTINF:-1 channel-id="99918",Eden +1
http://{{ .IPADDRESS }}/play/tuner/18

#EXTINF:-1 channel-id="99919",HGTV NZ
http://{{ .IPADDRESS }}/play/tuner/19

#EXTINF:-1 channel-id="99920",Aljazeera
http://{{ .IPADDRESS }}/play/tuner/20

#EXTINF:-1 channel-id="99921",Sky Open +1
http://{{ .IPADDRESS }}/play/tuner/21

#EXTINF:-1 channel-id="99923",TSN1 NZ
http://{{ .IPADDRESS }}/play/tuner/23

#EXTINF:-1 channel-id="99924",TSN2 NZ
http://{{ .IPADDRESS }}/play/tuner/24

#EXTINF:-1 channel-id="99931",Parliament NZ
http://{{ .IPADDRESS }}/play/tuner/31

#EXTINF:-1 channel-id="99932",A32 Aukland
http://{{ .IPADDRESS }}/play/tuner/32

#EXTINF:-1 channel-id="99933",Channel 33
http://{{ .IPADDRESS }}/play/tuner/33

#EXTINF:-1 channel-id="99938",Juice TV
http://{{ .IPADDRESS }}/play/tuner/38

#EXTINF:-1 channel-id="99941",Wairarapa TV
http://{{ .IPADDRESS }}/play/tuner/41

#EXTINF:-1 channel-id="99948",TV Hawke's Bay
http://{{ .IPADDRESS }}/play/tuner/48

#EXTINF:-1 channel-id="99950",Radio NZ National
http://{{ .IPADDRESS }}/play/tuner/50

#EXTINF:-1 channel-id="99951",Radio NZ Concert
http://{{ .IPADDRESS }}/play/tuner/51

#EXTINF:-1 channel-id="99970",George FM
http://{{ .IPADDRESS }}/play/tuner/70

#EXTINF:-1 channel-id="99971",Radio Aotearoa
http://{{ .IPADDRESS }}/play/tuner/71

#EXTINF:-1 channel-id="999200",CH200
http://{{ .IPADDRESS }}/play/tuner/200

Here's the Channels DVR log:

2024/05/18 09:58:54.990139 [ERR] Failed to start stream for ch9456: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:58:56.033179 [HLS] Couldn't generate stream playlist for ch9456-dANY-ip192.168.1.209: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:58:56.033513 [HLS] Stopping transcoder session ch9456-dANY-ip192.168.1.209 (out=0s finished=false first_seq=0 last_seq=-1)
2024/05/18 09:59:00.987080 [ERR] Failed to start stream for ch9456: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:02.026108 [HLS] Couldn't generate stream playlist for ch9456-dANY-ip192.168.1.209: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:02.026379 [HLS] Stopping transcoder session ch9456-dANY-ip192.168.1.209 (out=0s finished=false first_seq=0 last_seq=-1)
2024/05/18 09:59:07.015191 [ERR] Failed to start stream for ch9456: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:08.047648 [HLS] Couldn't generate stream playlist for ch9456-dANY-ip192.168.1.209: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:08.047936 [HLS] Stopping transcoder session ch9456-dANY-ip192.168.1.209 (out=0s finished=false first_seq=0 last_seq=-1)
2024/05/18 09:59:13.041850 [ERR] Failed to start stream for ch9456: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:14.083922 [HLS] Couldn't generate stream playlist for ch9456-dANY-ip192.168.1.209: M3U: 901 Tuner Unreachable: Timeout after 4s connecting to: http://http://192.168.132.205:7654/play/tuner/2
2024/05/18 09:59:14.084212 [HLS] Stopping transcoder session ch9456-dANY-ip192.168.1.209 (out=0s finished=false first_seq=0 last_seq=-1)

Where would I find the Portainer logs? I don't think you want the Portainer docker log, as the last entry is when I started Portainer in April.

Edit: After posting, I see the double http: bits in the log right above. I'm sure it's operator error somewhere.