2003-07-17

_ SAA7130-TVPCI with mencoder, no audio problem


などやまさんからの、ありがたいアドバイス m(__)m

from /.J
forceaudioでも音が録音できなかったのでここを変えた
/usr/src/linux/drivers/media/video/v4l1-compat.c
 
- chan->flags = (chan->tuners) ? VIDEO_VC_TUNER : 0
+ chan->flags = (chan->tuners) ? VIDEO_VC_TUNER|VIDEO_VC_AUDIO : 0
 
pre
  2: Television: tuner tv (tuner:1, norm:ntsc)
post
  2: Television: tuner audio tv camera (tuner:1, norm:ntsc)
 
これでforceaudioオプションを追加することで音が録音された
これでもならない場合はMixerのIGAINをチェックしてみてほしい

忘れないように age ておいて、夜 試してみましょう。
;; 地区対抗野球大会の早朝練習から帰ってきたところです。
;; 今年は、役員なんで...

_ linux-2.6.0-test1.tar.bz2


http://bytesex.org/patches/2.6.0-test1/

_ kernel-2.4.21 対応


patch-2.4.21-rc4-kraxel.gz
bttv-0.9.11.tar.gz
saa7134-0.2.8.tar.gz

_ RHL10 の kernel を予想してみる


kernel-2.6系 で来るのではないだろうか。
思うに、2.2系から2.4系に上がったときは、i2c 関係の もづーる を insmod しなければならなくなったのに気がつかなくて迷ったことがあったなぁ。
2.4系から2.6系も、若干 あるのね。でもこれは、kernel の version が... ではなく V4L から V4L2 への変更に伴うものなんでしょうね。というわけで BT878 であっても V4L2 を使用する場合には、もちろん xawtv とか mencoder 使えますが、もづーる を追加投入します。あー、なんだっけ。思考錯誤前後不覚支離滅裂中だからぐちゃぐちゃ。
やってみると bttv が insmod できないのですぐわかるはず。今は saa7134.o 取り組みちうにつき、bttv.o は外してあります。

_ 最近の日記


自分で読んでも意味不明。とくに 7月分 が ひどいな...

本日のツッコミ(全4件) [ツッコミを入れる]
# などやま (2003-07-18 03:16)

知人からELSA EX-VISION 500TVを強奪して、自宅のPCで試してみました。
やはり、すずきさんのようにmencoderで音声が収録できませんでした。
mplayer MLなどを調べると、saa713x系のカードで音声が収録できない拳で
patchが飛びかっておりましたので,もしやと思いmplayer-cvsで試したところ
音声が収録できました。御参考までに。

●我が家の環境
pentium4 2.2GHz SiS650マザー
/dev/video0 -> ELSA EX-VISION 500TV
/dev/dsp0 -> USBスピーカー
/dev/dsp1 -> SB Vibra 128
plamo linux 3.0  kernel-2.4.20 with patch-2.4.20-kraxel
 bttv9-20030625.tar.gz
 saa7134-20030625.tar.gz
 v4l2-20030606.tar.gz
 MPlayer-20030716.tar.bz2
 ffmpeg-cvs-2003-07-17.tar.gz

●saa7134-20030625     
saa7134-card.cを以下の様に修正

