[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