5.3. 常见问题解答¶
注意
对于数字电视,单个物理频道可能包含不同的内容。规范将每个内容称为服务。 这就是电视用户所称的“频道”。因此,为了避免混淆,我们在本常见问题解答中将转发器称为物理频道,将服务称为逻辑频道。
LinuxTV 社区维护了一些 Wiki 页面,其中包含大量与媒体子系统相关的信息。如果您在这里找不到您需要的答案,您很可能在那里找到一些有用的信息。它托管在
关于 Linux 数字电视支持的一些常见问题
信号似乎在调谐后几秒钟就消失了。
这不是错误,而是一个功能。由于前端具有显著的功率要求(因此会变得非常热),如果它们未使用(即,如果前端设备已关闭),则会断电。
dvb-core
模块参数dvb_shutdown_timeout
允许您更改超时时间(默认 5 秒)。将超时时间设置为 0 会禁用超时功能。如何观看电视?
除了 Linux 内核之外,数字电视开发人员还支持一些简单的实用程序,这些实用程序主要用于测试和演示 DVB API 的工作方式。这称为 DVB v5 工具,并与
v4l-utils
git 存储库组合在一起您可以在 LinuxTV wiki 上找到更多信息
第一步是获取传输的服务列表。
这是通过使用几个现有工具完成的。例如,您可以使用
dvbv5-scan
工具。您可以在以下网址找到更多相关信息还有一些其他应用程序,如
w_scan
[1],它会进行盲扫,尽力查找所有可能的频道,但这些频道需要花费大量时间运行。此外,一些应用程序(如
kaffeine
)有自己的代码来扫描服务。因此,您不需要使用外部应用程序来获取此类列表。大多数此类工具都需要一个文件,其中包含您所在区域可用的频道转发器列表。因此,LinuxTV 开发人员维护数字电视频道转发器表,接收来自社区的补丁以保持其更新。
此列表托管在
并打包在多个发行版中。
Kaffeine 对一些地面标准有一些盲扫支持。它还依赖于 DTV 扫描表,尽管它在内部包含一个副本(并且,如果用户请求,它将下载较新的版本)。
如果幸运的话,您只需使用提供的频道转发器之一即可。如果不是,您可能需要在 Internet 上寻找此类信息并创建一个新文件。有几个站点包含物理频道列表。对于有线电视和卫星电视,通常知道如何调谐到单个频道就足以让扫描工具识别其他频道。在某些地方,这也适用于地面传输。
获得转发器列表后,您需要使用
dvbv5-scan
等工具生成服务列表。几乎所有现代数字电视卡都没有内置的硬件 MPEG 解码器。因此,应用程序需要获取主板提供的 MPEG-TS 流,将其拆分为音频、视频和其他数据并进行解码。
存在哪些数字电视应用程序?
多个媒体播放器应用程序能够调谐到数字电视频道,包括 Kaffeine、Vlc、mplayer 和 MythTV。
Kaffeine 旨在非常用户友好,并且由内核驱动程序开发人员之一维护。
可以在以下位置找到这些和其他应用程序的完整列表
下面链接了一些最受欢迎的应用程序
- https://kde.org/applications/multimedia/org.kde.kaffeine
KDE 媒体播放器,专注于数字电视支持
- https://www.linuxtv.org/vdrwiki/index.php/Main_Page
Klaus Schmidinger 的视频光盘录像机
- https://linuxtv.org/downloads 和 https://git.linuxtv.org/
数字电视和其他媒体相关应用程序和内核驱动程序。其中的
v4l-utils
包包含多个用于数字电视的瑞士军刀工具。- http://sourceforge.net/projects/dvbtools/
Dave Chapman 的 dvbtools 包,包括 dvbstream 和 dvbtune
- http://www.dbox2.info/
dBox2 上的 LinuxDVB
- http://www.tuxbox.org/
TuxBox CVS 中许多有趣的 DVB 应用程序和 dBox2 DVB 源码
- http://www.nenie.org/misc/mpsys/
MPSYS:一个 MPEG2 系统库和工具
- https://www.videolan.org/vlc/index.pt.html
Vlc
- http://mplayerhq.hu/
MPlayer
- http://xine.sourceforge.net/ 和 http://xinehq.de/
Xine
- http://www.mythtv.org/
MythTV - 模拟电视和数字电视 PVR
- http://dvbsnoop.sourceforge.net/
DVB 嗅探器程序,用于监视、分析、调试、转储或查看 dvb/mpeg/dsm-cc/mhp 流信息(TS、PES、SECTION)
无法正确调谐信号
这可能是由于很多问题造成的。根据我的个人经验,电视卡通常需要比电视机更强的信号,并且对噪声更敏感。因此,您可能只需要更好的天线或布线。但是,这也可能是硬件或驱动程序问题。
例如,如果您使用的是没有模拟模块的 Technotrend/Hauppauge DVB-C 卡,您可能必须使用模块参数 adac=-1 (dvb-ttpci.o)。
请查看 linuxtv.org 上的常见问题解答页面,因为它可能包含一些有价值的信息
如果这不起作用,请查看 linux-media ML 存档,看看是否有人遇到过与您的硬件和/或数字电视服务提供商类似的问题
如果以上方法都不奏效,您可以尝试向 linux-media 邮件列表发送电子邮件,看看是否有人可以提供一些帮助。该邮件列表的地址是 linux-media AT vger.kernel.org。
dvb_net 设备完全没有给我任何数据包
在
dvb0_0
接口上运行tcpdump
。这会将接口设置为混杂模式,使其接受来自您使用dvbnet
工具配置的 PID 的任何数据包。检查是否存在任何数据包,其 IP 地址和 MAC 地址与您使用ifconfig
或ip addr
配置的地址相同。如果
tcpdump
没有输出任何内容,请检查ifconfig
或netstat -ni
输出的统计信息。(注意:如果 MAC 地址错误,dvb_net
将不会收到任何输入;因此您必须先运行tcpdump
,然后再检查统计信息。)如果没有数据包,则可能 PID 错误。如果有错误数据包,则可能是 PID 错误,或者数据流不符合 MPE 标准 (EN 301 192, http://www.etsi.org/)。您可以使用例如dvbsnoop
进行调试。dvb_net
设备没有给我任何组播数据包检查您的路由是否包含组播地址范围。此外,请确保禁用“通过反向路径查找进行源验证”。
$ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
所有这些需要加载的模块是什么?
为了使其更加灵活并支持不同的硬件组合,媒体子系统以模块化的方式编写。
因此,除了主芯片组的数字电视硬件模块之外,它还需要加载前端驱动程序以及数字电视核心。如果该板还有遥控器,则还需要遥控器核心和遥控器表。如果该板支持模拟电视,也会发生同样的情况:需要加载 video4linux 的核心支持。
实际的模块名称是 Linux 内核版本特定的,因为为了使媒体支持更加灵活,有时会发生变化。