13
votes

I have a program generating a bunch of raw H264 frames and would like to place that into a mp4 container for streaming.

Anyone know how to do that?

I was thinking I'd use ffmpeg however, this needs to be used commercially and it seems like ffmpeg can only do this through it's x264 library... which uses a GPL license.

Thank you!

2
libx264 does video encoding, and MP4 is produced by FFmpeg's MP4 multiplexer, which is available under LGPL. You don't need x264 if you already have H.264 encoded video feed.Roman R.
(If you use it internally and don't distribute it, you can use libx264, but, like Roman said, this may not be needed. Also distributing ffmpeg.exe "along with" your closed source app may be ok betterlogic.com/roger/2013/06/…). Anyway does ffmpeg -f h264 input_filename -c copy output.mp4 work?rogerdpack

2 Answers

2
votes

libmp4v2 is under the MPL and can be used as part of a larger work commercially. It is much lighter than libavformat also.

26
votes

If you're looking for the FFMPEG command line to do that, then try the following:

ffmpeg -i "source.h264" -c:v copy -f mp4 "myOutputFile.mp4"

If you have a separate audio file you can add it too:

ffmpeg -i "source.h264" -i "myAudio" -c:v copy -c:a copy -f mp4 "myOutputFile.mp4"

If your audio needs to be encoded as well (for instance codec AAC-LC, bitrate 256kbps):

ffmpeg -i "source.h264" -i "myAudio" -c:v copy -c:a aac -b:a 256k -strict -2 -f mp4 "myOutputFile.mp4"