家庭网络中的组播电视分发

Hacker News Top 工具

摘要

关于使用ffmpeg和组播路由协议在家庭网络上设置组播电视分发的技术指南,包含本地和路由场景的示例。

暂无内容
查看原文
查看缓存全文

缓存时间: 2026/07/25 23:12

# 家庭网络中的多播电视分发 来源:https://www.apalrd.net/posts/2026/isp_mcast/ 今天我们来聊聊多播这个奇特的世界——数据包会被投递多次,并且我们使用反向路由表进行路由。不过,一旦你理解了它的工作原理,一个全新的内容分发世界将为你敞开!受 @TallPaulTech 早期视频的启发,我以直播电视分发为例,展示多播的工作原理,以及它在某些小众场景下可能成为网络重大升级的原因。 ## 视频⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#video) 缩略图 (https://youtu.be/nHzU-sspN54) ## 相关参考⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#prior-art) 以下视频/资料对我很有帮助,或者我认为你会喜欢: - Tall Paul Tech 关于搭建 IPTV 的播放列表 (https://www.youtube.com/playlist?list=PLGvkW0sr-RWZHi-5XtnWxIjMLhjG8UffL) - Tall Paul Tech 关于该主题的原始视频 (https://www.youtube.com/watch?v=KI0LuIcFM98) ## 链路本地示例⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#link-local-examples) 以下所有示例都可在本地网络中运行,但如果不开启 MLD/IGMP 侦听,可能会带来糟糕的体验(尤其对无线客户端而言)。 ## 基础文件(不进行转码)⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#basic-file-wo-transcoding) 如果你的客户端能够解码视频/音频,可以直接发送原始数据,从而节省大量 CPU 资源。以下示例将媒体文件中的音频和视频轨道复制后,复用成 MPEG-TS 传输流,再发送出去。 ``` # -re 表示实时处理 # -i bbb.mov 为输入文件(Big Buck Bunny) # -c:v 和 -c:a 表示直接复制视频和音频流 # -f mpegts "udp://[ff02::69@eth0]:5002?pkt_size=1200" 指定复用格式及 UDP 输出 ffmpeg -re -i bbb.mov -c:v copy -c:a copy -f mpegts "udp://[ff02::69@eth0]:5001?pkt_size=1200" ``` ## 基础文件(进行转码)⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#basic-file-w-transcoding) 如果你的媒体格式不太常见(尽管在 VLC 中播放几乎支持所有格式),可能需要进行转码。本示例使用基础的 x264 + AAC 编码,并打包成 MPEG-TS 传输流。 ``` # -re 表示实时处理 # -i bbb.mov 为输入文件(Big Buck Bunny) # -c:v libx264 -preset veryfast -profile:v high -level 4.1 -pix_fmt yuv420p 为视频转码参数 # -c:a aac -b:a 128k 为音频转码参数 # -f mpegts "udp://[ff02::69@eth0]:5002?pkt_size=1200" 指定复用格式及 UDP 输出 ffmpeg -re -i bbb.mov -c:v libx264 -preset veryfast -profile:v high -level 4.1 -pix_fmt yuv420p -c:a aac -b:a 128k -f mpegts "udp://[ff02::69@eth0]:5002?pkt_size=1200" ``` ## YLE 电视⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#yle-tv) 我住在芬兰,因此可以访问国家广播公司 YLE 的频道。当然,你可能无法在所在国家访问这些内容。这个示例展示了我如何操作。 ``` # 运行 yle-dl,加载 tv1 频道,通过管道传给 ffmpeg # yle-dl 最终从 YLE 基础设施请求 HLS 播放列表,并使用 ffmpeg 下载为 Matroska 容器 # ffmpeg 实时处理,从标准输入读取,映射流和元数据,直接复制(不转码),输出 MPEG-TS 到 UDP yle-dl tv1 --pipe | ffmpeg -re -i - -map 0 -map_metadata 0 -c copy -f mpegts "udp://[ff02::69%eth0]:5003?pkt_size=1200" ``` ## 路由多播⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#routed-multicast) 对于需要跨越子网/VLAN 的大型网络,可以使用路由多播。我采用源特定多播(SSM),它比任意源多播更容易配置,而且我们不需要关心汇聚点(RP)。 ## FRR 配置⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#frr-configuration) 以下是我在 FRR 中使用的配置(我承认并非最优): ``` log syslog informational interface eth0 description upstream ipv6 pim ipv6 pim hello 10 40 ! interface eth1 description downstream ipv6 pim ipv6 mld ipv6 mld version 2 ipv6 mld query-interval 60 ipv6 mld query-max-response-time 15 ipv6 mld last-member-query-interval 10 #如果使用下面的访问列表 #ipv6 mld access-list mld-groups ! router pim6 ssm prefix-list ssm6 ! ipv6 prefix-list ssm6 seq 5 permit ff3e::/16 ge 16 ! #MLD 侧的备选过滤 #ipv6 access-list mld-groups seq 5 permit ipv6 any ff3e::1/128 #ipv6 access-list mld-groups seq 10 permit ipv6 any ff3e::2/128 #ipv6 access-list mld-groups seq 100 deny ipv6 any ff3e::/16 #同时过滤组和源 #ipv6 access-list mld-groups seq 5 permit ipv6 2001:db8:1::10/128 ff3e::1/128 #ipv6 access-list mld-groups seq 10 deny ipv6 any ff3e::/16 ``` ## 基础文件(路由模式)⌗ (https://www.apalrd.net/posts/2026/isp_mcast/#basic-file-routed) 本示例通过多播流式传输文件,并额外使用了源特定多播选项和正确的跳数限制。 你可以参照这些选项修改前面任意链路本地示例,使其适用于路由多播。 ``` # -re 表示实时处理 # -i bbb.mov 为输入文件(Big Buck Bunny) # -c:v 和 -c:a 表示直接复制视频和音频流 # -f mpegts 现在需要跳数限制,类似于 IPv4 中的 TTL ffmpeg -re -i bbb.mov -c:v copy -c:a copy -f mpegts "udp://[ff35::69]:5004?hops=32&pkt_size=1200" ```

相似文章

Free-TV/IPTV

GitHub Trending (daily)

一个开源的M3U播放列表,包含来自世界各地的免费电视频道,按国家组织,可在GitHub上获取。

HomeLab #1: MikroTik 作为家庭路由器

Hacker News Top

实用指南:设置MikroTik路由器用于家庭实验室,涵盖如何识别ISP连接类型(IPoE与PPPoE)以及WAN IPv4地址(公网与CGNAT/DS-Lite),以便正确配置路由器。

Starting my own Content Delivery Network

Lobsters Hottest

作者通过拥有自己的自治系统(AS)和BGP任播,并利用DNS,搭建了一个分布在全球三台服务器上的个人内容分发网络(CDN),以优化用户连接延迟。文章详细介绍了BGP任播的工作原理和流量工程方法。

LLM与MikroTik网络配置

Hacker News Top

一篇博客文章,详细介绍了作者使用LLM配置MikroTik网络设备的经验,包括技巧和最佳实践。