From 9aeeeb63f7e1ab7b0b7bb839a5f258667a2d2d78 Mon Sep 17 00:00:00 2001 From: Fabrice Bellard Date: Wed, 20 Dec 2000 00:02:47 +0000 Subject: Initial revision Originally committed as revision 2 to svn://svn.ffmpeg.org/ffmpeg/trunk --- doc/BUGS | 14 ++++ doc/README.tech | 25 +++++++ doc/TODO | 19 +++++ doc/ffmpeg.txt | 62 ++++++++++++++++ doc/ffserver.conf | 214 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 334 insertions(+) create mode 100644 doc/BUGS create mode 100644 doc/README.tech create mode 100644 doc/TODO create mode 100644 doc/ffmpeg.txt create mode 100644 doc/ffserver.conf (limited to 'doc') diff --git a/doc/BUGS b/doc/BUGS new file mode 100644 index 0000000000..0c9ef63267 --- /dev/null +++ b/doc/BUGS @@ -0,0 +1,14 @@ +- Sound is only handled in mono. The fixed psycho acoustic model is + very bad, although the quality is surpringly good for such a model ! + +- the bit rate control is really not correct. + +- Only frame size multiple of 16 are handled. + +- If you want a specific format to be added (I am thinking about + MJPEG, H261) please tell me. Of course, the format you choose should + be based on MPEG to be easily integrated + +- ffmpeg can be used to generate streaming audio/video on a + server. Please tell me if you are interested. + diff --git a/doc/README.tech b/doc/README.tech new file mode 100644 index 0000000000..8ba259d27a --- /dev/null +++ b/doc/README.tech @@ -0,0 +1,25 @@ +Technical notes: +--------------- + +- To increase speed, only motion vectors (0,0) are tested + +- The decision intra/predicted macroblock is the algorithm suggested + by the mpeg 1 specification. + +- only Huffman based H263 is supported, mainly because of patent + issues. + +- Many options can be modified only in the source code. + +- I rewrote the mpeg audio layer 2 compatible encoder from scratch. It + is one of the simplest encoder you can imagine (800 lines of C code + !). It is also one of the fastest because of its simplicity. They + are still some problems of overflow. A minimal psycho acoustic model + could be added. Only mono stream can be generated. I may add stereo + if needed. + +- I rewrote the AC3 audio encoder from scratch. It is fairly naive, + but the result are quiet interesting at 64 kbit/s. It includes + extensions for low sampling rates used in some Internet + formats. Differential and coupled stereo is not handled. Stereo + channels are simply handled as two mono channels. diff --git a/doc/TODO b/doc/TODO new file mode 100644 index 0000000000..c57a4876d6 --- /dev/null +++ b/doc/TODO @@ -0,0 +1,19 @@ +ffmpeg TODO list: + +- Add ASF format. + +- add MJPEG codec. + +- fix skip frame bug in mpeg video + +- fix G2 audio problem (bad volume in AC3 ?) + +- use non zero motion vectors. + +- test fifo & master handling + +- deny & allow + password. + +- Improve psycho acoustic model for AC3 & mpeg audio. + +- Improve the bit rate control for video codecs. diff --git a/doc/ffmpeg.txt b/doc/ffmpeg.txt new file mode 100644 index 0000000000..b7fffcdd29 --- /dev/null +++ b/doc/ffmpeg.txt @@ -0,0 +1,62 @@ +* ffmpeg can use YUV files as input : + + ffmpeg /tmp/out.mpg /tmp/test + +If will use the files: +/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, +/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... + +The Y files use twice the resolution of the U and V files. They are +raw files, without header. They can be generated by all decent video +decoders. + +* ffmpeg can use a video4linux compatible video source : + + ffmpeg /tmp/out.mpg + + Note that you must activate the right video source and channel + before launching ffmpeg. You can use any TV viewer such as xawtv by + Gerd Knorr which I find very good. + +* There are some importants options to know: + +-s size set frame size [160x128] +-f format set encoding format [mpeg1] +-r fps set frame rate [25] +-b bitrate set the bitrate in kbit/s [100] +-t time set recording time in seconds [10.0] + +The frame size can also be: cif, qcif, sqcif and 4cif. +The encoding format can be mpeg1, h263 or rv10. + +Advanced options are: + +-d device set video4linux device name +-g gop_size set the group of picture size. + An 'intra' frame is generated every gop_size frames. +-i use only intra images (speed up compression, but lower quality). +-c comment set the comment string. + +Comment strings are only used for Real Video(tm) encoding. Tags are +used in the comment string. A typical comment string is: + +"+title=Test Video +author=FFMpeg +copyright=Free +comment=Generated by FFMpeg 1.0" + +The output file can be "-" to output to a pipe. This is only possible +with mpeg1 and h263 formats. + +* Tips: + +- For low bit rate application, use a low frame rate and a small gop + size. This is especially true for real video where the Linux player + does not seem to be very fast, so it can miss frames. An example is: + + ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm + +- The parameter 'q' which is displayed while encoding is the current + quantizer. The value of 1 indicates that a very good quality could + be achieved. The value of 31 indicates the worst quality. If q=31 + too often, it means that the encoder cannot compress enough to meet + your bit rate. You must either increase the bit rate, decrease the + frame rate or decrease the frame size. + diff --git a/doc/ffserver.conf b/doc/ffserver.conf new file mode 100644 index 0000000000..8b5d926a12 --- /dev/null +++ b/doc/ffserver.conf @@ -0,0 +1,214 @@ +# Port on which the server is listening. You must select a different +# port from your standard http web server if it is running on the same +# computer. + +Port 8080 + +# Address on which the server is bound. Only useful if you have +# several network interfaces. + +BindAddress 0.0.0.0 + +# Host and port of the master server if you which that this server +# duplicates another existing server. Otherwise, the server does the +# audio/video grab itself. See the following options for the grab parameters + +#MasterServer http://localhost:80/index.html + +# Grab parameters + +#AudioDevice /dev/dsp +#VideoDevice /dev/video + +# Number of simultaneous requests that can be handled. Since FFServer +# is very fast, this limit is determined mainly by your Internet +# connection speed. + +MaxClients 1000 + +# Access Log file (uses standard Apache log file format) +# '-' is the standard output + +CustomLog - + +################################################################## +# Now you can define each stream which will be generated from the +# original audio and video stream. Each format has a filename (here +# 'test128.mpg'). FFServer will send this stream when answering a +# request containing this filename. + + + +# Format of the stream : you can choose among: +# mpeg1 : MPEG1 multiplexed video and audio +# mpeg1video : only MPEG1 video +# mp2 : MPEG audio layer 2 +# mp3 : MPEG audio layer 3 (currently sent as layer 2) +# rm : Real Networks compatible stream. Multiplexed audio and video. +# ra : Real Networks compatible stream. Audio only. +# mpjpeg : Multipart JPEG (works with Netscape without any plugin) +# jpeg : Generate a single JPEG image. +# asf : ASF compatible stream (Windows Media Player format) +# swf : Macromedia flash(tm) compatible stream +# master : special ffmpeg stream used to duplicate a server + +Format mpeg1 + +# Bitrate for the audio stream. Codecs usually support only a few different bitrates. + +AudioBitRate 32 + +# Number of audio channels : 1 = mono, 2 = stereo + +AudioChannels 1 + +# Sampling frequency for audio. When using low bitrates, you should +# lower this frequency to 22050 or 11025. The supported frequencies +# depend on the selected audio codec. + +AudioSampleRate 44100 + +# Bitrate for the video stream. +VideoBitRate 64 + +# Number of frames per second +VideoFrameRate 3 + +# Size of the video frame : WxH +# W : width, H : height +# The following abbreviation are defined : sqcif, qcif, cif, 4cif +#VideoSize 352x240 + +# transmit only intra frames (useful for low bitrates) +VideoIntraOnly + +# If non intra only, an intra frame is transmitted every VideoGopSize +# frames Video synchronization can only begin at an I frames. +#VideoGopSize 12 + + + +# second mpeg stream with high frame rate + + +Format mpeg1video +VideoBitRate 128 +VideoFrameRate 25 +#VideoSize 352x240 +VideoGopSize 25 + + +################################################################## +# Another stream : used to download data to another server which +# duplicates this one + + + +Format master + + + +################################################################## +# Another stream : Real with audio only at 32 kbits + + + +Format ra +AudioBitRate 32 + + + +################################################################## +# Another stream : Real with audio and video at 64 kbits + + + +Format rm + +AudioBitRate 32 +VideoBitRate 20 +VideoFrameRate 2 +VideoIntraOnly + + + +################################################################## +# Another stream : Mpeg audio layer 2 at 64 kbits. + + + +Format mp2 +AudioBitRate 64 +AudioSampleRate 44100 + + + + + +Format mp2 +AudioBitRate 32 +AudioSampleRate 16000 + + + +################################################################## +# Another stream : Multipart JPEG + + + +Format mpjpeg + +VideoFrameRate 2 +VideoIntraOnly + + + +################################################################## +# Another stream : Multipart JPEG + + + +Format jpeg + +# the parameters are choose here to take the same output as the +# Multipart JPEG one. +VideoFrameRate 2 +VideoIntraOnly + + + +################################################################## +# Another stream : Flash + + + +Format swf + +VideoFrameRate 2 +VideoIntraOnly + + + + +################################################################## +# Another stream : ASF compatible + + + +Format asf + +AudioBitRate 64 +AudioSampleRate 44100 +VideoFrameRate 2 +VideoIntraOnly + + + +################################################################## +# Another stream : server status + + + +Format status + + -- cgit v1.2.3