[FFmpeg-user] Cut part of a video, crop it and blackout parts of it

Cecil Westerhof Cecil at decebal.nl
Mon Apr 5 12:31:57 EEST 2021


Carl Eugen Hoyos <ceffmpeg at gmail.com> writes:

>> Am 05.04.2021 um 01:48 schrieb Cecil Westerhof via ffmpeg-user <ffmpeg-user at ffmpeg.org>:
>> 
>> I have to cut out a part of a video, crop it and blackout two parts.
>> I do this with:
>>    ffmpeg -y                                      \
>>           -ss 00:19:49                            \
>>           -i  2021-03-25ToastmastersClubAvond.mp4 \
>>           -to 442                                 \
>>           -vf "
>>                crop = 1440:1080:240:0
>>                ,
>>                drawbox=enable='between(t, 0, 2)'     :
>>                   color     = black                  :
>>                   w         = in_w                   :
>>                   h         = in_h                   :
>>                   thickness = fill
>>                ,
>>                drawbox=enable='between(t, 339, 342)' :
>>                   color     = black                  :
>>                   w         = in_w                   :
>>                   h         = in_h                   :
>>                   thickness = fill
>>           "                                       \
>>           -acodec copy                            \
>>           -vcodec libx264                         \
>>           -crf    23                              \
>>           speechClean2.mp4
>> 
>> The reason I do -to in the output is that in this way the metadata
>> concerning the video length is less out of whack.
>> 
>> I was wondering if this is a good way, or that it could be done
>> better?
>
>> Also, beside the timestamps the parameters for drawbox are the same.
>> Is there a way that I do not have to repeat them?
>
> I suspect there is an „Or“ parameter for „enable“.
>
>> 
>> I started the crf with 16, then 20 and lastly 23.
>> 
>> The input file has:
>>    Stream #0:1(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
>> 1920x1080, 2070 kb/s, 25 fps, 25 tbr, 30k tbn, 60k tbc (default)
>> 
>> With crf 16 I get:
>>    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
>> 1440x1080, 5541 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
>> 
>> With crf 20 I get:
>>    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
>> 1440x1080, 3538 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
>> 
>> And with crf 23 I get:
>>    Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p,
>> 1440x1080, 2444 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
>> 
>> So to me it seems that the crf value is still to high.
>
> You mean still too low?

Yes, bitrate is to high, so the crf value is to low. Silly me. ;-)


>> Is there a way
>> to use the kb/s to calculate the crf value to use?
>
> There is a fundamental misunderstanding:
> You decide how much quality you want to preserve, x264 decides how much
> bitrate is needed to reach that quality. (This is true for the general
> case where you want to control the output quality and are therefore
> using the crf option.)
> If you really have bitrate constraints, use two-pass encoding
> instead of the crf option.

I do not really have a bitrate constraint, but I would think a higher
bitrate as the input bitrate would be a waste. Because the crop
removes about a quarter I would think that a bitrate higher as 1500
would be a waste.


> I suspect the reason for the high bitrate of the output file is the low
> quality of the input file but this is not really relevant, just a
> (possible) explanation. One (unlikely) alternative is that your original
> h264 encoder is much better than x264.

That is what I mean: if the quality of the input is low, then there is
no use for going for a high(er) quality for the output.

-- 
Cecil Westerhof
Senior Software Engineer
LinkedIn: http://www.linkedin.com/in/cecilwesterhof


More information about the ffmpeg-user mailing list