5.3. 常见问题

注意

  1. 在数字电视中,单个物理频道可能包含不同的内容。规范将每个内容称为一项服务。这是电视用户会称之为“频道”的东西。因此,为了避免混淆,在本常见问题解答中,我们将转发器称为物理频道,将服务称为逻辑频道。

  2. LinuxTV 社区维护了一些 Wiki 页面,其中包含大量与媒体子系统相关的信息。如果您在这里找不到所需的答案,您很可能在那里找到有用的信息。它托管在

    https://www.linuxtv.org/wiki/

一些关于 Linux 数字电视支持的常见问题

  1. 调谐后几秒钟信号似乎就消失了。

    这不是一个 bug,而是一个特性。因为前端有显著的功耗(因此会变得很热),所以如果它们不使用(即前端设备关闭),它们就会断电。 dvb-core 模块参数 dvb_shutdown_timeout 允许您更改超时时间(默认 5 秒)。将超时设置为 0 会禁用此超时功能。

  2. 我如何观看电视?

    与 Linux 内核一起,数字电视开发人员支持一些简单的工具,主要用于测试和演示 DVB API 的工作方式。这些被称为 DVB v5 工具,并与 v4l-utils git 仓库放在一起。

    您可以在 LinuxTV wiki 上找到更多信息:

    第一步是获取已传输的服务列表。

    这可以通过使用几个现有工具来完成。例如,您可以使用 dvbv5-scan 工具。您可以在以下网址找到更多信息:

    还有一些其他应用程序,例如 w_scan [1],可以进行盲扫,努力寻找所有可能的频道,但这些程序运行起来会消耗大量时间。

    此外,一些应用程序(例如 kaffeine)有自己的代码来扫描服务。因此,您不需要使用外部应用程序来获取此列表。

    大多数此类工具需要一个文件,其中包含您所在地区可用的频道转发器列表。因此,LinuxTV 开发人员维护数字电视频道转发器表,并接收社区的补丁以保持其更新。

    此列表托管在

    并在多个发行版中打包。

    Kaffeine 对某些地面标准具有盲扫支持。它也依赖 DTV 扫描表,尽管它内部包含一份副本(并且,如果用户请求,它将下载更新版本)。

    如果您很幸运,可以直接使用提供的频道转发器之一。如果不行,您可能需要在互联网上查找此类信息并创建一个新文件。有几个网站包含物理频道列表。对于有线电视和卫星电视,通常只需知道如何调谐到单个频道,扫描工具就能识别其他频道。在某些地方,这也适用于地面传输。

    一旦您有了转发器列表,您需要使用像 dvbv5-scan 这样的工具生成服务列表。

    几乎所有现代数字电视卡都没有内置硬件 MPEG 解码器。因此,应用程序需要获取板卡提供的 MPEG-TS 流,将其分离成音频、视频和其他数据并进行解码。

  3. 有哪些数字电视应用程序?

    有多种媒体播放器应用程序能够调谐到数字电视频道,包括 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/downloadshttps://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)

  4. 无法正确调谐信号

    这可能是由许多问题引起的。根据我的个人经验,通常电视卡比电视机需要更强的信号,并且对噪声更敏感。所以,也许您只需要更好的天线或布线。然而,也可能是硬件或驱动程序问题。

    例如,如果您正在使用*没有*模拟模块的 Technotrend/Hauppauge DVB-C 卡,您可能需要使用模块参数 adac=-1 (dvb-ttpci.o)。

    请参阅 linuxtv.org 上的常见问题解答页面,因为它可能包含一些有价值的信息:

    如果这不起作用,请查阅 linux-media 邮件列表档案,看看其他人是否遇到过与您的硬件和/或数字电视服务提供商类似的问题:

    如果这些都不奏效,您可以尝试向 linux-media 邮件列表发送电子邮件,看看是否有人能提供一些启发。电子邮件地址是 linux-media AT vger.kernel.org。

  5. dvb_net 设备根本没有给我任何数据包

    dvb0_0 接口上运行 tcpdump。这会将接口设置为混杂模式,因此它接受您使用 dvbnet 工具配置的 PID 的任何数据包。检查是否有任何数据包的 IP 地址和 MAC 地址与您通过 ifconfigip addr 配置的相符。

    如果 tcpdump 没有给出任何输出,检查 ifconfignetstat -ni 的输出统计信息。(注意:如果 MAC 地址错误,dvb_net 将不会收到任何输入;因此您必须在检查统计信息之前运行 tcpdump。)如果根本没有数据包,那么 PID 可能错误。如果存在错误数据包,那么 PID 要么错误,要么流不符合 MPE 标准(EN 301 192,http://www.etsi.org/)。例如,您可以使用 dvbsnoop 进行调试。

  6. dvb_net 设备没有给我任何多播数据包

    检查您的路由是否包含多播地址范围。此外,请确保“通过反向路径查找进行源验证”已禁用。

    $ "echo 0 > /proc/sys/net/ipv4/conf/dvb0/rp_filter"
    
  7. 所有这些需要加载的模块是什么?

    为了使其更灵活并支持不同的硬件组合,媒体子系统以模块化方式编写。

    因此,除了主芯片组的数字电视硬件模块外,它还需要加载前端驱动程序,以及数字电视核心。如果板卡还有遥控器,它还需要遥控器核心和遥控器表。如果板卡支持模拟电视,也会发生同样的情况:需要加载 video4linux 的核心支持。

    实际的模块名称是 Linux 内核版本特定的,因为,为了使媒体支持更灵活,事物会不时发生变化。