[FFmpeg-cvslog] r9176 - trunk/doc/faq.texi

victor subversion
Sat Jun 2 23:50:45 CEST 2007


Author: victor
Date: Sat Jun  2 23:50:45 2007
New Revision: 9176

Log:
?Add FAQ entry for video joining
patch by V?ctor Paesa, wzrlpy dontuseme arsystel com


Modified:
   trunk/doc/faq.texi

Modified: trunk/doc/faq.texi
==============================================================================
--- trunk/doc/faq.texi	(original)
+++ trunk/doc/faq.texi	Sat Jun  2 23:50:45 2007
@@ -250,6 +250,63 @@ not what you use to play it.
 that it is related to FFmpeg.
 @end itemize
 
+ at section How can I join video files?
+
+A few multimedia containers (MPEG1, MPEG2 PS, DV) allow to join video files by
+merely concatenating them.
+
+Hence you may concatenate your multimedia files by first transcoding them to
+these privileged formats, then using the humble @code{cat} command (or the
+equally humble @code{copy} under Win32), and finally transcoding back to your
+format of choice.
+
+ at example
+ffmpeg -i input1.avi -sameq intermediate1.mpg
+ffmpeg -i input2.avi -sameq intermediate2.mpg
+cat intermediate1.mpg intermediate2.mpg > intermediate_all.mpg
+ffmpeg -i intermediate_all.mpg -sameq output.avi
+ at end example
+
+Notice that you should either use @code{-sameq} or set a reasonably high
+bitrate for your intermediate and output files, if you want to preserve
+video quality.
+
+Notice too that you may avoid the huge intermediate files by taking advantage
+of named pipes, should your platform support it:
+
+ at example
+mkfifo intermediate1.mpg
+mkfifo intermediate2.mpg
+ffmpeg -i input1.avi -sameq -y intermediate1.mpg < /dev/null &
+ffmpeg -i input2.avi -sameq -y intermediate2.mpg < /dev/null &
+cat intermediate1.mpg intermediate2.mpg |\
+ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec mp3 output.avi
+ at end example
+
+Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
+allow concatenation, and the transcoding step is almost lossless.
+
+For example, let's say we want to join two FLV files into an output.flv file:
+
+ at example
+mkfifo temp1.a
+mkfifo temp1.v
+mkfifo temp2.a
+mkfifo temp2.v
+mkfifo all.a
+mkfifo all.v
+ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp1.a < /dev/null &
+ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - > temp2.a < /dev/null &
+ffmpeg -i input1.flv -an -f yuv4mpegpipe - > temp1.v < /dev/null &
+ffmpeg -i input2.flv -an -f yuv4mpegpipe - > temp2.v < /dev/null &
+cat temp1.a temp2.a > all.a &
+cat temp1.v temp2.v > all.v &
+ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
+       -f yuv4mpegpipe -i all.v \
+       -sameq -y output.flv
+rm temp[12].[av] all.[av]
+ at end example
+
 @chapter Development
 
 @section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between?




More information about the ffmpeg-cvslog mailing list