We’re rewarding the question askers & reputations are being recalculated! Read more.

Hot answers tagged

283

See this answer. Quoted below for convenience: Calculate the bitrate you need by dividing 1 GB by the video length in seconds. So, for a video of length 16:40 (1000 seconds), use a bitrate of 1000000 bytes/sec: ffmpeg -i input.mp4 -b 1000000 output.mp4 Additional options that might be worth considering is setting the Constant Rate Factor, which ...


132

You can download videos and/or just the audio and then watch/listen to them using youtube-dl. The script is written in Python and makes use of ffmpeg I believe. $ youtube-dl --help Usage: youtube-dl [options] url [url...] Options: General Options: -h, --help print this help text and exit --version ...


109

Here's what worked for me: ffmpeg -i animated.gif -movflags faststart -pix_fmt yuv420p -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" video.mp4 movflags – This option optimizes the structure of the MP4 file so the browser can load it as quickly as possible. pix_fmt – MP4 videos store pixels in different formats. We include this option to specify a specific ...


68

OK then I started ffcast, did vim, quit ffcast, then converted .avi→.gif. I ran the recording commands in another terminal. Polished script for your $PATH at the end of this answer. What happened? Capturing FFcast helps the user interactively select a screen region and hands over the geometry to an external command, such as FFmpeg, for screen ...


58

