--- title: simple way to make h.264 mp4 web and iOS/mobile playable video mp4 files for linux and macosx using ffmpeg url: 2013-02-simple-way-to-make-h-264-mp4-web-and-ios-mobile-playable-video-mp4-files-for-linux-and-macosx-using-ffmpeg author: tracey pooh type: post date: 2013-02-10 categories: - linux - video tags: - coding - ffmpeg - geek - h.264 - Internet Archive - video - x264 featured: traceymonet.jpg comment: --- Greetings video geeks! 😎
At my job, I've updated the process and way we create our .mp4 files that are shown on video pages on archive.org It's a much cleaner/clearer process, namely: * I opted to **ditch ffpreset files in favor of command-line argument** 100% equivalents. It seems a bit easier for someone reading the task log of their item, trying to see what we did. * I **no longer need qt-faststart** step and dropped it. I use the cmd-line modern ffmpeg `-movflags faststart` Entire processing is now done 100% with ffmpeg, in the standard "2-pass" mode As before, this output .mp4: * **plays in** modern html5 video tag compatible **browsers** * **plays in flash** plugin within browsers * works on all **iOS devices** * makes sure the "moov atom" is at the front of the file, so browsers can **playback before downloading** the entire file, etc. Here is an example (you would tailor especially the `scale=640:480` depending on source aspect ratio and desired output size; change or drop altogether the `-r 20` option (the source was 20 fps, so we make the dest 20 fps); tailor the bitrate args to taste): ```bash ffmpeg -y -i stairs.avi -vcodec libx264 -pix\_fmt yuv420p -vf yadif,scale=640:480 \ -profile:v baseline \ -x264opts cabac=0:bframes=0:ref=1:weightp=0:level=30:bitrate=700:vbv\_maxrate=768:vbv_bufsize=1400 \ -movflags faststart -ac 2 -b:a 128k -ar 44100 -r 20 -pass 1 -acodec aac \ -strict experimental stairs.mp4; ffmpeg -y -i stairs.avi -vcodec libx264 -pix\_fmt yuv420p -vf yadif,scale=640:480 \ -profile:v baseline \ -x264opts cabac=0:bframes=0:ref=1:weightp=0:level=30:bitrate=700:vbv\_maxrate=768:vbv_bufsize=1400 \ -movflags faststart -ac 2 -b:a 128k -ar 44100 -r 20 -pass 2 -acodec aac \ -strict experimental \ -metadata title='Stairs where i work - https://archive.org/details/stairs' \ -metadata year='2004' \ -metadata comment='license:http://creativecommons.org/licenses/publicdomain/' \ stairs.mp4 ``` Happy hacking and creating! PS: here is the [way we compile ffmpeg](https://github.com/traceypooh/deriver-archive/blob/master/ffmpeg-README.sh) (we use ubuntu linux at work, but this script used to have minor mods for macosx, too).