README
资源名称:NETVIDEO.rar [点击查看]
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:14k
源码类别:
流媒体/Mpeg4/MP4
开发平台:
Visual C++
- July 15, 2002 - Dave Mackie
- MP4LIVE
- =======
- MP4LIVE is a Linux audio/video capture utility that can capture and encode
- audio and video in real-time. The results can be written to either an .mp4
- file, transmitted onto the network via either unicast or multicast, or both
- simultaneously! The audio is encoded with MP3 or AAC, and the video with
- MPEG-4 Simple Profile.
- Please use the MPEG4IP SourceForge site to report problems, suggest
- enhancements, ask questions, etc. The URL is
- http://www.sourceforge.net/projects/mpeg4ip
- Changes in Version 0.9.5
- ========================
- Once again, fixes for A/V sync and adapting to encoding speed.
- Added UI to easily load and save configuration files
- SDP now reflects media bandwidth
- Experimental file sources is removed.
- Hardware Requirements
- =====================
- Pentium III class machine of at least 500 MHz
- (Pentium IV class machine at 2 GHz is very nice.)
- Note systems vary quite a bit in their video capture abilities. For instance,
- I have a name brand 750 MHz PIII that drops frames when pushed to CIF sizes
- at greater than 15 fps, but I have a no-name clone with a 800 MHz PIII that
- can encode CIF @ 24 fps no problem.
- RAM is not typically an issue. I develop on machines with 128 MB, but I believe much smaller configurations would work fine. The real issue is CPU speed.
- A sound card with an OSS compatible driver and capture ability.
- A video device with a video4linux (v4l) compatible driver and memory mapped
- capture ability.
- Known to work are:
- Video capture cards based on the Brooktree 8x8 chip
- with an analog A/V source - VCR, DVD, Camcorder, Settop box, Tivo, etc.
- Typically a video capture card will support composite video inputs.
- Some will also have S-Video input.
- Others will also have a TV Tuner input.
- Logitech Quickcam Express Webcam
- Software Requirements
- =====================
- Linux with a 2.4 or later kernel
- (My development was done on RedHat 7.X)
- Drivers for sound and video devices
- bttv 0.7 or later video capture driver
- (Included with RedHat 7.1 and later)
- qce webcam driver
- WARNINGS!
- =========
- Please see the MPEG4IP README regarding legal issues, and the list of
- open source packages that are redistributed with this code.
- This is a LINUX program! Do not even think about trying to get this to
- run on Windows! Even moving it to other UNIX systems would require some
- re-programming since the sound and video capture interfaces are Linux
- specific.
- By far the easiest route is to use a Linux distribution that already has a
- 2.4 kernel, the bttv driver, and the associated i2c module built into it.
- I've hacked kernels before, and I'm not sure I could sucessfully follow the
- instructions in the bttv driver as to how to configure a kernel so that it
- would work. Caveat emptor!
- I've had many headaches with sound cards under Linux. Before you start using
- mp4live, please make sure you're able to playback and record with your sound
- card!
- You should definitely increase the number of capture buffers for the bttv
- driver. This reduces the chance of dropping video frames due to transient
- delays in the system. By default bttv uses 2 buffers. You can increase this
- by editting /etc/modules.conf and adding the line
- "add options bttv gbuffers=32"
- at the end of the file. The value 32 is my recommendation but you can
- experiment with other values if you are so inclined.
- Tips
- ====
- I suggest you disable any fancy, computationally intensive screensavers
- when using mp4live to capture long programs. Along the same lines, don't
- run any programs that make large resource demands (CPU, bus, disk, network)
- while mp4live is running.
- The AAC audio encoder is noticeably slower than the MP3 audio encoder so
- you will see lower video frame rates and greater sensitivity to CPU load
- if you are using AAC.
- Linux supports the POSIX soft real-time extensions and mp4live will attempt
- to use these to give it priority over non-real time processes. Typically
- these calls can only be made by processes with root privileges, so you may
- want to run mp4live as root for this reason.
- Building and Installing
- =======================
- See the MPEG4IP README for general notes about the build environment.
- Assuming you've already done a build at the top level of mpeg4ip, and
- you're on a Linux system then mp4live should be built and waiting for you
- in this directory. If you've done a top level 'make install', the mp4live
- will be installed into '/usr/local/bin'. Of course, you can also issue
- 'make' and 'make install' from this directory as well.
- Using mp4live
- =============
- Typically, there is no need for command line options to mp4live. You can
- just type 'mp4live' and you'll be up and running.
- If you change an mp4live configuration setting, then that change will be
- saved in your home directory in ~/.mp4live_rc. This file is read when
- mp4live is started, and the configuration settings adjusted accordingly.
- The default settings for mp4live are to record 1 minute of audio and video
- to an mp4 file, ./capture.mp4 The first time you use the program, it's
- a good idea to just hit the Start button, and see what happens. If all
- goes well, 1 minute later you have a playable/streamable mp4 file. If you
- don't get this, then it's time to review this README, and it that doesn't
- help, then fire off a message on the MPEG4IP SourceForge discussion group.
- Assuming things are working you can now use the Settings buttons to adjust
- things like the video size and frame rate, the audio sampling rate, the
- encoded bitrates, etc. The UI is hopefully self-explanatory. If not, let us
- know what's confusing and we'll look at fixing that. (I'm a big believer that
- if you need to read a document to use a UI, then the UI is broken and should
- be fixed. Of course, as I've re-learned many times, what is obvious and natural
- to me, isn't always to other people.)
- If you're capturing video that uses "widescreen" or "letterbox" format,
- it's a big win to change the "Aspect Ratio" in the Video Settings. This
- will cause the video to be automatically cropped so you don't waste precious
- CPU time encoding the empty black bars at the top and bottom of the screen.
- Network Transmission
- ====================
- To use mp4live to transmit live audio/video to the network, follow these
- directions:
- Select 'Enabled' in the Transmission section of the main window.
- By default, mp4live will multicast the media to IP address 224.1.2.3
- If you wish to change this, select the 'Settings...' button in the
- Transmission section of the main window. A dialog will appear that allows
- selection of the destination IP address (either unicast or multicast),
- the UDP port numbers used, the TTL used if multicasting, and the name of
- the .sdp file to generate (more about that in a minute). When you're done
- making changes, select 'OK'.
- When you press mp4live's 'Start' button, media transmission to the network
- will begin. Also a small text file with extension .sdp will be created that
- describes the media transmission for the player. The player needs the .sdp
- file to be able to tune into the media streams. (Note the .sdp file can also
- be generated from the Transmission Settings dialog)
- The most convenient way to distribute the .sdp file is to have mp4live write
- it to a directory that is accessible from a web server (httpd) that is running
- on the same machine as mp4live. This allows the client to be started with
- the HTTP URL of the sdp file, and it will download the .sdp file via http
- and then use the information in the .sdp file to tune into the network
- transmission. E.g. 'gmp4player http://myserver/myprogram.sdp'
- You can of course distribute the .sdp file in a number of other ways, say
- ftp, or email. You would then start the player with the local file name
- of the sdp file, e.g. 'gmp4player myprogram.sdp'
- Use with Darwin Streaming Server
- ================================
- If you would like to use mp4live in conjunction with the Darwin Streaming
- Server (DSS), that is easy to do. You can have mp4live both record and
- transmit live media streams. When you record the .mp4 files, just ensure
- that they are written to the media directory that is accessible via the Darwin
- Streaming Server, typically /usr/local/movies. Once the recording is complete,
- it will be available for on-demand playback.
- For example: $ gmp4player rtsp://DSS/mymovie.mp4
- The Darwin Streaming Server can also be configured to act as a relay agent
- for the mp4live media streams. Copy the .sdp file generated by mp4live to
- the media directory of the Darwin Streaming Server (e.g. /usr/local/movies)
- Players can now request the .sdp file from DSS which will cause DSS to act
- as a relay between mp4live and the player.
- For example: $ gmp4player rtsp://DSS/mymovie.sdp
- Sharing Capture Cards
- =====================
- If you have another program that wants to simultaneously process the raw
- audio and/or video from the capture cards, there is typically a problem
- in that many drivers only support one reader at a time. To address this
- issue, mp4live can be configure to write the raw audio and/or video that
- it reads from the capture cards to a named pipe (fifo). A named pipe looks
- like a file, but the data only exists in memory and never goes to disk.
- This is an efficient way to have the two applications share the media data.
- To configure this feaure, add the following to ~/.mp4live_rc (or whatever
- configuration file you want to use), changing "/dir" to some directory
- where you want the named pipes to exist:
- rawEnable=1
- rawAudioFile=/dir/audio_pipe
- rawAudioUseFifo=1
- rawVideoFile=/dir/video_pipe
- rawVideoUseFifo=1
- The audio format is 16 bit PCM, the video format is YUV12 (planar 4:2:0 YUV).
- Command Line Options
- ====================
- There are currently four command line options to mp4live:
- --file <config-file>
- --automatic
- --headless
- --sdp
- --file <config-file> allows specification of the mp4live configuration file
- to something other than ~/.mp4live_rc. Perhaps you have a several frequently
- used configurations. You can save the configuration settings to different
- files, and then use this option to choose among them.
- --automatic causes mp4live to act as if the Start button was pressed
- immediately upon startup. The program will do whatever the current
- configuration instructs it to do. This option can be used in conjunction
- with the 'cron' utlity to do scheduled recording and/or transmission.
- --headless causes mp4live to behave in the --automatic mode AND not display
- any user interface.
- --sdp causes mp4live to just generate the sdp file based on its configuration
- file and then exit.
- Known Issues
- ============
- Using a system with a PCI instead of an AGP video display card can cause
- video "tearing" with CIF or larger size images. I.e. the PCI bus quickly
- gets swamped moving raw video from the video capture card to the CPU, and
- then from the CPU to the video display card. Having the AGP bus for the
- CPU to video display card transfer alleviates this problem. If someone is
- interested one could experiment with the video overlay capabilities of the
- Bt8x8 to bypass this problem, but it would require some rework of our code
- with respect to the video preview function.
- It took me awhile to figure this out so perhaps I can save some of you some
- time. If you use the Hauppage WinTV Go card you need to connect the mini-jack
- on the card to the line-in input on your sound card in order to get the
- audio signal from the TV tuner.
- Reports from those who have tried mp4live on SMP enabled kernels report
- crashes that appear to be related to SDL. Pending a SDL fix to this we don't
- recommend using mp4live with SMP. However, the code is multi-threaded so
- it should be possible exploit an SMP machine by assigning the video encoding
- thread to one CPU and let the other threads run on another CPU.
- Note there is currently no support for DV/mini-DV camcorders via FireWire.
- You can of course still use these via their composite or S-Video outputs.
- More recent versions of mp4live add streaming hint tracks as a post-processing
- step (i.e. after the recording is finished). For long duration recording
- (1 hour or greater), this step can take a minute or two. I'm hoping to
- enhance the UI to provide user feedback while this is taking place, but
- for now the application gets very unresponsive during this period. If this
- is a big problem for you, there is a configuration option to disable the
- hinting process, "recordMp4HintTracks=0". The mp4 file can always be hinted
- later with the mp4creator utility.
- Unknowns
- ========
- I've only used mp4live with two video capture cards the Viewcast Osprey 100
- and the Hauppage WinTV Go. There are many other Bt8x8 based capture cards
- listed in the bttv driver documentation. Odds are you're using one of these ;-)
- Reports from initial users suggest though that the bttv driver handles the
- wide variety of cards gracefully, and mp4live doesn't have card specific
- issues.
- If you do have problems with mp4live, my first suggestion is that you download
- the latest version of the xawtv package, and try it with your capture card.
- If it works and mp4live doesn't then I'd be glad to hear from you. If xawtv
- doesn't work with your capture card, then I can't help you. Something is
- wrong with your capture card/system/bttv driver/kernel combination. I don't
- have the capability or inclination to debug that for you!
- Links
- =====
- MPEG4IP http://www.mpeg4ip.net/
- bttv driver http://bytesex.org/bttv/
- qce driver http://www.sourceforge.net/projects/qce-ga
- xawtv http://bytesex.org/xawtv/
- Xvid http://www.xvid.org/
- LAME http://www.sourceforge.net/projects/lame
- Dave Mackie
- Cisco Systems, Inc.