From my own experience, if you want absolutely no loss in quality, --lossless is what you are looking for. Not sure about avconv but the command you typed looks identical to what I do with FFmpeg. In FFmpeg you can pass the parameter like this: ffmpeg -i INPUT.mkv -c:v libx265 -preset ultrafast -x265-params lossless=1 OUTPUT.mkv Most x265 switches (...


54

I have no .ts here but this works for .mp4. Use ffprobe (part of ffmpeg) to get the time in seconds, e.g: ffprobe -v quiet -of csv=p=0 -show_entries format=duration Inception.mp4 275.690000 so for all .mp4 files in the current dir: find . -maxdepth 1 -iname '*.mp4' -exec ffprobe -v quiet -of csv=p=0 -show_entries format=duration {} \; 149.233333 130....


44

ffmpeg \ -i input1.mp4 \ -i input2.mp4 \ -filter_complex '[0:v]pad=iw*2:ih[int];[int][1:v]overlay=W/2:0[vid]' \ -map [vid] \ -c:v libx264 \ -crf 23 \ -preset veryfast \ output.mp4 This essentially doubles the size of input1.mp4 by padding the right side with black the same size as the original video, and then places input2.mp4 over the top ...


38

take a look at this: https://askubuntu.com/questions/107726/how-to-create-animated-gif-images-of-a-screencast/107735#107735 ..... After the Desktop Recorder has saved the recording into an OGV video, MPlayer will be used to capture JPEG screenshots, saving them into the 'output' directory. On a terminal: mplayer -ao null <video file name> -vo jpeg:...


38

In my case, using ffmpeg directly did the trick and provided the best result: $ ffmpeg -f gif -i infile.gif outfile.mp4


33

Unless you're looking for a specific bitrate, I'd recommend the -crf option. This is the most commonly used for x264 encoding: http://slhck.info/articles/crf In short: a CRF of 23 would make "DVD" quality movie (~700MB-1GB) and lower CRF values would be higher quality (larger files).


30

You mentioned wanting to reduce filesize to fit more videos on a mobile device, which is my usecase as well. All the answers here are for reducing the compression quality but nobody has mentioned reducing video frame size. It's a lot quicker, from about 3 to 5 times quicker than recompressing in my experience. See the ffmpeg docs on scaling for more info. ...


28

ffmpeg -i video.mp4 -vn -acodec copy audio.aac Here’s a short explanation on what every parameter does: -i option specifies the input file. -vn option is used to skip the video part. -acodec copy will copy the audio stream keeping the original codec.


27

On a Debian-based system (but presumably, other distributions will also have mediainfo in their repositories): $ sudo apt-get install mediainfo $ mediainfo foo.mp4 That will spew out a lot of information. To get, for example, the length, resolution, codec and dimensions use: $ $ mediainfo "The Blues Brothers.mp4" | grep -E 'Duration|Format |Width|Height' ...


25

Pull out the image captures (these are 100 pixels tall, and keep aspect ratio), the rate (-r) is per-second (this yields one frame every ~5 minutes), this also adds time stamp to output image. ffmpeg -i MOVIE.mp4 -r 0.0033 -vf scale=-1:120 -vcodec png capture-%002d.png Then use ImageMagick to build your gallery image: montage -title "Movie Name\nSubtitle"...


25

To be honest, using the accepted answer resulted in a lot of dropped frames for me. However, using the hstack filter_complex produced perfectly fluid output: ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4


22

I tested most of the other proposed answers to this question. The test data conclusions are below. These are the proposed answers that I tested: (BR) Modify the bitrate, using: ffmpeg -i $infile -b $bitrate $newoutfile (CR) Vary the Constant Rate Factor, using: ffmpeg -i $infile -vcodec libx264 -crf 23 $outfile (SZ) Change the video screen-size (for ...


22

You can use exiftool. To install it run: sudo apt-get install libimage-exiftool-perl Then to get the metadata from mp4 file run: exiftool video_file.mp4 > medatata.txt The output saved in the file should be something like this: ExifTool Version Number : 9.60 File Name : video_file.mp4 Directory : . ...


22

This can be done with just two filters and the audio from both inputs will also be included. ffmpeg -i left.mp4 -i right.mp4 -filter_complex \ "[0:v][1:v]hstack=inputs=2[v]; \ [0:a][1:a]amerge[a]" \ -map "[v]" -map "[a]" -ac 2 output.mp4 hstack will place each video side-by-side. amerge will combine the audio from both inputs into a single, multichannel ...


21

Simple script with good quality Script: inputFile=$1 FPS=15 WIDTH=320 #Generate palette for better quality ffmpeg -i $inputFile -vf fps=$FPS,scale=$WIDTH:-1:flags=lanczos,palettegen tmp_palette.png #Generate gif using palette ffmpeg -i $inputFile -i tmp_palette.png -loop 0 -filter_complex "fps=$FPS,scale=$WIDTH:-1:flags=lanczos[x];[x][1:v]paletteuse" ...


21

ffmpeg -i input.file -vf "scale=(iw*sar)*max(720/(iw*sar)\,480/ih):ih*max(720/(iw*sar)\,480/ih), crop=720:480" -c:v mpeg4 -vtag XVID -q:v 4 -c:a libmp3lame -q:a 4 output.avi Replace "input.file" with the name of your input file.


18

Try with ffmpeg ffmpeg -i inputfile.avi -r 1 -f image2 image-%3d.jpeg You can read the documentation here


18

I'm no ffmpeg guru, but this should do the trick. First of all, you can get the size of input video like this: ffprobe -v error -of flat=s=_ -select_streams v:0 -show_entries stream=height,width in.mp4 With a reasonably recent ffmpeg, you can resize your video with these options: ffmpeg -i in.mp4 -vf scale=720:480 out.mp4 You can set the width or height ...


16

From https://stackoverflow.com/questions/2553448: Dump all video frames $ ffmpeg -i input.mkv -an -qscale 1 %06d.jpg Dump audio $ ffmpeg -i input.mkv -vn -ac 2 audio.wav Reverse audio $ sox -V audio.wav backwards.wav reverse Cat video frames in reverse order to FFmpeg as input $ cat $(ls -t *jpg) | ffmpeg -f image2pipe -vcodec mjpeg -r 25 -i - -i ...


15

If you are running Arch Linux I suppose you know how to install a rubygem. Take a look at https://rubygems.org/gems/airstream - a simple command-line-tool you can use to send remote and local image and video files to your apple-tv (tested with generation 3). If you need any help leave a comment on http://blog.lipautz.org/linux-and-apple-tv/.


14

If you have a low bandwidth I recommend compression of the video stream: ssh USER@REMOTEHOST ffmpeg -an -f video4linux2 -s 640x480 -i /dev/video0 -r 10 -b:v 500k -f matroska - | mplayer - -idle -demuxer matroska where -an turns off audio encoding. If you want audio, replace -an with -f alsa -ac 1 -i hw:3 (where hw:3 could also be hw:0 or hw:1, … See ...


14

Note that it seems that ffmpeg already performs some optimization when ran without options, so before trying to use settings you don't understand or deciding to explicitly lose information, give a try to a default conversion : ffmpeg -i input.mp4 output.mp4 In my case it reduced the bitrate of both the video and audio (you can check and compare the input ...


14

So, with Terminology (probably the very best thing that ever happened to a terminal emulator, by the way) at the time of this writing the following works: ytplay() ( init() if [ "${#1}" -gt 0 ] && i=$? du= f= then durl \! \" \# \$ \% \& \' \( \) \* \ \+ \, \/ \: \; \= \? \@ \[ \] : &...


13

For newer Debian & Ubuntu distros using nvidia, I had to do the following: First, edit /etc/default/grub. Change the following line: #GRUB_GFXMODE=640x480 to this: GRUB_GFXMODE=1280x800 GRUB_GFXPAYLOAD_LINUX=keep replacing 1280x800 with the desired resolution. Then: echo "echo FRAMEBUFFER=y" | sudo tee /etc/initramfs-tools/conf.d/splash sudo ...


11

I like using an easy to use unix command line bash script called VCS - Video Contact Sheet. Their official page: http://p.outlyer.net/vcs/ Its a lot easier to use even easier than a GUI ''It is a bash script meant to create video contact sheets (previews) aka thumbnails or previews of videos. Any video supported by mplayer and ffmpeg can be used by this ...


11

I suggest you autocreate /dev symlinks using udev, using unique properties (serial number? port number?) of your USB cameras. See this (should apply to Arch as well) tutorial about udev rules. Or maybe this tutorial is clearer. You can get the list of properties for your devices using: sudo udevadm info --query=all --name=/dev/video1 then sudo udevadm ...


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