Tag Info

Hot answers tagged

42

In recent versions of FFmpeg, use the crop filter: ffmpeg -i in.mp4 -filter:v "crop=out_w:out_h:x:y" out.mp4 Where the options are as follows: out_w is the width of the output rectangle out_h is the height of the output rectangle x and y specify the top left corner of the output rectangle Original image Original 320x240 image Example 1 To crop a ...


13

using the scale filter will do it, but there is a bit more to it. ffmpeg -i input.mov -vf scale=720x406 output.mov will create a movie with the required pixel dimensions, but if you look at the output you'll find that it adds information into the metadata so that it will play back at the same aspect ratio as the original, by using non-square pixels. So ...


10

I have a large set of jpgs that I want to convert to a video losslessly You can probably just mux the jpg images: ffmpeg -framerate 30 -i input%03d.jpg -codec copy output.mkv Then compare the md5sums of each frame with the framemd5 muxer: $ ffmpeg -i input%03d.jpg -f framemd5 - 0, 0, 0, 1, 460800, ...


7

concat filter This method is best if you need to perform additional filtering: Use the trim, atrim, setpts, asetpts, and concat filters: ffmpeg -i input -filter_complex \ "[0:v]trim=60:65,setpts=PTS-STARTPTS[v0]; \ [0:a]atrim=60:65,asetpts=PTS-STARTPTS[a0]; \ [0:v]trim=120:125,setpts=PTS-STARTPTS[v1]; [0:a]atrim=120:125,asetpts=PTS-STARTPTS[a1]; \ ...


7

The -loop option is specific to the image file demuxer and gif muxer, so it can't be used for typical video files, but you can use the concat demuxer. Concat demuxer Make a text file. Contents of an example text file to repeat 4 times. $ cat list.txt file 'input.mp4' file 'input.mp4' file 'input.mp4' file 'input.mp4' Then run ffmpeg: ffmpeg -f concat ...


6

ffmpeg has removed their x264 presets so the -vpre setting doesn't work any more. Now, I have a script for converting video files to a format my Cellphone can handle. ffmpeg -i input.avi -sws_flags lanczos+accurate_rnd -vf "scale=320:240" -c:v libx264 -crf 20 -preset veryslow -profile:v main -tune fastdecode -c:a copy output.mkv I'll explain each option ...


6

