On Mon, May 15, 2023 at 8:45 PM Joan Lluch <joan.ll...@icloud.com> wrote:
> Hi all, > > I recently made a feature request to one of the community members. I was > ready to pay a reasonable amount for it, but as it was a relatively quick > fix, he was kind enough to implement it on his own, and I made a donation > to the community instead. The feature I refer to is the “keep” parameter on > the mpdecimate filter, which was implemented by Thilo Borgmann. > > I am a retired software developer and although I embraced some really > complex projects in the past (including occasional code contributions to > the LLVM compiler project) I am not currently in the disposition to do it > anymore due to several reasons mostly related to age. > > So, I just joined this mailing list because I want to suggest a further > improvement to FFmpeg, or otherwise ask for workarounds. > > The problem I want to solve is to trim duplicated frames of a video clip, > in the same exact way that the mpdecimate does, but preserving the > corresponding audio sections of the preserved video frames in correct sync > on the output video. Or in other words, trim duplicated frames from a video > input, while also trimming the corresponding audio, in sync. > > To accomplish this, I attempted commands such as this one: > > ffmpeg -i $INPUT -vf "select='if( gt(scene,0.00001), (st(1,t);st(2,1)), > if(lte(t-ld(1),${KEEP}),st(2,1),st(2,0)) )', setpts=N/FRAME_RATE/TB" -af > "aselect='ld(2)', asetpts=N/SR/TB” $OUTPUT > > The trick here is (or would be) to use variable number 2 from the video > section to tell the audio section which frames to select (based on what the > video section is selecting). However, this won't work because ‘variable’ > number 2 from the first ‘select’ expression is out of scope on the > ‘aselect’ expression. Therefore it always evaluates to 0 in the ‘aselect’ > expression and the output goes with no audio. > > I think that having a way to specify ‘global’ variables, with valid scope > through the entire ffmpeg command, featuring 'store global' and 'load > global’ semantics, would be very helpful and would enormously increase the > use cases for this library. So it would be nice if somebody would look at > implementing it. I understand this is far from straightforward, but It > would be game changing if done in my opinion. > > As said, my current use case is trimming the audio stream in sync with the > video stream as described above. So alternatively, I would appreciate any > hints on how to accomplish this if this is /already/ possible. > That approach is prone to many errors and makes it useless if frame threading is added to libavfilter. Instead filter that takes both A and V stream and outputs A and V stream is more solid approach. > > Thanks > > John LLuch > > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > https://ffmpeg.org/mailman/listinfo/ffmpeg-devel > > To unsubscribe, visit link above, or email > ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe". > _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".