现在让我们逐步了解如何实际配置您的计算机作为 VCR。
我的特定调谐器卡需要特殊的参数来配置 'tuner' 和 'bttv' 模块,因为它是一个较旧的型号,并且无法正确自动检测。如果您可以通过 xawtv 在您的卡上观看电视,那么您已经正确配置了您的卡。以下是我的 /etc/modules.conf(或较旧发行版的 /etc/conf.modules)中的配置行。
options -k bttv radio=1 card=2 options -k tuner debug=0 type=6这些参数将根据您的卡型号而有所不同,请参阅 linux 源代码(linux/Documentation/video4linux)中的文档,以了解如何准确配置您的卡。我将这些模块添加到 /etc/modules 中,以便它们在启动时自动加载。您也可以使用 'modprobe modulename' 以 root 身份手动加载它们。我目前正在使用 2.4.2 内核,但我也在所有 2.2.x 内核上成功使用过此卡。提示:用户可能需要拥有 /dev/video /dev/video0 文件(以及可能还有其他设备)的所有权,然后调谐器卡才能正常工作。与往常一样,我建议不要以 root 身份运行任何应用程序。
您可以使用来自较新发行版的 xawtv,或者从 xawtv 主页 下载源代码。在继续之前,请确保 xawtv 在您的调谐器卡上正常运行。
这是一个示例 ".xawtv" 配置文件。这应该放置在将进行 VCR 录制的用户的主目录中。我建议在您的 .xawtv 文件中为所有频道(0-NNN)(即使是不存在的频道)添加预设,因为稍后您将使用 "v4lctl" 命令来切换频道。此命令使用“预设编号”而不是“频道编号”,因此将预设编号设置为与实际频道编号相同很方便。以下配置文件是为美国有线电视设计的,您的结果可能会有所不同。
[global] freqtab = us-cable pixsize = 128 x 96 pixcols = 1 jpeg-quality = 75 mjpeg-quality = 75 toggle-mouse = 0 keypad-ntsc = no osd = yes # [Station name] # capture = overlay | grabdisplay | on | off # input = Television | Composite1 | S-Video | ... # norm = PAL | NTSC | SECAM | ... # channel = # # fine = # (-128..+127) # key = keysym | modifier+keysym # color = # # bright = # # hue = # # contrast = # [defaults] norm = NTSC capture = over input = Television [CH0 0] channel = 0 fine = 0 [CH1 1] channel = 1 fine = 0 [CH2 2] channel = 2 fine = 0 [CH3 3] channel = 3 fine = 0 [CH4 4] channel = 4 fine = 0 [CH5 5] channel = 5 fine = 0 [CH6 6] channel = 6 fine = 0 [CH7 7] channel = 7 fine = 0 [CH8 8] channel = 8 fine = 0 [CH9 9] channel = 9 fine = 0 [CH10 10] channel = 10 fine = 0 [CH11 11] channel = 11 fine = 0 [CH12 12] channel = 12 fine = 0 [CH13 13] channel = 13 fine = 0 [CH14 14] channel = 14 fine = 0 [CH15 15] channel = 15 fine = 0 [CH16 16] channel = 16 fine = 0 [CH17 17] channel = 17 fine = 0 [CH18 18] channel = 18 fine = 0 [CH19 19] channel = 19 fine = 0 [CH20 20] channel = 20 fine = 0 [CH21 21] channel = 21 fine = 0 [CH22 22] channel = 22 fine = 0 [CH23 23] channel = 23 fine = 0 [CH24 24] channel = 24 fine = 0 [CH25 25] channel = 25 fine = 0 [CH26 26] channel = 26 fine = 0 [CH27 27] channel = 27 fine = 0 [CH28 28] channel = 28 fine = 0 [CH29 29] channel = 29 fine = 0 [CH30 30] channel = 30 fine = 0 [CH31 31] channel = 31 fine = 0 [CH32 32] channel = 32 fine = 0 [CH33 33] channel = 33 fine = 0 [CH34 34] channel = 34 fine = 0 [CH35 35] channel = 35 fine = 0 [CH36 36] channel = 36 fine = 0 [CH37 37] channel = 37 fine = 0 [CH38 38] channel = 38 fine = 0 [CH39 39] channel = 39 fine = 0 [CH40 40] channel = 40 fine = 0 [CH41 41] channel = 41 fine = 0 [CH42 42] channel = 42 fine = 0 [CH43 43] channel = 43 fine = 0 [CH44 44] channel = 44 fine = 0 [CH45 45] channel = 45 fine = 0 [CH46 46] channel = 46 fine = 0 [CH47 47] channel = 47 fine = 0 [CH48 48] channel = 48 fine = 0 [CH49 49] channel = 49 fine = 0 [CH50 50] channel = 50 fine = 0 [CH51 51] channel = 51 fine = 0 [CH52 52] channel = 52 fine = 0 [CH53 53] channel = 53 fine = 0 [CH54 54] channel = 54 fine = 0 [CH55 55] channel = 55 fine = 0 [CH56 56] channel = 56 fine = 0 [CH57 57] channel = 57 fine = 0 [CH58 58] channel = 58 fine = 0 [CH59 59] channel = 59 fine = 0
从 DiVX :-) 主页 下载最新的 avifile 软件包。您将需要 avifile-0.5x 和 binaries-xxxxxx.zip。您应该将 binaries 解压到 /usr/lib/win32。下一节描述编译和安装 avifile-0.53-5。
# tar xvfz avifile-0.53-5.tar.gz # cd avifile-0.53-5 # ./configure # make # make install # mkdir /usr/lib/win32 # cd /usr/lib/win32 # unzip /path/to/binaries-010122.zip您需要以 root 身份才能使 make install 步骤生效。如果您收到任何错误,则可能是由于 configure 步骤中缺少依赖项。解决任何依赖项并重试。这应该在任何安装了“开发”工具的最新发行版上顺利进行。
您可以从 VCR 主页 获取最新的 vcr 程序(在我撰写本文时为 vcr-1.07)。
您需要以 root 身份才能使 make install 步骤生效。
# tar xvfz vcr-1.07.tar.gz # cd vcr-1.07 # ./configure # make # make install
默认情况下,vcr 将所有内容安装到 /usr/local(除非您在 ./configure 行上更改了前缀)。您现在可以使用以下命令阅读 vcr 的 man 手册:“man -M/usr/local/man vcr”。这是我获得初始 .vcrrc 文件的地方。我根据自己的需要配置了这个文件,并将相同的预设添加到这个文件,就像我对 .xawtv 文件所做的那样。如果您认为这些文件看起来很相似,那是因为 vcr 最初是基于 xawtv 代码库的。这是我使用的 .vcrrc:(请注意,新的 'audiobitrate' 参数意味着以指定的比特率以 mp3 格式录制音频。mp3 音频比 vcr 默认录制的 PCM 音频小得多!30 分钟 = 113 兆字节(mp3)而不是 240 兆字节(PCM)!)。
[defaults] quality = 95 keyframes = 15 codec = DivX ;-) low-motion attributes = BitRate=1600 source = Television norm = ntsc verbose = 1 freqtab = us-cable audiofrequency=44 audiobitrate=64 resolution=384 framerate = 29.97 grabdevice=/dev/video0 [CH0 0] channel = 0 fine = 0 [CH1 1] channel = 1 fine = 0 [CH2 2] channel = 2 fine = 0 [CH3 3] channel = 3 fine = 0 [CH4 4] channel = 4 fine = 0 [CH5 5] channel = 5 fine = 0 [CH6 6] channel = 6 fine = 0 [CH7 7] channel = 7 fine = 0 [CH8 8] channel = 8 fine = 0 [CH9 9] channel = 9 fine = 0 [CH10 10] channel = 10 fine = 0 [CH11 11] channel = 11 fine = 0 [CH12 12] channel = 12 fine = 0 [CH13 13] channel = 13 fine = 0 [CH14 14] channel = 14 fine = 0 [CH15 15] channel = 15 fine = 0 [CH16 16] channel = 16 fine = 0 [CH17 17] channel = 17 fine = 0 [CH18 18] channel = 18 fine = 0 [CH19 19] channel = 19 fine = 0 [CH20 20] channel = 20 fine = 0 [CH21 21] channel = 21 fine = 0 [CH22 22] channel = 22 fine = 0 [CH23 23] channel = 23 fine = 0 [CH24 24] channel = 24 fine = 0 [CH25 25] channel = 25 fine = 0 [CH26 26] channel = 26 fine = 0 [CH27 27] channel = 27 fine = 0 [CH28 28] channel = 28 fine = 0 [CH29 29] channel = 29 fine = 0 [CH30 30] channel = 30 fine = 0 [CH31 31] channel = 31 fine = 0 [CH32 32] channel = 32 fine = 0 [CH33 33] channel = 33 fine = 0 [CH34 34] channel = 34 fine = 0 [CH35 35] channel = 35 fine = 0 [CH36 36] channel = 36 fine = 0 [CH37 37] channel = 37 fine = 0 [CH38 38] channel = 38 fine = 0 [CH39 39] channel = 39 fine = 0 [CH40 40] channel = 40 fine = 0 [CH41 41] channel = 41 fine = 0 [CH42 42] channel = 42 fine = 0 [CH43 43] channel = 43 fine = 0 [CH44 44] channel = 44 fine = 0 [CH45 45] channel = 45 fine = 0 [CH46 46] channel = 46 fine = 0 [CH47 47] channel = 47 fine = 0 [CH48 48] channel = 48 fine = 0 [CH49 49] channel = 49 fine = 0 [CH50 50] channel = 50 fine = 0 [CH51 51] channel = 51 fine = 0 [CH52 52] channel = 52 fine = 0 [CH53 53] channel = 53 fine = 0 [CH54 54] channel = 54 fine = 0 [CH55 55] channel = 55 fine = 0 [CH56 56] channel = 56 fine = 0 [CH57 57] channel = 57 fine = 0 [CH58 58] channel = 58 fine = 0 [CH59 59] channel = 59 fine = 0
您可能需要在设置 cron 来录制您的节目之前验证 vcr 是否会录制您的节目。您可以通过执行 "vcr -t 2m test.avi" 来测试这一点,然后尝试使用 aviplay 播放这两分钟的示例。请注意,您需要将 '/usr/local/bin' 添加到您的路径,并将 '/usr/local/lib' 添加到您的 ld 库路径才能使其正常工作。还有人建议您可以使用 'at' 来录制您的节目,这对于您只想在特定时间录制一次节目而不是定期录制的情况可能很有用。这是一个可以从 cron 调用的示例 shell 脚本
这是一个非常简单的脚本,它仅切换到一个频道并将一个节目录制六十分钟到一个以日期为导向的文件名。将其放置在实际进行录制的用户的 $HOME/bin 中 - 因为我将在下午 6 点运行它,所以我将其命名为 recordshow6pm.sh。
#!/bin/sh LD_LIBRARY_PATH=/usr/local/lib export LD_LIBRARY_PATH PATH=/usr/local/bin:$PATH export PATH DATE=`date +%m%d%y` FILENAME=/path/to/myshow-6pm-$DATE.avi v4lctl setstation 3 vcr -t 60m $FILENAME
现在是时候从 cron 调用它了,周一到周五下午 6 点。为此,以正确的用户身份运行 crontab -e 命令,并输入以下行
00 18 * * 1-5 /home/username/bin/recordshow6pm.sh
如果您更愿意从 at 调用脚本以进行一次性执行,您可以改为这样做
at -f /home/username/bin/recordshow6pm.sh 18:00