- Encoding h.264 on Debian Wheezy with avconv
- ProRes encoding
- H.264 encoding guide
- Adding metadata to a Quicktime
- Concatenate video files
- Record only audio from pulseaudio source
- Screen capture
- Make animation codec quicktime movies from an image sequence with ffmpeg
- One minute of silence file
- "Uncompressed 8-bit" (rawvideo) 422 yuv 2vuy rgb from image sequence
- Avid DNxHD codec
- Rotate input movie 90 degrees
- Pipe raw video in to ffmpeg without a container
- Per-frame md5 checksum
The Debian team went with libav instead of ffmpeg. Here are the lines I just used to encode h.264 with AAC audio.
avconv -i MVI_2671.MOV -crf 20 -c:v libx264 -preset slow -strict experimental -s 640x360 mvi_2671.mp4
If you're forced to use ProRes by someone else's choice to use Final Cut, you can now create Quicktimes of those with ffmpeg.
ffmpeg -f image2 -i %d.tif -vcodec prores -profile:v 3 prores422hq.mov
If you want libx264 encoding in Debian, you'll need to make your own package, or use one from the http://debian-multimedia.org/ repository.
ffmpeg -i track05.wav \ -metadata title="Track #5" \ -metadata author="Unknown Artist" \ -metadata composer="Composer Unknown" \ -metadata album="Tracer Video Game Soundtrack" \ -metadata year="1996" \ -metadata track="5" \ -metadata comment="This is redbook CD audio track #5 from the Windows 95 game \"Tracer\"" \ -metadata genre="Game Soundtrack" \ -metadata copyright="Copyright 1996 Future Endeavors, Inc." \ -metadata description="Nifty techno background tune for a futuristic video game" \ -metadata synopsis="Hey, is this thing on? This is where the 'synopsis' field shows up." \ -metadata show="Tracer" \ -metadata episode_id="102" \ -metadata network="Some network" \ -acodec alac \ -y track05.m4a
Concatenate two VOB files:
ffmpeg -i "concat:VTS_01_1.VOB|VTS_01_2.VOB" -f mpeg -c copy output.mpeg
Concatenate two MKV, MP4 files with H264 video stream:
ffmpeg-i file-01.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-01.mpeg.ts ffmpeg-i file-02.mkv -f mpegts -c copy -bsf:v h264_mp4toannexb file-02.mpeg.ts ffmpeg -isync -i "concat:file-01.mpeg.ts|file-02.mpeg.ts" -f matroska -c copy output.mkv
You can use this command line to record to two-channel WAV file.
ffmpeg -y -f alsa -ac 2 -ab 256k -i pulse -acodec pcm_s16le audio.wav
Related video. http://www.youtube.com/watch?v=i-hGbw1Wb-w
ffmpeg-user random tip #19 X11 session recording with ffmpeg: ffmpeg -f oss -i /dev/audio -f x11grab -s $WIDTHx$HEIGHT -r 5 -i :0.0 \ x11-session.avi Use xdpyinfo to get WIDTH and HEIGHT values.
That's a pretty terse instruction from Stefano Sabatini's email signature on the ffmpeg-users mailing list, that is just begging for some elaboration.
The first thing that will probably trip people up here is that it looks like Stefano is expecting you to be using the OSS sound system.
In an alternate universe, the 4Front Technology guys offered OSS up under a GPL-compatible license a lot sooner, so ALSA was never written. In this universe, however, if you are running a Linux Kernel, you most likely are running straight ALSA (a professional audio sound system optimized for low-latency), or PulseAudio (a desktop sound system optimized for managing audio from multiple programs).
If you're not using OSS, you'll probably have to use some other flags than
oss -i /dev/audio to get audio on your screen capture.
You might also check out this PyGTK frontend for ffmpeg. https://launchpad.net/kazam
All of these examples were done on a workstation with dual monitors. The leftmost monitor is set to 1920x1200.
Lossless. Smooth motion. Very large file.
ffmpeg -y -f x11grab -r 24 -s 1920x1200 -i :0.0+0,0 \ -vcodec rawvideo -pix_fmt uyvy422 foo.mov
Slight desaturation, choppy screen movement. Decent if you're not moving around too much.
ffmpeg -y -f x11grab -r 24 -s 1920x1200 -i :0.0+0,0 \ -vcodec libx264 -vpre normal -b 4Mb lala.mov
The argument to the -vpre flag should be some libx264 preset from /usr/share/ffmpeg. If the preset's filename is "libx264-lossless_medium.ffpreset", you should use the value "lossless_medium".
You can use the
-start_frame flag to specify the start frame of the input sequence.
ffmpeg -f image2 -i ./test_sequence.%04d.dpx \ -vcodec qtrle -r 10 -g 300 -s 1920x1080 test.mov
'-f image2' tells ffmpeg its input is an image sequence. '-i' is the image sequence spec.
'-vcodec qtrle' says use qtrle as the output codec. '-r' is the framerate. '-g' is the GOP (group of pictures) size. '-s' is the resolution of the output movie. 'test.mov' is the output filename.
One minute of audio silence with ffmpeg. Change codec to taste.
ffmpeg -ar 48000 -t 60 -f s16le -acodec pcm_s16le -i /dev/zero \ -ab 64K -f mp2 -acodec mp2 -y silence.mp2
When you make this type of video with Apple's Quicktime, the video info on a Mac will show "Uncompressed 8-bit" as the codec. If you make the same type of video with the command line below the Mac will show "rawvideo" as the codec. Don't be alarmed.
You can actually search the .mov file in a hex editor to find the "rawvideo" string and change it, if it really bothers you.
ffmpeg -f image2 -i /path/to/frames/%d.tif \ -vcodec rawvideo -pix_fmt uyvy422 -r 24 -y uncompressed.mov
Note that the image2 format expects input frames to start at 0 or 1.
http://community.avid.com/forums/p/60895/341626.aspx - An old thread on the topic. Complaints about colorspace.
http://www.itbroadcastanddigitalcinema.com/ffmpeg_howto.html#Encoding_VC-3 - Table of DNxHD bitrates and formats.
ffmpeg -y -f image2 -r 24 -i test.%04d.tif \ -vcodec dnxhd -b 36Mb -r 23.98 -s 1920x1080 test.mov
ffmpeg -vf "transpose=1" -i input.mp4 output.mp4
02:40:18 rabidsnail> Is it possible to pipe raw video frames into ffmpeg or do I absolutely need a container? 02:48:02 relaxed> rabidsnail: it's possible 02:49:52 relaxed> rabidsnail: cat raw.yuv | ffmpeg -f rawvideo -pix_fmt $pix_fmt -s $framesize -r $framerate -i -
ffmpeg -i video.avi -f framemd5 checksum_output.txt