[FFmpeg-user] How to filter time dependent

Gyan Doshi ffmpeg at gyani.pro
Fri Apr 23 09:31:49 EEST 2021



On 2021-04-23 11:37, Michael Koch wrote:
> Am 22.04.2021 um 23:27 schrieb Ulf Zibis:
>>
>> Am 22.04.21 um 13:01 schrieb Michael Koch:
>>> Am 22.04.2021 um 12:50 schrieb Ulf Zibis:
>>>> Hi,
>>>>
>>>> I want to filter a video from pts 0 to 1999 with filter A, then 
>>>> from 2000 to 2199 with filter B, from 2200 with filter A and 
>>>> finally the whole stream with filter C.
>>>>
>>>> Can one please give me an example for a working command line?
>>>>
>>>
>>> untested:
>>> ffmpeg -i input.mp4 -lavfi 
>>> split[a][b];[a]filter_A[c];[b]filter_B[d];[c][d]select=bitor(between(t,0,1999),between(t,2200,10000)),filter_C 
>>> out.mp4
>>
>> I found out, that the 'between(t,a,b)' should be surrounded by colons.
>>
>> But anyway the reality is more complex. I have to use 3 different 
>> filters. So I tried:
>> ffmpeg -i input.mp4 -filter_complex 
>> "split[a][b][c];[a]filter_A[d];[b]filter_B[e];[c]filter_C[f];[d]select='between(t,0,1999)';[e]select='between(t,2000,2199)';[f]select='between(t,2200,10000)'",filter_D 
>> out.mp4
>>
>> With this I got a weird file with 3 video streams:
>
> I think in this example it's not correct how you are using the select 
> filter.
> The select filter needs two or more inputs, and it selects one of them 
> and passes this stream to the output.

You may be thinking of the interleave filter. select uses exactly one input.

On this topic generally, see https://superuser.com/q/1632998/

Regards,
Gyan


More information about the ffmpeg-user mailing list