How to cut parts from a video file without losing visual quality?

I have a few large video files that only contain a few interesting scenes I want to keep. I’m looking for a way to cut these scenes out of the original video, but without quality loss.

I have tried following the FFmpeg command
ffmpeg -i inputfile -ss 05:05.153 -to 06:06.264 outputfile

But, it transcodes the video, is there any way to avoid transcoding?

1 Like

If you don’t specify codec info in your FFmpeg command then it will transcode the video using H.264 with the Constant Rate Factor rate control method keeping visual quality the same but if you don’t want to transcode your video then you will have -c copy option with your FFmpeg command which will tell FFmpeg to just copy the encoded video stream to the output.

Here is a detailed tutorial on how to do that:

I assume that you have downloaded the FFmpeg on your system and if not then please follow the tutorials given below:

Let us begin!

  1. Use Cutting Scenes in FFmpeg

After installing FFmpeg, you can start removing particular scenes from your video files without sacrificing quality. The FFmpeg command that follows can be used to accomplish this:

ffmpeg -i inputfile -ss 05:05.153 -to 06:06.264 -c copy outputfile

In the above command,

  • ffmpeg: This is the command used to access FFmpeg.
  • -i inputfile: Here, you specify the input video file from which you intend to extract scenes. Replace “inputfile” with the actual name of your video file.
  • -ss 05:05.153: This option indicates the starting point of the scene you wish to extract. Be sure to adjust this timestamp to precisely match the moment your desired scene begins in the video.
  • -to 06:06.264: The endpoint of the scene you wish to extract is indicated by this option. To make sure that this timestamp ends exactly when you want it to, adjust it.
  • -c copy: With no re-encoding, it tells FFmpeg to copy the audio and video streams straight from the input file to the output file. The original audio and video quality is guaranteed to be maintained throughout this process.

Following the execution of this command, FFmpeg will produce an output file (designated by outputfile) that includes the selected scene without sacrificing the quality of the original video or audio.

It is important to note that the video and audio codecs in your input file must be compatible with the output container format for this method to work. Should they not be compatible, FFmpeg may have to transcode the video, which may result in a drop in quality. To guarantee quality preservation, always confirm that your selected output format and source video are compatible.

Following these instructions and using the -c copy option will allow you to trim video files without sacrificing quality.

Let me know if you have more queries related to this.

Thank you

1 Like

Hey James!

If the copy doesn’t restore your audio streams, try adding -map 0:a -map 0:v.

Hope this may help you!

Moreover, When asking to copy the stream over, you cannot use audio, video, or multimedia filters because they require decoding and manipulating the audio and video frames. As a result, their output needs to be recorded. However, bitstream filters can be used with a copy since they only change the related metadata that is saved in the stream, not the primary payload.

To make sure that every video clip published on my website is encoded as mp4 h264, I intend to utilize ffmpeg.

I want to reduce processing overhead by just processing files that aren’t already mp4 h264, as opposed to automatically processing every file. Is there a simple method to accomplish this using ffmpeg or any other command-line tool?

As far as I know, Without any further parameters, ffmpeg will accept an input file and provide much more about the video source, such as:

ffmpeg -i myfile.avi

Another alternative would be to use mplayer's -identify option, which might be a little bit simpler to understand. A wrapper script called midentify provides even better results. Take this instance.