GNU / Linux and other Free as in Beer OS-es such FreeBSD and OpenBSD as well as other UNIX variants are definitely not the best platform to do Video edit, as the best one is obviosuly MAC OS-es for being a veteran in the field of graphic edit for a long time but over the time its capabilities are slowly but surely evolving.
However Linux users can also do the basic video edit stuff quite easily with ffmpeg and few other tools.
The general things one faces when snapshotting videos is the video might be turned around or in the wrong angle and you want it to rorate, or you have two three or more video files and you would like to merge the ones in one or you would like to Trim a period in the beginning of a Video or Trim some time you don't need out of the video at the end end, merge multiple MP3 files into single recording or including a background music to a video.
Doing such a things has a lot of possibilities with tools such as ffmpeg, imagemagick and mencoder and it is mostly useful if you're a console guy or you need to write a program that does video rorate or video merge in PHP / Perl / Python etc.
1. Rotating Videos in Linux
Rotate a Video in 90 degrees
Rotating a video assuming that you have the ffmpeg tool installed is as easy as:
# ffmpeg -i in-video-file.mov -vf "transpose=1" out-video-file.mov
Supported value arguments for ffmpeg ranspose option
0 = 90CounterCLockwise and Vertical Flip (default)
1 = 90Clockwise
2 = 90CounterClockwise
3 = 90Clockwise and Vertical Flip
2. Flip the video clip Vertically
# ffmpeg -i out.mov -vf "vflip" out2.avi
If you don't have ffmpeg, just install it with apt or yum:
On Debian
# apt install –yes fmpeg
On Redhat based distros
# yum install -y ffmpeg
ffmpeg is easily installed by bsd ports with the package manager for example on FreeBSD it is up to :
# pkg install ffmpeg
3. Merge (Concatenating) Videos with ffmpeg / mencoder / avimerge on Linux
Go to the directory containing all the videos you would like to merge and merge them with belowsimple one liner:
# ffmpeg -f concat -i \
<(for f in $PWD/*.avi;do echo "file '$f'";done) \
-c copy output.avi
To merge multiple set of lets say ( sequential ) Video files on Linux with mencoder and produce a single video file:
# mencoder -oac copy -ovc copy 1.AVI 2.AVI 3.AVI 4.AVI -o Single-common-out-video.avi
mencoder is available also by default on most distros if not install it with:
On Deb based Linuz:
# apt install mencoder –yes
On Fedora / CentOS … rpm based:
# yum install -y mencoder
The old and now obsolete transcode audio / video converter could also be used:
# avimerge -i file-input1.avi file-input2.avi -o output-file.avi
4. Scaling a video to a concrete resolution
It might happen to you that some video files could not be concatenated with other video file because its resolution is smaller (or different) than the recorded material,
to come around this you need to scale it.
# Scale video resolution to 1920×1080 pixels
# ffmpeg -i input-video.mp4 -vf scale=1920:1080 output-video.mp4
5. Trimming the beginning of a Video with ffmpeg
A recording will often contain parts in the beginning that you don't need and have to beto be removed from the video stream:
# Remove the first three seconds (Common scenario)
# ffmpeg -i input.mp4 -ss 3 -c copy output.mp4
6. Trimming the end of MP4 video with ffmpeg
The same is true for the end of a video materials often:
# Remove everything after 5 minutes and 32 seconds
#ffmpeg -i input.mp4 -t 00:05:32 -c copy output.mp4
Both, -ss and -t, can also be combined into one command.
7. Adding Background Music to a Video with ffmpeg
To add a concrete background music to a video stream, track the volume had to be lowered first:
7.1 Reduce the volume MP3 music file by 50% with ffmpeg
# ffmpeg -i input.mp3 -filter:a "volume=0.5" output.mp3
7.2 Combine multiple audio tracks into one single recording stream
# Concatenate multiple mp3 voice files into one
# ffmpeg -i "concat:input-song1.mp3|input-song2.mp3|input-song3.mp3" -c copy output-concatenated-single-song.mp3
One thing to consider is that once you want to add a background music stream to a video stream, both the video and the song has to be of the same length, otherwise attempts to merge the background audio track with fail
due to the length of the audio track not matching the length of the video.
This can be resolved by generating a silent audio track and concatenating it to the end of the audio track to make the video and music match:
# Generate 33 seconds of silence
# ffmpeg -f lavfi -i anullsrc=channel_layout=5.1:sample_rate=48000 -t 33 output.mp3
Finally, to merge the audio track into the video track:
# Merge video with existing audio track and another audio track
# ffmpeg -i input.mp4 -i input.mp3 -filter_complex "[0:a][1:a]amerge=inputs=2[a]" -map 0:v
Sum it up what learned
In this article was shown how to convert multiple Videos into a single one, scaling a video to a graphics resolution, trip a video at the beginning and at the end, add background movie tracks as a sound on Linux.
As you can imagine this stuff is quite useful and used by many, many websites online to do a different Video and sound editing included in a millions of Frontend / Backend webscritt Scripts around silently doing its stuff.
There is much more to be done with this tools, but for a starter of a video edit newbies it should on Linux and enthusiasts to manage own managed small private clouds, hope this stuff will be useful for a introductionary.
Cheers ! 🙂