High-level bindings to x264

Are there any high-level bindings to x264 available? If there aren't, do you know if there are there any high-level bindings to other video encoders?

1 Like

https://github.com/meh/rust-ffmpeg-sys

Depending on the build options you chose you can select which encoders and decoders you want available. x264 is a common one used with ffmpeg.

I've started working on high-level bindings for Cisco's OpenH264.

I haven't finished it, because the encoder produces plain NALs, and I haven't found an MP4 muxer that I could use.

Does anyone have Rust+h264 compatible muxer? :slight_smile:

1 Like

Update:

Okay, I finally got some spare time and wrote a high-level wrapper (x264 is already really high-level; there wasn't much to do except add some type-safety). Stuff I still need:

  • Somehow encoding audio.
  • An MPEG muxer.

Does anyone plan on making either of these happen? :smile:

MPEG (or any other non-codec-specific container) muxing is complicated enough task to grant a separate crate.
It's not just an annoying addition to the x264 usage that is expected to be implemented in the application crate itself.

Uhh yeah, of course? Sorry if that wasn't obvious.

Edit: And that applies to AAC encoding too - I don't think that would fit in x264 either.

Edit 2: That said, if I was, hypothetically, making a muxer, would it be a good idea to further split it into ISOM and MP4 crates?

They are so similar, I'm not sure it's worth splitting them into different crates.