README
上传用户:sun1608
上传日期:2007-02-02
资源大小:6116k
文件大小:14k
源码类别:

流媒体/Mpeg4/MP4

开发平台:

Visual C++

  1. July 15, 2002 - Dave Mackie
  2. MP4LIVE 
  3. =======
  4. MP4LIVE is a Linux audio/video capture utility that can capture and encode 
  5. audio and video in real-time. The results can be written to either an .mp4
  6. file, transmitted onto the network via either unicast or multicast, or both 
  7. simultaneously! The audio is encoded with MP3 or AAC, and the video with 
  8. MPEG-4 Simple Profile.
  9. Please use the MPEG4IP SourceForge site to report problems, suggest 
  10. enhancements, ask questions, etc. The URL is 
  11. http://www.sourceforge.net/projects/mpeg4ip
  12. Changes in Version 0.9.5
  13. ========================
  14. Once again, fixes for A/V sync and adapting to encoding speed.
  15. Added UI to easily load and save configuration files
  16. SDP now reflects media bandwidth
  17. Experimental file sources is removed.
  18. Hardware Requirements
  19. =====================
  20. Pentium III class machine of at least 500 MHz 
  21. (Pentium IV class machine at 2 GHz is very nice.)
  22. Note systems vary quite a bit in their video capture abilities. For instance,
  23. I have a name brand 750 MHz PIII that drops frames when pushed to CIF sizes
  24. at greater than 15 fps, but I have a no-name clone with a 800 MHz PIII that 
  25. can encode CIF @ 24 fps no problem.
  26. 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.
  27. A sound card with an OSS compatible driver and capture ability.
  28. A video device with a video4linux (v4l) compatible driver and memory mapped 
  29. capture ability.
  30. Known to work are:
  31. Video capture cards based on the Brooktree 8x8 chip
  32. with an analog A/V source - VCR, DVD, Camcorder, Settop box, Tivo, etc.
  33. Typically a video capture card will support composite video inputs.
  34. Some will also have S-Video input.
  35. Others will also have a TV Tuner input.
  36. Logitech Quickcam Express Webcam
  37. Software Requirements
  38. =====================
  39. Linux with a 2.4 or later kernel
  40. (My development was done on RedHat 7.X)
  41. Drivers for sound and video devices
  42. bttv 0.7 or later video capture driver
  43. (Included with RedHat 7.1 and later)
  44. qce webcam driver
  45. WARNINGS!
  46. =========
  47. Please see the MPEG4IP README regarding legal issues, and the list of 
  48. open source packages that are redistributed with this code.
  49. This is a LINUX program! Do not even think about trying to get this to 
  50. run on Windows! Even moving it to other UNIX systems would require some 
  51. re-programming since the sound and video capture interfaces are Linux 
  52. specific.
  53. By far the easiest route is to use a Linux distribution that already has a
  54. 2.4 kernel, the bttv driver, and the associated i2c module built into it.
  55. I've hacked kernels before, and I'm not sure I could sucessfully follow the 
  56. instructions in the bttv driver as to how to configure a kernel so that it 
  57. would work. Caveat emptor!
  58. I've had many headaches with sound cards under Linux. Before you start using 
  59. mp4live, please make sure you're able to playback and record with your sound 
  60. card!
  61. You should definitely increase the number of capture buffers for the bttv 
  62. driver. This reduces the chance of dropping video frames due to transient
  63. delays in the system. By default bttv uses 2 buffers. You can increase this 
  64. by editting /etc/modules.conf and adding the line 
  65. "add options bttv gbuffers=32"
  66. at the end of the file. The value 32 is my recommendation but you can 
  67. experiment with other values if you are so inclined.
  68. Tips
  69. ====
  70. I suggest you disable any fancy, computationally intensive screensavers 
  71. when using mp4live to capture long programs. Along the same lines, don't
  72. run any programs that make large resource demands (CPU, bus, disk, network)
  73. while mp4live is running.
  74. The AAC audio encoder is noticeably slower than the MP3 audio encoder so 
  75. you will see lower video frame rates and greater sensitivity to CPU load 
  76. if you are using AAC.
  77. Linux supports the POSIX soft real-time extensions and mp4live will attempt
  78. to use these to give it priority over non-real time processes. Typically
  79. these calls can only be made by processes with root privileges, so you may
  80. want to run mp4live as root for this reason.
  81. Building and Installing
  82. =======================
  83. See the MPEG4IP README for general notes about the build environment. 
  84. Assuming you've already done a build at the top level of mpeg4ip, and
  85. you're on a Linux system then mp4live should be built and waiting for you
  86. in this directory. If you've done a top level 'make install', the mp4live
  87. will be installed into '/usr/local/bin'. Of course, you can also issue 
  88. 'make' and 'make install' from this directory as well.
  89. Using mp4live
  90. =============
  91. Typically, there is no need for command line options to mp4live. You can
  92. just type 'mp4live' and you'll be up and running.
  93. If you change an mp4live configuration setting, then that change will be 
  94. saved in your home directory in ~/.mp4live_rc. This file is read when 
  95. mp4live is started, and the configuration settings adjusted accordingly.
  96. The default settings for mp4live are to record 1 minute of audio and video
  97. to an mp4 file, ./capture.mp4  The first time you use the program, it's
  98. a good idea to just hit the Start button, and see what happens. If all
  99. goes well, 1 minute later you have a playable/streamable mp4 file. If you
  100. don't get this, then it's time to review this README, and it that doesn't
  101. help, then fire off a message on the MPEG4IP SourceForge discussion group.
  102. Assuming things are working you can now use the Settings buttons to adjust
  103. things like the video size and frame rate, the audio sampling rate, the 
  104. encoded bitrates, etc. The UI is hopefully self-explanatory. If not, let us
  105. know what's confusing and we'll look at fixing that. (I'm a big believer that
  106. if you need to read a document to use a UI, then the UI is broken and should
  107. be fixed. Of course, as I've re-learned many times, what is obvious and natural
  108. to me, isn't always to other people.)
  109. If you're capturing video that uses "widescreen" or "letterbox" format, 
  110. it's a big win to change the "Aspect Ratio" in the Video Settings. This 
  111. will cause the video to be automatically cropped so you don't waste precious 
  112. CPU time encoding the empty black bars at the top and bottom of the screen. 
  113. Network Transmission
  114. ====================
  115. To use mp4live to transmit live audio/video to the network, follow these
  116. directions: 
  117. Select 'Enabled' in the Transmission section of the main window.
  118. By default, mp4live will multicast the media to IP address 224.1.2.3
  119. If you wish to change this, select the 'Settings...' button in the
  120. Transmission section of the main window. A dialog will appear that allows
  121. selection of the destination IP address (either unicast or multicast),
  122. the UDP port numbers used, the TTL used if multicasting, and the name of
  123. the .sdp file to generate (more about that in a minute). When you're done
  124. making changes, select 'OK'.
  125. When you press mp4live's 'Start' button, media transmission to the network 
  126. will begin. Also a small text file with extension .sdp will be created that 
  127. describes the media transmission for the player. The player needs the .sdp 
  128. file to be able to tune into the media streams. (Note the .sdp file can also
  129. be generated from the Transmission Settings dialog)
  130. The most convenient way to distribute the .sdp file is to have mp4live write
  131. it to a directory that is accessible from a web server (httpd) that is running
  132. on the same machine as mp4live. This allows the client to be started with
  133. the HTTP URL of the sdp file, and it will download the .sdp file via http
  134. and then use the information in the .sdp file to tune into the network
  135. transmission. E.g. 'gmp4player http://myserver/myprogram.sdp'
  136. You can of course distribute the .sdp file in a number of other ways, say
  137. ftp, or email. You would then start the player with the local file name 
  138. of the sdp file, e.g. 'gmp4player myprogram.sdp'
  139. Use with Darwin Streaming Server
  140. ================================
  141. If you would like to use mp4live in conjunction with the Darwin Streaming
  142. Server (DSS), that is easy to do. You can have mp4live both record and 
  143. transmit live media streams. When you record the .mp4 files, just ensure 
  144. that they are written to the media directory that is accessible via the Darwin 
  145. Streaming Server, typically /usr/local/movies. Once the recording is complete,
  146. it will be available for on-demand playback.
  147. For example: $ gmp4player rtsp://DSS/mymovie.mp4
  148. The Darwin Streaming Server can also be configured to act as a relay agent
  149. for the mp4live media streams. Copy the .sdp file generated by mp4live to
  150. the media directory of the Darwin Streaming Server (e.g. /usr/local/movies)
  151. Players can now request the .sdp file from DSS which will cause DSS to act
  152. as a relay between mp4live and the player.
  153. For example: $ gmp4player rtsp://DSS/mymovie.sdp
  154. Sharing Capture Cards
  155. =====================
  156. If you have another program that wants to simultaneously process the raw
  157. audio and/or video from the capture cards, there is typically a problem
  158. in that many drivers only support one reader at a time. To address this
  159. issue, mp4live can be configure to write the raw audio and/or video that
  160. it reads from the capture cards to a named pipe (fifo). A named pipe looks
  161. like a file, but the data only exists in memory and never goes to disk.
  162. This is an efficient way to have the two applications share the media data. 
  163. To configure this feaure, add the following to ~/.mp4live_rc (or whatever
  164. configuration file you want to use), changing "/dir" to some directory 
  165. where you want the named pipes to exist:
  166. rawEnable=1
  167. rawAudioFile=/dir/audio_pipe
  168. rawAudioUseFifo=1 
  169. rawVideoFile=/dir/video_pipe
  170. rawVideoUseFifo=1 
  171. The audio format is 16 bit PCM, the video format is YUV12 (planar 4:2:0 YUV).
  172. Command Line Options
  173. ====================
  174. There are currently four command line options to mp4live:
  175. --file <config-file>
  176. --automatic
  177. --headless
  178. --sdp
  179. --file <config-file> allows specification of the mp4live configuration file
  180. to something other than ~/.mp4live_rc. Perhaps you have a several frequently
  181. used configurations. You can save the configuration settings to different
  182. files, and then use this option to choose among them.
  183. --automatic causes mp4live to act as if the Start button was pressed
  184. immediately upon startup. The program will do whatever the current 
  185. configuration instructs it to do. This option can be used in conjunction
  186. with the 'cron' utlity to do scheduled recording and/or transmission.
  187. --headless causes mp4live to behave in the --automatic mode AND not display
  188. any user interface.
  189. --sdp causes mp4live to just generate the sdp file based on its configuration
  190. file and then exit.
  191. Known Issues
  192. ============
  193. Using a system with a PCI instead of an AGP video display card can cause 
  194. video "tearing" with CIF or larger size images. I.e. the PCI bus quickly
  195. gets swamped moving raw video from the video capture card to the CPU, and 
  196. then from the CPU to the video display card. Having the AGP bus for the
  197. CPU to video display card transfer alleviates this problem. If someone is
  198. interested one could experiment with the video overlay capabilities of the
  199. Bt8x8 to bypass this problem, but it would require some rework of our code
  200. with respect to the video preview function.
  201. It took me awhile to figure this out so perhaps I can save some of you some
  202. time. If you use the Hauppage WinTV Go card you need to connect the mini-jack
  203. on the card to the line-in input on your sound card in order to get the
  204. audio signal from the TV tuner.
  205. Reports from those who have tried mp4live on SMP enabled kernels report
  206. crashes that appear to be related to SDL. Pending a SDL fix to this we don't
  207. recommend using mp4live with SMP.  However, the code is multi-threaded so
  208. it should be possible exploit an SMP machine by assigning the video encoding 
  209. thread to one CPU and let the other threads run on another CPU. 
  210. Note there is currently no support for DV/mini-DV camcorders via FireWire. 
  211. You can of course still use these via their composite or S-Video outputs.
  212. More recent versions of mp4live add streaming hint tracks as a post-processing
  213. step (i.e. after the recording is finished). For long duration recording
  214. (1 hour or greater), this step can take a minute or two. I'm hoping to 
  215. enhance the UI to provide user feedback while this is taking place, but
  216. for now the application gets very unresponsive during this period. If this
  217. is a big problem for you, there is a configuration option to disable the
  218. hinting process, "recordMp4HintTracks=0". The mp4 file can always be hinted
  219. later with the mp4creator utility.
  220. Unknowns
  221. ========
  222. I've only used mp4live with two video capture cards the Viewcast Osprey 100
  223. and the Hauppage WinTV Go. There are many other Bt8x8 based capture cards 
  224. listed in the bttv driver documentation. Odds are you're using one of these ;-)
  225. Reports from initial users suggest though that the bttv driver handles the
  226. wide variety of cards gracefully, and mp4live doesn't have card specific 
  227. issues.
  228. If you do have problems with mp4live, my first suggestion is that you download 
  229. the latest version of the xawtv package, and try it with your capture card. 
  230. If it works and mp4live doesn't then I'd be glad to hear from you. If xawtv 
  231. doesn't work with your capture card, then I can't help you. Something is 
  232. wrong with your capture card/system/bttv driver/kernel combination. I don't
  233. have the capability or inclination to debug that for you! 
  234. Links
  235. =====
  236. MPEG4IP http://www.mpeg4ip.net/
  237. bttv driver http://bytesex.org/bttv/
  238. qce driver http://www.sourceforge.net/projects/qce-ga
  239. xawtv http://bytesex.org/xawtv/
  240. Xvid http://www.xvid.org/
  241. LAME http://www.sourceforge.net/projects/lame
  242. Dave Mackie
  243. Cisco Systems, Inc.