This command plays video on the screen, getting the video from the composite input and the audio from the sound card:
mplayer tv:// -tv
driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0
This command plays video and audio to the screen, getting the video from the coax and the audio from the sound card.
mplayer tv:// \ -tv
driver=v4l2:device=/dev/video0:input=0:norm=ntsc:chanlist=us-bcast:channel=3:adevice=/dev/audio0
I also installed xawtv, which worked well. Right click on the tv window to see the xawtv options.
This command worked for video (mpeg4), but not sound:
mencoder tv:// -tv
driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0 \ -ovc lavc -oac lavc -lavcopts
acodec=ac3:vcodec=mpeg4:vbitrate=1800 \ -o tv.avi
This command works for video (mpeg2) and sound (ac3):
mencoder tv:// -tv
driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0 \ -ovc lavc -oac lavc -lavcopts
acodec=ac3:vcodec=mpeg2video:vbitrate=5000 \ -of mpeg -ofps 30000/1001 \ -o tv.mpeg
This command also seems to work well for sound and video:
mencoder tv:// -tv
driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0 \ -of mpeg -mpegopts format=dvd -ofps
30000/1001 -vf scale=720:480,harddup \ -ovc lavc -oac lavc -lavcopts
acodec=ac3:abitrate=192:keyint=25:vcodec=mpeg2video:vbitrate=5000:aspect=4/3 \ -o tv.mpeg
The problem is that the PC encodes at less than realtime, so after about 50 seconds the video buffer runs out of space. I wonder if it might be better to do this encoding in two passes.
This command dumps raw video and pcm sound to a file:
mencoder tv:// -tv
driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0:amode=1 \ -ovc raw -oac pcm \ -o
tv.avi
But strangely, I find that mencoder performs faster if I encode the audio channel to ac3, like this:
mencoder tv:// -tv driver=v4l2:device=/dev/video0:input=1:norm=ntsc:adevice=/dev/audio0 \
-ovc raw -oac lavc -lavcopts acodec=ac3:abitrate=192 \ -o tv.avi
Sometimes I need to get rid of a few seconds from the beginning or end of a recording. This works best on the uncompressed video data. To do it, I use the -ss and -endpos switches. For instance, suppose I want to remove the first 8 seconds and end at the 8 minutes and 40 seconds mark, then I would use the command:
mencoder tv.avi -oac copy -ovc copy \ -ss 8 -endpos 8:32 \ -o tv2.avi
Note that I subtracted the 8 seconds from 8:40 to get 8:32, because the endpos counter starts at the start position of this run, not the start position of the original file.
Finally I can transcode the raw video to a mpeg file. I can do it in one pass using this command:
mencoder tv3.avi \ -of mpeg -mpegopts format=dvd -ofps 30000/1001 -vf
scale=720:480,harddup \ -ovc lavc -oac copy -lavcopts vcodec=mpeg2video:vbitrate=6000:aspect=4/3 \ -o
dvd.mpeg
Problem is, sometimes during scene changes I get weird artifacts, because the motion compression frames (B frames) can't change the entire scene. Really we want the P frames to line up with scene changes. So we need two pass compression. I don't know that this works with mpeg2 - most of the documentation was for mpeg4 (divx). But I will try it anyway. In our case the audio is already encoded, so we will just copy the audio stream. The first pass analyzes the video stream and creates a log file called divx2pass.log. The third pass uses the log file to more accurately position the different frame types. Here it is:
First pass:
mencoder tv3.avi \ -of mpeg -mpegopts format=dvd -ofps 30000/1001 -vf
scale=720:480,harddup \ -ovc lavc -oac copy -lavcopts
turbo:vpass=1:vcodec=mpeg2video:vbitrate=5000:aspect=4/3 \ -o dvd.mpeg
Notice that there is no output file name - the vpass option forces output to a log file named divx2pass.log
Third pass:
mencoder tv3.avi \ -of mpeg -mpegopts format=dvd -ofps 30000/1001 -vf
scale=720:480,harddup \ -ovc lavc -oac copy -lavcopts
turbo:vpass=2:vcodec=mpeg2video:vbitrate=5000:aspect=4/3 \ -o dvd.mpeg
The on-board sound chip picks up a lot of electrical noise from the mainboard. For instance, when I open and close windows in the X display, I can hear pops on the line in channel. Nothing I can do about that, except try a different audio card.
I borrowed an ensoniq 1371 from Dan Eriksen (thanks Dan!). Ran alsa-config, works great. But here's some interesting stuff about mixer applications:
I use kmix. kmix does not display all the channels. Try alsa-mixer, which uses character graphics on a console. Shows more, but still not everything. Use the amixer application. Read the amixer man page now! Very useful. The command "amixer contents" shows all the channels and the properties that can be set. The important channel that doesn't show up under either kmix or alsa-mixer is the capture channel. Use amixer to turn on this channel, set the capture channel to line-in, and set the capture volume level as follows:
Use "amixer contents" to see the contents of all the mixer registers. Here's the end of mine:
numid=24,iface=MIXER,name='Capture Source' ; type=ENUMERATED,access=rw---,values=2,items=8 ;
Item #0 'Mic' ; Item #1 'CD' ; Item #2 'Video' ; Item #3 'Aux' ; Item #4 'Line' ; Item #5 'Mix' ; Item #6
'Mix Mono' ; Item #7 'Phone' : values=4,4 numid=25,iface=MIXER,name='Capture Switch' ;
type=BOOLEAN,access=rw---,values=1 : values=off numid=26,iface=MIXER,name='Capture Volume' ;
type=INTEGER,access=rw---,values=2,min=0,max=15,step=0 : values=0,0
The problem is the last two settings. The capture switch is set off and the capture volume is set to zero. We need to make sure that the capture switch is on and that the volume is at a reasonable level:
$ amixer cset numid=26 90% 90% numid=26,iface=MIXER,name='Capture Volume' ;
type=INTEGER,access=rw---,values=2,min=0,max=15,step=0 : values=14,14 $ amixer cset numid=25 1
numid=25,iface=MIXER,name='Capture Switch' ; type=BOOLEAN,access=rw---,values=1 : values=on
My favourite: http://web.njit.edu/all_topics/Prog_Lang_Docs/html/mplayer/encoding.html
Some other sites: