[HN Gopher] Show HN: Golang FFmpeg wrapper for simple Video I/O ...
___________________________________________________________________
Show HN: Golang FFmpeg wrapper for simple Video I/O and Webcam
Streaming
Author : crypt0lution
Score : 93 points
Date : 2022-04-16 15:51 UTC (7 hours ago)
(HTM) web link (github.com)
(TXT) w3m dump (github.com)
| _wp_ wrote:
| There's quite a bit of overhead in execing and piping data from
| ffmpeg. If performance is a concern, then using the C ffmpeg API
| is a better bet(see pyav for a good example of this) . Cool
| project though!
| oefrha wrote:
| README shows various structs with zero exported fields, and
| example code working with those unexported fields which don't
| make sense and won't work unless directly placed in this package.
| There are other problems like non-idiomatic snake_case naming. I
| guess this is OP's golang learning project? (To be clear, making
| mistakes in the beginning is completely fine.)
| crypt0lution wrote:
| That's correct. I like to use go for image processing and
| wanted to apply some of the algorithms I made to video but did
| not find a simple way to do so. I set out to make a video I/O
| module.
|
| I'm currently fixing all the non-idiomatic problems as well as
| adding some getters for each struct. Thanks for the feedback!
| Philip-J-Fry wrote:
| Yeah, you wouldn't be able to import this into a separate
| module and use it.
| DoctorOW wrote:
| A couple years ago I tried making a GIF generator in Go and a
| decent FFMPEG wrapper is something the Golang community needs.
| psanford wrote:
| Did you look at joy4[0] (or now joy5[1])? These wrappers expose
| a lot of ffmpeg functionality in a Go idiomatic style. You
| could easily write a GIF generator using them.
|
| [0]: https://github.com/nareix/joy4
|
| [1]: https://github.com/nareix/joy5
| DoctorOW wrote:
| No I didn't find it in my search for FFMPEG wrappers.
| sam0x17 wrote:
| Side note the image-rs crate in the Rust ecosystem has no
| external dependencies and can encode and decode animated gifs
| and a variety of other image formats, 100% rust
| https://github.com/image-rs/image. At my startup we use this in
| a lambda to process user-uploaded images, with great success.
| klodolph wrote:
| The image-rs crate has some serious design flaws and it has
| put me off trying to do any image processing in Rust at all.
| It may support many formats, but the basic image type is
| complete garbage. It's conceptually a 2D array of some
| specific pixel type--which means that any pixel value must
| carry with it colorspace information. I can't honestly
| recommend it to anyone.
|
| The issues I'm talking about are acknowledged as design flaws
| / mistakes if you start browsing the GitHub issues.
| aaaaaaaaaaab wrote:
| Sounds like typical Rust... They're well-meaning people in
| general, but they usually lack domain knowledge in the
| particular field they're trying to reinvent in Rust, so the
| end result often looks like a square-shaped wheel.
| kiernanmcgowan wrote:
| Awesome work! Projects like this are the gems that keep me
| excited about hobby software
| crypt0lution wrote:
| Thanks!
| staunch wrote:
| Nice! Looks like a good start. As some have noted in this thread
| there are some issues but nothing you can't fix.
|
| I'd recommend running `go vet -a` and `golangci-lint` on it to
| see some of the current issues: $ go vet -a
| $ docker run --rm "--volume=$(pwd):/app" --workdir=/app
| golangci/golangci-lint:latest golangci-lint run
| crypt0lution wrote:
| Done, thanks!
| unixpickle wrote:
| I also wrote a similar thing years ago...
|
| https://github.com/unixpickle/ffmpego
| nih0 wrote:
| correct me if im wrong but lowercase struct fields do not get
| exported right ?
| kmlx wrote:
| that's correct: https://go.dev/ref/spec#Exported_identifiers
| crypt0lution wrote:
| Made a push adding getters for relevant fields and making field
| names uppercase in the Options struct. Don't know how long it
| takes for pkg.dev to update, but the issue should be resolved
| now.
| [deleted]
| dmitshur wrote:
| Yeah. A good place to see just the exported API (and its
| documentation) is https://pkg.go.dev/github.com/AlexEidt/Vidio.
___________________________________________________________________
(page generated 2022-04-16 23:00 UTC)