[FFmpeg-user] How to reassemble raw packet data back into a new MP4 file?
Ferdi Scholten
ferdi at sttc-nlp.nl
Sun Sep 22 12:33:13 EEST 2024
Hi, Vincent,
> Thank you for your suggestion.
>
> Let me explain the real case: I have many MP4 files which lost some data in
> the tail,
> which make them not playable. I analyze these files manually and find the
> ftyp and
> moov boxes and their child boxes are all OK. But part of the data in mdat
> box are
> lost, which corresponding to some packet data only, which is <= 5% of the
> total
> packets.
>
> I try to use the following command:
>
> ffmpeg -i old.mp4 -c copy new.mp4
>
> but always get the following result:
>
> ffmpeg version 7.0.2 Copyright (c) 2000-2024 the FFmpeg developers
> built with gcc 14.1.0 (Rev3, Built by MSYS2 project)
> configuration: --enable-shared
> libavutil 59. 8.100 / 59. 8.100
> libavcodec 61. 3.100 / 61. 3.100
> libavformat 61. 1.100 / 61. 1.100
> libavdevice 61. 1.100 / 61. 1.100
> libavfilter 10. 1.100 / 10. 1.100
> libswscale 8. 1.100 / 8. 1.100
> libswresample 5. 1.100 / 5. 1.100
> [mov,mp4,m4a,3gp,3g2,mj2 @ 00158b00] stream 1, contradictionary STSC and
> STCO
> [mov,mp4,m4a,3gp,3g2,mj2 @ 00158b00] error reading header
> [in#0 @ 00158840] Error opening input: Invalid data found when processing
> input
> Error opening input file old.mp4.
> Error opening input files: Invalid data found when processing input
>
> So I wrote a Test app to parse all the data in the old.mp4 and read all the
> boxes(except for mdat box), and
> get all the existing packets. Now I want to reassemble them back into a
> valid MP4 file.
> _______________________________________
Try using ffmpeg with format options, see manual:
https://ffmpeg.org/ffmpeg-all.html#toc-Format-Options
these could allow you to a certain extend to repair corrupt files
for example
ffmpeg -fflags genpts -i in.mp4 -c copy out.mp4
This will create out.mp4 with recalculated pts without re encoding
audio/video
More information about the ffmpeg-user
mailing list