[FFmpeg-trac] #8126(avcodec:new): When I play a mkv(video:avc/audio:flac) not from the begining, it blurred.

FFmpeg trac at avcodec.org
Mon Sep 9 15:47:11 EEST 2019


#8126: When I play a mkv(video:avc/audio:flac) not from the begining,it blurred.
-------------------------------------+-----------------------------------
             Reporter:  WillFarmer   |                    Owner:
                 Type:  enhancement  |                   Status:  new
             Priority:  wish         |                Component:  avcodec
              Version:  git-master   |               Resolution:
             Keywords:  h264, x264   |               Blocked By:
             Blocking:               |  Reproduced by developer:  1
Analyzed by developer:  1            |
-------------------------------------+-----------------------------------
Changes (by mkver):

 * reproduced:  0 => 1
 * component:  undetermined => avcodec
 * priority:  normal => wish
 * keywords:   => h264, x264
 * version:  unspecified => git-master
 * analyzed:  0 => 1
 * type:  defect => enhancement


Comment:

 This file has been created by an old version of x264 (and apparently even
 a modded version: x264 core 148 r2744+45 a477af1 7mod [10-bit at all X86_64])
 and such old versions could produce spec-incompliant files when 4:4:4 mode
 was used and 8x8dct was set to 1. For some time, FFmpeg's decoder was
 spec-incompliant, too, and essentially covered up for x264. But this has
 been changed and spec-compliant decoding is now the default. But if an SEI
 is encountered that indicates that this file has been produced by an old
 and buggy x264, then the old spec-incompliant decoding mode is used. Your
 file contains such an SEI in the very first frame (which contains the
 aforementioned x264 version and the encoding parameters used), so if you
 start decoding from the beginning, everything seems fine. But if you start
 decoding somewhere else, the file won't be properly decodable, unless you
 explicitly set the x264 build using the x264_build option.
 At the moment, there is only one thing you can do: Encode the video
 (either from the beginning or with the x264_build option) again with a
 recent version of x264. If you have the source of said file, this is
 viable. It would also make sense if your video were losslessly coded, but
 it isn't. Losslessly reencoding the video as is will unfortunately make it
 much bigger and reencoding the video in a lossy way is lossy, of course.
 But there is one thing that could be implemented for a scenario as this:
 Add an option to (say) h264_metadata to insert the x264 SEI into every
 keyframe. I have changed this topic to a request to implement this.

--
Ticket URL: <https://trac.ffmpeg.org/ticket/8126#comment:9>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list