Recover FLV video with "packet mismatch error"

Recover FLV video with "packet mismatch error"

I have a Flash video (flv) that I like to convert to MP4, but it seems (partial) corrupt. What it is best way to recover a Flash video (FLV)?

This particular video is a 3-hour long stream recorded in 2011, and I can play it fine (video+audio) in an old program called SWF & FLV Player on my Mac. Given that skipping to another part in the video is slow, I suspect there are few or no keyframes/markers in the stream.

Sadly, it is corrupt: VLC can't play it, Handbrake says "No Valid Source Found" and if I try to convert it with ffmpeg, I get the following error in stdout:

[flv @ 0x7fa9fb601440] Packet mismatch 0 43040 43040
Input #0, flv, from 'IMO2011_opening_theatre.flv':
  Metadata:
    metadatacreator : Yet Another Metadata Injector for FLV - Version 1.6
    hasKeyframes    : true
    hasVideo        : true
    hasAudio        : true
    hasMetadata     : true
    canSeekToEnd    : false
    datasize        : 1105133753
    videosize       : 1034966685
    audiosize       : 67509960
    lasttimestamp   : 10497
    lastkeyframetimestamp: 10496
    lastkeyframelocation: 1105072805
  Duration: 02:54:57.28, start: 0.000000, bitrate: 839 kb/s
Output #0, mp4, to 'IMO2011_opening_theatre.mp4':
Output file #0 does not contain any stream

If there is way to convert this file to MP4 (or any format) in any way?

答案1

My work-around solution was to use a screen recorder, OBS. Sadly, the mentioned viewer was too old (32-bit only) so it only run on an older Mac, which led to loss of quality. Thankfully, I found two other programs to play FLV on Windows, including FLV Media Player. That with OBS gave a converted video.

The downside of this approach is that it still leads to loss of quality, so I consider it a work-around at best.

相关内容