mencoder Linux CLI video editing how to encode video file into xvid and split by time into multiple parts

Mencoder is great, you can throw anything at it, including video files from your camera and have it encode into xvid or almost any other format.

In my case I took 640x480 video from my Canon and reduced the size by 1/3 with the options below (there are many other options that you can read about in the manual but I like to keep it simple).

Mencoder Encode

mencoder -ovc xvid -oac mp3lame -xvidencopts fixed_quant=4 -o

Mencoder Split

Split the first 9 minutes of video into a part

mencoder -endpos 00:09:00 -ovc copy -oac copy inputfile.xvid -o outputfile.xvid

*We're kind of cheating because without specifying "-ss" (the start position) it defaults to starting at the beginning which would be the same as "-ss 00:00:00"

Note that we don't need the -ss (start time) flag because we are taking the first 9 minutes of the video. It gets a little tricky (and this is not well documented or known by some) when you want to take a portion of videon in the middle (meaning not the first x minutes and not the last x minutes).

Split 9 minutes of video starting from the 9 minute point

This is where I consider mencoder to be unintuitive, here is the code I was using and lots would ask "why is mencoder ignoring the endpos"? It actually isn't, what you thought you were telling mencoder is different than what is actually happening.

Take this code for example:

mencoder -ss 00:09:00 -endpos 00:18:00 -ovc copy -oac copy inputfile.xvid -o outputfile.xvid

At first I assumed this means "start at 9 minutes" and "end at 18 minutes". Actually it means "start at 9 minutes" and "end at 27 minutes". In other words "endpos" doesn't work as I believe it should and here's why from the mencoder manual:

-endpos <[[hh:]mm:]ss[.ms]|size[b|kb|mb]> (also see -ss and -sb)
Stop at given time or byte position.
NOTE: Byte position is enabled only for MEncoder and will not be accurate, as it can only stop at a
frame boundary. When used in conjunction with -ss option, -endpos time will shift forward by seconds
specified with -ss.

So what the manual means is that endpos is relative to ss. That means if you say you "start at 5 minutes" and "end at 9 minutes", you're actually saying 5 minutes + 9 minutes = end at 14 minutes. So you can see that mencoder isn't ignoring you, it just takes the start position and adds the end position value and that is what ultimately becomes the endpos. I don't agree with that, mencoder is a great tool but I think this stumps a lot of people because it doesn't make sense.

Split 9 minutes of video from the end

mencoder -ss 00:18:00 -ovc copy -oac copy inputfile.xvid -o outputfile.xvid

*This is cheating again by just specifying the start, it will take everything from the start point until the video finishes.

In essence you're specifying "-endpos 00:27:00" assuming the movie ends at 27 minutes, but you get the idea.


mencoder, linux, cli, editing, encode, xvid, multiple, partsmencoder, format, canon, reduced, manual, filename, avi, ovc, oac, mp, xvidencopts, fixed_quant, output, endpos, inputfile, outputfile, specifying, quot, ss, defaults, tricky, documented, portion, videon, unintuitive, ignoring, isn, doesn, hh, kb, mb, sb, byte, enabled, accurate, boundary, conjunction, specified, relative, adds, ultimately, stumps, finishes, essence,

Latest Articles

  • How To Install OpenProject on Centos 7 Step-by-Step Guide
  • Ubuntu Debian Linux Cannot Install Wine Solution - wine1.6 : Depends: wine1.6-i386 (= 1:1.6.2-0ubuntu14.2) but it is not installable wine1.4 : Depends: wine1.6 but it is not going to be installed
  • How To Install python 3.4 3.5 and up on Linux with wine - Working Solution
  • using Xvfb on virtual remote ssh server to have X graphical programs work
  • ssh Received disconnect from port 22:2: Too many authentication failures
  • named bind errors - DNSKEY: unable to find a DNSKEY which verifies the DNSKEY RRset and also matches a trusted key for '.'
  • OpenVZ vs LXC DIR mode poor security in LXC
  • httpd: Syntax error on line 221 of /etc/httpd/conf/httpd.conf: Syntax error on line 6 of /etc/httpd/conf.d/php.conf: Cannot load modules/ into server: /lib64/ symbol __h_errno, version GLIBC_PRIVATE not defined in file libc.s
  • Radeon R3 GPU on Debian Crashing
  • MySQL 5.7 on Debian and Ubuntu - How To Reset Root Password
  • SSH and sshfs timeout settings keepalive
  • Linux How To Add User To Additional Group
  • Howto Set Static IP on boot in initramfs for dropbear or other purposes NFS, Linux, Debian, Ubuntu, CentOS
  • Convert and install to LUKS Encrypted Drive Ubuntu 18.04 19.10 Linux Mint and Debian Based Linux
  • Debian and Netplan
  • CentOS 8 how to restart the network!
  • CentOS 8 how to convert to a bootable mdadm RAID software array
  • ADATA USB Thumb Drive Issues
  • KMODE EXCEPTION NOT HANDLED - QEMU/KVM Won't Boot Windows 2016 or 10 Image or Physical Machine
  • Linux Mint / Ubuntu / Debian Mate Disable Guest Session and Hide Usernames on Lightdm Login screen GUI