5.3. 常见问题¶
注意
在数字电视中,单个物理频道可能包含不同的内容。规范将每个内容称为一项服务。这是电视用户会称之为“频道”的东西。因此,为了避免混淆,在本常见问题解答中,我们将转发器称为物理频道,将服务称为逻辑频道。
LinuxTV 社区维护了一些 Wiki 页面,其中包含大量与媒体子系统相关的信息。如果您在这里找不到所需的答案,您很可能在那里找到有用的信息。它托管在
一些关于 Linux 数字电视支持的常见问题
调谐后几秒钟信号似乎就消失了。
这不是一个 bug,而是一个特性。因为前端有显著的功耗(因此会变得很热),所以如果它们不使用(即前端设备关闭),它们就会断电。
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 扫描表,尽管它内部包含一份副本(并且,如果用户请求,它将下载更新版本)。
如果您很幸运,可以直接使用提供的频道转发器之一。如果不行,您可能需要在互联网上查找此类信息并创建一个新文件。有几个网站包含物理频道列表。对于有线电视和卫星电视,通常只需知道如何调谐到单个频道,扫描工具就能识别其他频道。在某些地方,这也适用于地面传输。
一旦您有了转发器列表,您需要使用像
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 邮件列表档案,看看其他人是否遇到过与您的硬件和/或数字电视服务提供商类似的问题:
如果这些都不奏效,您可以尝试向 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 内核版本特定的,因为,为了使媒体支持更灵活,事物会不时发生变化。