将流从 hdhomerun 发送到 AWS EC2 实例
Send stream from hdhomerun to AWS EC2 instance
我正在尝试一些奇怪的事情来获得乐趣。将流从 hdhomerun 发送到 AWS EC2 实例。
第一种方法。使用 ffmpeg 读取流
(本地测试成功)
hdhomerun_config 发现我的设备有 ip 192.168.1.200 所以我以这种方式在路由器上打开端口
<my home public ip>:5005 -> 192.168.1.200:80
<my home public ip>:5004 -> 192.168.1.200:5004
w3m 和 telnet 说一切正常。
但是...
我做的是 EC2 实例
/usr/bin/ffmpeg -y -i 'http://<my home public ip>:5004/auto/v5057?transcode=internet240' -t 12 -vn -acodec pcm_s16le -ar 16000 -ac 1 '/tmp/test.wav'
在 tuner1 中我可以看到...
Virtual Channel none
Frequency 698.000 MHz
Program Number 186
Modulation Lock t8qam64
Signal Strength 89%
Signal Quality 100%
Symbol Quality 100%
Streaming Rate none
Resource Lock <EC2 public ip>
在 hdhomerun 系统日志中...
19700102-10:27:25 Tuner: tuner0 tuning 5057 Telecinco (t8qam64:698MHz-186)
19700102-10:27:25 Tuner: tuner0 streaming http to <EC2 public ip>:34124
一切正常,但 ffmpeg 没有得到任何数据。
第二种方法。发送流到 wowza
我在 EC2 实例中有一个 wowza 服务器 运行
从我家的 linux 盒子里。
root# /usr/bin/hdhomerun_config 1250D7B2 scan /tuner1 scan.log
root# /usr/bin/hdhomerun_config 1250D7B2 set /tuner1/channel auto:651000000
root# /usr/bin/hdhomerun_config 1250D7B2 get /tuner1/streaminfo
root# /usr/bin/hdhomerun_config 1250D7B2 get /tuner1/program 190
root# /usr/bin/hdhomerun_config 1250D7B2 set /tuner1/target rtp://<wowza server public ip>:1935/TEST/hdhr
root# echo $?
root# 0
无误结束购买无效
这是一个远景,但是 ....
有什么想法可以做到这一点。
谢谢!!!
HDHomerun 调谐器发送带有 ttl=3 的流,因此它一旦离开路由器就永远不会到达您的 EC2 实例。我通过互联网流式传输的解决方案是在 HDHomerun 位置使用 nginx 反向代理将 5004 转发到调谐器。
最后我就这样使用ffmpeg作为编码器...
/usr/bin/ffmpeg -i http://192.168.1.50:5004/auto/v5055?transcode=internet240 -vn -ar 16000 -ac 1 -f rtsp -rtsp_transport tcp -muxdelay 0.1 rtsp://22.22.22.22/XXX/STREAM
为了守护进程我做了这个...
[Unit]
Description=XXX ffserver incoming stream
[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/bin/ffmpeg -i "http://192.168.1.50:5004/auto/v5055?transcode=internet240" -vn -ar 16000 -ac 1 -f rtsp -rtsp_transport tcp -muxdelay 0.1 rtsp://22.22.22.22/XXX/STREAM
[Install]
WantedBy=multi-user.target
我正在尝试一些奇怪的事情来获得乐趣。将流从 hdhomerun 发送到 AWS EC2 实例。
第一种方法。使用 ffmpeg 读取流 (本地测试成功)
hdhomerun_config 发现我的设备有 ip 192.168.1.200 所以我以这种方式在路由器上打开端口
<my home public ip>:5005 -> 192.168.1.200:80
<my home public ip>:5004 -> 192.168.1.200:5004
w3m 和 telnet 说一切正常。
但是...
我做的是 EC2 实例
/usr/bin/ffmpeg -y -i 'http://<my home public ip>:5004/auto/v5057?transcode=internet240' -t 12 -vn -acodec pcm_s16le -ar 16000 -ac 1 '/tmp/test.wav'
在 tuner1 中我可以看到...
Virtual Channel none
Frequency 698.000 MHz
Program Number 186
Modulation Lock t8qam64
Signal Strength 89%
Signal Quality 100%
Symbol Quality 100%
Streaming Rate none
Resource Lock <EC2 public ip>
在 hdhomerun 系统日志中...
19700102-10:27:25 Tuner: tuner0 tuning 5057 Telecinco (t8qam64:698MHz-186)
19700102-10:27:25 Tuner: tuner0 streaming http to <EC2 public ip>:34124
一切正常,但 ffmpeg 没有得到任何数据。
第二种方法。发送流到 wowza
我在 EC2 实例中有一个 wowza 服务器 运行
从我家的 linux 盒子里。
root# /usr/bin/hdhomerun_config 1250D7B2 scan /tuner1 scan.log
root# /usr/bin/hdhomerun_config 1250D7B2 set /tuner1/channel auto:651000000
root# /usr/bin/hdhomerun_config 1250D7B2 get /tuner1/streaminfo
root# /usr/bin/hdhomerun_config 1250D7B2 get /tuner1/program 190
root# /usr/bin/hdhomerun_config 1250D7B2 set /tuner1/target rtp://<wowza server public ip>:1935/TEST/hdhr
root# echo $?
root# 0
无误结束购买无效 这是一个远景,但是 ....
有什么想法可以做到这一点。
谢谢!!!
HDHomerun 调谐器发送带有 ttl=3 的流,因此它一旦离开路由器就永远不会到达您的 EC2 实例。我通过互联网流式传输的解决方案是在 HDHomerun 位置使用 nginx 反向代理将 5004 转发到调谐器。
最后我就这样使用ffmpeg作为编码器...
/usr/bin/ffmpeg -i http://192.168.1.50:5004/auto/v5055?transcode=internet240 -vn -ar 16000 -ac 1 -f rtsp -rtsp_transport tcp -muxdelay 0.1 rtsp://22.22.22.22/XXX/STREAM
为了守护进程我做了这个...
[Unit]
Description=XXX ffserver incoming stream
[Service]
Type=simple
Restart=always
RestartSec=1
ExecStart=/usr/bin/ffmpeg -i "http://192.168.1.50:5004/auto/v5055?transcode=internet240" -vn -ar 16000 -ac 1 -f rtsp -rtsp_transport tcp -muxdelay 0.1 rtsp://22.22.22.22/XXX/STREAM
[Install]
WantedBy=multi-user.target