FFmpeg is probably being used more than you believe. I think the BBC uses it for some workflows, there is evidence that Laika and Weta may use it, and there is a fork called FFmbc which is targeted for professional broadcast usage. YouTube probably uses FFmpeg to decode as shown by some unique decoding issues (but this was several years ago that I read ...


6

You can do a simple image overlay using the following syntax: ffmpeg -i input.mp4 -i image.png \ -filter_complex "[0:v][1:v] overlay=25:25:enable='between(t,0,20)'" \ -pix_fmt yuv420p -c:a copy \ output.mp4 overlay=25:25 means we want to position the image 25px to the left and 25px down, originating from the top left corner. enable='between(t,0,20)' ...


5

Besides the workaround in my comment, you should be able to use this syntax from the ffmpeg documentation: ffmpeg -f image2 -pattern_type glob -i '*.png' out.avi The quotes are important, you need ffmpeg to see the *, not have the shell expand it.


5

From http://www.ffmpeg.org/faq.html: If you have large number of pictures to rename, you can use the following command to ease the burden. The command, using the bourne shell syntax, symbolically links all files in the current directory that match *jpg to the ‘/tmp’ directory in the sequence of ‘img001.jpg’, ‘img002.jpg’ and so on. x=1; for i in *jpg; do ...


5

I suspect you are having problems because you are trying to overwrite the input file with the output, ffmpeg just doesn't work that way. For a single file: ffmpeg -i input.avi -an -c:v copy output.mkv To do every file in a directory, you can use a for loop. For every `file.avi``in the working directory, this command will create an output called ...


5

Use it. Nothing else can provide the the same quality per bitrate as x264 (the top-class H.264 encoder) while not taking 10,000 years to encode (x265 'n VP9). Some tips: Use a recent ffmpeg build since development is so active. Static builds are available and easy. Add -movflags +faststart to your command. Once encoding is finished this option will ...


5

Use drawbox for the box, and drawtext for the text. ffmpeg -i input.mp4 -vf \ "format=yuv444p, \ drawbox=y=ih/PHI:color=black@0.4:width=iw:height=48:t=max, \ drawtext=fontfile=OpenSans-Regular.ttf:text='Title of this Video':fontcolor=white:fontsize=24:x=(w-tw)/2:y=(h/PHI)+th, \ format=yuv420p" \ -c:v libx264 -c:a copy -movflags +faststart output.mp4 ...


4

First of all, if I remember correctly, the DV format is intra-only, and thus if there is various damage that has happened to your video, there should be a relatively big chance of getting at least something out -- given that the file isn't completely broken in the most relevant of places. A good way of checking if there's at least some kind of sanity left ...


4

-profile baseline seems to work for me, using libx264. I use the libx264 presets - for example "slow" gives me the options listed below. there's fast, slow, veryslow and placebo (might be more, can't remember). stib$ ffmbc -i test.mov -vcodec libx264 -preset slow -profile baseline -acodec libfaac -ab 96k -crf 19 test.mp4 ... [libx264 @ 0x101858c00] profile ...


4

Note: This is for recent FFmpeg, not FFmbc, which doesn't use the same option syntax (yet) You need to use the -profile:v option, which has been introduced in FFmpeg 0.9 (afaik) and is now standard in 1.0. ffmpeg -i input.mp4 -c:v libx264 -preset fast -profile:v baseline out.mov Why? -profile was used (and prioritized) for AAC encoding. It's simply ...


4

H.264 does support true lossless compression (see 'Lossless mode' on this page). It seems that to avoid chroma format conversion, you need to encode using the Hi444PP profile, which accepts RGB pixels. However, a cursory search indicates that x264 doesn't support Hi444PP (yet), whereas some commercial codecs like MainConcept do.


4

with ffmpeg 0.11.1 it's as easy as: ffmpeg -f image2 -i %*.png out.avi From the man page, in an example under "Video and Audio file format conversion": When importing an image sequence, -i also supports expanding shell-like wildcard patterns (globbing) internally. To lower the chance of interfering with your actual file names and the shell's glob ...


4

I would actually suggest the same thing Mulvya suggested. Whenever I've needed to do stuff like this when dealing with 3D animation renderings, I've renamed the files to make them sequential. It's just easier to work with that way in a lot of different software unless you need to preserve the file names for some reason. Total Commander is also a great ...


4

Premiere Pro CS5 should be able to import H.264 video, IIRC, however it may be having trouble with the audio and/or container format. With ffmpeg try re-muxing the video stream without the audio: ffmpeg -i input -an -codec:v copy output.mp4 -an -codec:v copy output.avi If both output.mp4 and output.avi work then we know that the issue lies with the audio ...


4

There is no "typical" size. It depends entirely on the quality level and level of motion in the video. I could encode ten hours of video where there is no movement with very little space since the compression would work very well. On the other hand, if I had a video where every frame was completely different from the last, it would take a huge amount of ...


4

I work as an assistant editor on feature films, and use ffmpeg all the time, primarily for two purposes: Transcoding files to be uploaded for producers to view on digital dailies systems (Dax, PIX, etc). I've written up shell scripts that accept property-of and recipient strings as command line input, along with target bitrate, and then generate the ...


4

This should work faster... ffmpeg -ss 1:00 -t 5 -i in.mkv -ss 2:00 -t 5 -i in.mkv \ -filter_complex "[0][1]concat=n=2:v=1:a=1" \ out.mkv There's no need to specify -t on the output. There's no need to split the audio and video before the concat.


4

Re-muxing only Use stream copy mode to just re-mux instead of re-encode: ffmpeg -ss 01:07:29 -i input -codec copy -map 0 -to 01:08:05 fight.avi Using -ss as an input option can be faster than using it as an output option, but it may not be as accurate. -codec copy will stream copy (no re-encoding). Default behavior, if -codec copy is omitted, is to ...


4

-preset Use the slowest preset that is fast enough that it does not drop frames. You can see if ffmpeg is dropping frames in the console output (if I recall correctly). Presets are: ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow. -crf Use the highest -crf value that still provides an acceptable quality level. Range is 0-51. 0 ...


4

Why would you want your videos in the .3gp container to begin with? Its a very irrelevant format nowadays, there is practically no device that supports the 3gp container but not MP4 at the same time. Its nothing but a close derivative of MP4, they are very similar container formats holding the same codec. If you want to support a lot of devices using h264 in ...


4

A videofilter in ffmpeg always has to modify pixel information hence the reason why you need to re-encode. It seems logical at first that you wouldn't have to do this when cropping but the way lossy video codecs work makes this pretty impossible without re-encoding everything. They usually don't see an array of pixel information but a much more complex ...


4

Couldn't wait! Figured it out: I saved an image to the file out.png at a fixed frame rate from processing. Created a fifo: mkfifo fifo Then in one terminal: tail -f out.png > fifo Then in another terminal: cat fifo | ffmpeg -f image2pipe -r 1 -i pipe:0 spo.mp4 Making sure to close tail first allowing ffmpeg to write the last bit of the file.


4

You could possibly use the curves filter. It has a lighter preset: ffmpeg -i input -vf curves=preset=lighter -c:a copy output The red, green, and blue components can be adjusted separately. The following is the same as what the lighter preset uses: curves=r='0.4/0.5':g='0.4/0.5':b='0.4/0.5' Additionally you can make your own curves preset in ...


4

Choose your license FFmpeg is licensed under the GNU Lesser General Public License (LGPL) version 2.1 or later. Some features are covered by the GNU General Public License (GPL) version 2 or later. If those parts get used the GPL applies to all of FFmpeg. See LICENSE.md in the source to see a list of GPL parts of FFmpeg and which external libraries require ...



Only top voted, non community-wiki answers of a minimum length are eligible