High-level bindings to x264


#1

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?


#2

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.


#3

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:


#4

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:


#5

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.


#6

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?


#7

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