[SAA7134_BOARD_ELSA_500TV] = {
                .name           = "ELSA EX-VISION 500TV",
                .audio_clock    = 0x00187de7,
                .tuner_type     = TUNER_HITACHI_NTSC,
                .inputs         = {{
                        .name = name_tv,
                        .vmux = 8,
                        .amux = TV,
                        .tv   = 1,
                },{
                        .name = name_svideo,
                        .vmux = 7,
                        .amux = LINE1,
                }},
                  
これでmencoderの-tvオプションでinput指定しなくてもTelevisionが
デフォルトになりました。     
                      
またsaa7134-tvaudio.cを以下のように修正
 /* switch internal audio mux */
 switch (in->amux) {          

これでmencoderの-tvオプションでinput指定しなくてもTelevisionが
デフォルトになりました。     
                      
またsaa7134-tvaudio.cを以下のように修正
 /* switch internal audio mux */
 switch (in->amux) {          
 case TV: reg = 0x01; break;
 case LINE1: reg = 0x00; break;
 case LINE2: reg = 0x01; break;
 }                            

 
●MPlayer-20030716.tar.bz2
cvs版はlibavcodecが無かったので、ffmpeg-cvs-2003-07-17.tar.gzの
中のlibavcodecディレクトリをまるごとMPlayerソースディレクトリ下へ
コピーして利用。後は普通に./configure; make; make install
                              
●スクリプトを作成してテスト録画
$ cat test.sh                 
#!/bin/sh   
mencoder \
-tv driver=v4l:norm=NTSC:outfmt=yuv2:chanlist=japan-bcast:width=640:height=480:\
channel=1:forcechan=2:forceaudio:amode=1:adevice=/dev/dsp1 \
-ovc lavc \ 
-lavcopts  vcodec=mpeg4:vrc_eq=1:vbitrate=4600:keyint=150:aspect=1.333/1.0 \
-vop scale=640:480,crop=630:460:8:5,unsharp=l:c \
-ofps 29.97 \                 
-oac mp3lame \
-lameopts mode=3:preset=80:vol=4 \
-sws 2 \                      
-endpos 60 \
tv:// -o /home/nadoyama/rokuga/test.avi
                              
cvs版はmencoderのコマンドオプションがリリース版と
若干違ってました。(-tvオプションにonが無い!など)
スクリプトを実行すると、norm=NTSCと指定しているにも係わらず
norm=palとなってしまい録画失敗。
気をとりなおして              
              
$ v4lctl -c /dev/video0 setnorm NTSC
                              
とコマンドを打ち、再びtest.shを実行。今度は映像音声とも
正常に収録できました。色々エラーが出てるけど気にしない。。。。
                    
nadoyama@tiger:~/rokuga$ ./test.sh
MEncoder dev-CVS-030716-13:00-2.95.3 (C) 2000-2003 MPlayer Team
                              
CPU: Intel  (Family: 8, Stepping: 4)
Detected cache-line size is 64 bytes
CPUflags: Type: 8 MMX: 1 MMX2: 1 3DNow: 0 3DNow2: 0 SSE: 1 SSE2: 1
Reading /home/nadoyama/.mplayer/codecs.conf: 49 audio & 130 video codecs
File not found: 'frameno.avi' 
Failed to open frameno.avi  
Reading config file /home/nadoyama/.mplayer/mencoder
Warning unknown option norm at line 1
Font /home/nadoyama/.mplayer/font/font.desc loaded successfully! (206 chars)
Unknown protocol 'tv'         
Unable to open URL: tv://
success: format: 9  data: 0x0 - 0x0
TV detected! ;-)              
Selected driver: v4l
 name: Video 4 Linux input
 author: Alex Beregszaszi
 comment: under development
Selected device: ELSA EX-VISION 500TV
 Capabilites: capture tuner teletext overlay clipping
 Device type: 47              
 Supported sizes: 48x32 => 720x480
 Inputs: 2                    
  0: Television: tuner tv  (tuner:1, norm:ntsc)
  1: S-Video:  (tuner:0, norm:ntsc)
audio block size too low, setting to 16384!
Unknown format given: yuv2
Using input 'Television' 
ioctl set tuner failed: Invalid argument
Selected channel: 1 (freq: 91.250)
[V] filefmt:9  fourcc:0x32315659  size:640x480  fps:29.97  ftime:=0.0334
==========================================================================
Opening audio decoder: [pcm] Uncompressed PCM audio decoder
AUDIO: 44100 Hz, 2 ch, 16 bit (0x10), ratio: 176400->176400 (1411.2 kbit)
Selected audio codec: [pcm] afm:pcm (Uncompressed PCM)
==========================================================================
MP3 audio selected            
Building audio filter chain for 44100Hz/2ch/16bit -> 44100Hz/1ch/16bit...
Writing AVI header...         
Setting audio input gain to 4.000000
                              
preset=80
        
Forcing audio preload to 0, max pts correction to 0
Pos:  60.0s   1797f ( 0%)  30fps Trem:   0min   0mb  A-V:0.000 [4604:77]
Writing AVI index...          
Fixing AVI header...
                   
Video stream: 4604.940 kbit/s  (575617 bps)  size: 34533323 bytes  59.994 secs
1797 frames

Audio stream:   77.170 kbit/s  (9646 bps)  size: 578555 bytes  59.977 secs
  MJP: returning!             
nadoyama@tiger:~/rokuga$
                       
●EX-VISION 500TVで収録した映像は、bt878のような色滲みがなく非常にきれいでした。
音声も再生周波数帯域が広い様で良い音です。

# などやま (2003-07-18 03:23)

先ほどのつっこみで、行が重複している箇所があります。
すみません。。。。。
「またsaa7134-tvaudio.cを以下のように修正 
 /* switch internal audio mux */ 
 switch (in->amux) {           

これでmencoderの-tvオプションでinput指定しなくてもTelevisionが 
デフォルトになりました。      
                       
またsaa7134-tvaudio.cを以下のように修正」
となっていますが、上記最終行以上は重複部分です。
申し訳ない。

# などやま (2003-07-18 03:30)

もう一つ補足です。
alsa-0.9.2 を使用しています。 

# すずき (2003-07-18 23:29)

MPlayer の cvs版とは、気が付きませんでした。そういえば 0.90 になって 3ヶ月ですからねぇ。試させていただきます。