Live data from Hacker News

Drawvg Filter for FFmpeg

ayosec.github.io

11–20 of 31 posts

Re: Drawvg Filter for FFmpeg

#13
post #2

One of the strangest discoveries of my life was that vector graphics is a solved problem, and the solution is turtle graphics that I was taught in primary school.

I was trying to do a bit of generative art for a pixel display in my window, and feeling creatively stuck, then realized I wanted turtle graphics. Implemented that and I was unlocked.

Re: Drawvg Filter for FFmpeg

#15
post #2

One of the strangest discoveries of my life was that vector graphics is a solved problem, and the solution is turtle graphics that I was taught in primary school.

Well turtle graphics is not implemented in drawvg. But it should be easy to implement it.

SVG path syntax [1] mentioned as being an inspiration in the article is very similar to Turtle graphics (move, lineto, etc.)

[1] https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/E...

Re: Drawvg Filter for FFmpeg

#16
The cropdetect example made me wonder if they're thinking about including support for yolo or similar models. They're including Whisper for text to speech already, I think yolo would enable things like automatic face censoring and general frame content aware editing. Or maybe Segment anything, and have more fine grained masks available.

On the other hand, when I compared the binaries (ffmpeg, ffprobe, ffplay) I downloaded the other day with the ones I had installed since around September, they where almost 100 MB larger. I don't remember the exact size of the old ones but the new ones are 640 MB, the old ones well under 600 MB. The only difference in included libraries was Cairo and the JPEG-XS lib. So while I think a bunch of new ML models would be really cool, maybe they don't want to go down that route. But some kind of pluggable system with accelerated ML models would be helpful I think.

Re: Drawvg Filter for FFmpeg

#17
post #8

drawvg is very useful. Before drawvg, I was always fine using the stable FFmpeg releases such as 8.0.1 but when I saw drawvg added to the master branch[1], I didn't want to wait for the next stable release and immediately re-built ffmpeg from master to start using it. My main use case is modifying youtube videos of tech tutorials where the speaker overlays a video of themselves in a corner of the video. drawvg is use…

Couldn't you use a video player like mpv to achieve a similar effect? Not sure if you can cover a specific part of the image but you sure can crop the video however you want and bind the commands/script to a key.

Re: Drawvg Filter for FFmpeg

#18
post #10
post #7

Earlier quoted context omitted.

Maybe it helps to view ffmpeg as a DSL and the ugliness is caused by the CLI constraints / conventions. For what it's worth, LLMs are a great tool for both composing and understanding ffmpeg commands. And if you want something more verbose / easier to read you can use something like https://github.com/kkroening/ffmpeg-python (with LLMs) as well

It looks like that project is dead, some googling turned up this one which seems active and popular https://github.com/pyav-org/pyav

They are not comparable, ffmpeg-python just abstracts away the CLI, pyav is a low level binding of the ffmpeg libs.

It may seem "dead" but ultimately it just helps you build CLI commands in a more sane way, the CLI interface to ffmpeg has been consistent for a long time. Only thing that may change is individual filters which you can just give raw to ffmpeg-python.

I remember when I was heavily using it last year I found a fork that seemingly had more sane typing or something but since LLMs last year didn't know about the newer lib but could write decent ffmpeg-python code I stuck with it and it did the job.

Re: Drawvg Filter for FFmpeg

#19
post #17
post #8

drawvg is very useful. Before drawvg, I was always fine using the stable FFmpeg releases such as 8.0.1 but when I saw drawvg added to the master branch[1], I didn't want to wait for the next stable release and immediately re-built ffmpeg from master to start using it. My main use case is modifying youtube videos of tech tutorials where the speaker overlays a video of themselves in a corner of the video. drawvg is use…

Couldn't you use a video player like mpv to achieve a similar effect? Not sure if you can cover a specific part of the image but you sure can crop the video however you want and bind the commands/script to a key.

>mpv to achieve a similar effect? Not sure if you can cover a specific part of the image but you sure can crop the video

mpv doesn't run on iPad so it's better for my situation to just burn the blackout into a new video. I actually do a lot more stuff than drawvg (also rescale, pts, framerate,etc) in filter_complex but left the rest of it out for the HN comment so the example is more readable.

I suppose it might be possible to use mpv with a custom shader mask glsl code to blackout circular areas of the screen.

>you sure can crop the video

Cropping the video is straightforward with no information loss when the geometry of presentation and the speaker is laid out like these: https://www.youtube.com/@MeetingCPP/videos

But cropping the following video by shrinking the boundaries of the rectangle until the circle overlay is not visible would result in too much of the text being cut off: https://www.youtube.com/watch?v=nUxuCoqJzlA

Scrub that video timeline to see the information that would be chopped off. For that, it's better to cover up only the circle overlay with a blacked out disc.

Re: Drawvg Filter for FFmpeg

#20
post #15

Earlier quoted context omitted.

Well turtle graphics is not implemented in drawvg. But it should be easy to implement it.

SVG path syntax [1] mentioned as being an inspiration in the article is very similar to Turtle graphics (move, lineto, etc.) [1] https://developer.mozilla.org/en-US/docs/Web/SVG/Reference/E...

Very many vector graphics standards use the idea of a current position. A distinguishing feature of turtle graphics is to have a current direction as well.

It's a shame SVG doesn't. Many shapes can be specified much more concisely.

Post reply on HN