Fastest way to add -movflags +faststart to an MP4 using FFMPEG, leaving everything else as-is
Asked Answered
M

1

25

I want to add -movflags +faststart to an mp4 file. Basically that is all I want to do, nothing else should be changed. I am using ffmpeg.

What's the fastest way to do this? Do I have to re-encode the whole video? Or is there a better/easier way?

Mayce answered 18/6, 2018 at 17:14 Comment(0)
P
40

As simple as:

ffmpeg -i in.mp4 -c copy -map 0 -movflags +faststart out.mp4

Or if you can compile FFmpeg from source, make the tool qt-faststart in the tools/ directory and run it:

qt-faststart in.mp4 out.mp4

You can also use mp4box, which lets you move the MOOV atom to the start via this command:

mp4box -inter 0 in.mp4 -out out.mp4

Or if you want to fully optimize for streaming by also interleaving the audio/video data so that the file can be easily streamed in realtime:

mp4box -inter 500 in.mp4 -out out.mp4
Parkland answered 18/6, 2018 at 17:30 Comment(8)
You may want to add -map_metadata 0 too in order to preserve any metadataThomson
Is there any way to "fully optimize" with ffmpeg instead of mp4box? I would be doing a transcode with ffmpeg, so it would be nice not to run a separate command.Lobel
@Parkland I'm sorry, I meant is there also a way to interleave with ffmpeg like with mp4box. Or, are you saying faststart will interleave the results? Not finding anything on GoogleLobel
The MP4 muxer in ffmpeg does not support custom interleaving delta. faststart only relates to where the metadata is placed.Parkland
@Parkland just seeing your reply now. Thanks a lot.Lobel
The ffmpeg command above (with either "+faststart" or just "faststart") gives me "moov atom not found" (the same error I'm trying to fix) I'm running on an .m4v file.Transfiguration
Is there a way to not do it under a new file and add it to the same header of the main file without reading the entire data of the file, so that we can reach the goal faster?Meunier
@Parkland Do you know what is the default A/V interleave duration/logic in ffmpeg when writing MP4? This appears to be incredibly difficult to find any information about. I was using MP4Box to re-interleave but now suspect I don't need to, as probably ffmpeg interleaves by default, but when I try to find out roughly the size chunks it uses... 100s of irrelevant results :(Fragrance

© 2022 - 2024 — McMap. All rights reserved.