I want to convert an elementary stream(.264) to container format(.mp4). Can someone please help me on this? How can I use ffmpeg to do this task? What are all the other methods that could accomplish the same task?

  • You can also do it via Handbrake gui in software center or via ppa. – Arup Roy Chowdhury Oct 26 '15 at 6:00

This is easy with ffmpeg:

ffmpeg -framerate 24 -i input.264 -c copy output.mp4
  • This simply stream copies (re-muxes) the video so there is no unnecessary re-encoding occurring; therefore the quality is preserved and the whole process is quick.

  • Frame rate is by default assumed to be 25. You can change this with the -framerate input option. Typical values are 30000/1001, 25 (default), 24000/1001, 24, or frame rate aliases such as ntsc, ntsc-film, or pal.

  • 1
    One should note that raw H.264 streams don't carry a rate information, so FFmpeg will display a warning and default to 25 frames/second. If you want a different frame rate you can use the -r switch, e. g. -r 30 for 30 frames/second. – David Foerster Apr 21 '17 at 12:58
  • 1
    @DavidFoerster Yes, good point, but the H.264 demuxer uses -framerate instead of -r. – llogan Apr 21 '17 at 18:04
  • You're correct. I should have read the entire paragraph in the FFmpeg documentation: “If in doubt use -framerate instead of the input option -r.” For some reason -framerate isn't documented in this manual here though. – David Foerster Apr 21 '17 at 22:45
  • 1
    That of ffmpeg(1) (Ctrl+F for -framrate). There's documentation for it in the avfoundation input device section but it doesn't look like it applies to other cases. – David Foerster Apr 22 '17 at 0:27
  • 1
    @MotsManish I recommend asking a new question. In the question you should provide the complete output of ffmpeg -i input where input is the file from the camera. – llogan Feb 7 '20 at 18:20

Try these commands :

sudo apt-get install x264
x264 raw_stream.264 -o playable_video.mp4

Run the MP4 files in VLC

  • 2
    This re-encodes for no reason. Better to just re-mux. – llogan Oct 26 '15 at 17:22

I wrote a simple bash script to convert all the files in a directory. Make sure the directory only contains the source files since the operation will run on all files in a given directory.

touch ./convert
chmod +x ./convert

edit convert

for f in *; do
    if [ -f "$f" ] && [ "$f" != "convert" ]; then
        ffmpeg -framerate 25 -i "$f" -c copy "$f.mp4"

Drop in a directory with only the source files, double click and choose run

This script assumes ffmpeg is set up on you system. Not sure which libs are needed, this is what I installed before running: sudo apt install ffmpeg x264 x265 h264enc mencoder mplayer

Only run it once

  • "this is what I installed before running: sudo apt install ffmpeg x264 x265 h264enc mencoder mplayer" Only ffmpeg is needed for this script, so the other packages are not necessary. – llogan Feb 16 at 17:48

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.