#11390: av1_nvenc output frames sometimes cannot be decoded
------------------------------------+-----------------------------------
             Reporter:  nikomo      |                    Owner:  (none)
                 Type:  defect      |                   Status:  closed
             Priority:  normal      |                Component:  ffmpeg
              Version:  git-master  |               Resolution:  invalid
             Keywords:  av1_nvenc   |               Blocked By:
             Blocking:              |  Reproduced by developer:  0
Analyzed by developer:  0           |
------------------------------------+-----------------------------------
Comment (by cheppizzadrakon):

 Hello, I have reported the same issue in
 https://trac.ffmpeg.org/ticket/10909
 This is still an issue on the latest release (ffmpeg version 2025-08-14
 -git-cdbb5f1b93-full_build-www.gyan.dev)

 Instead of relying on external players, I have used ffmpeg directly to
 test the decoding

 {{{
 ffmpeg.exe -y -hwaccel cuda -i debug_av1_nvenc.mkv -f null -
 }}}

 This produces the same error as seen by you in mpv

 {{{
 [av1 @ 0000027989a5a240] trailing_zero_bit out of range: 1, but must be in
 [0,0].
 [av1 @ 0000027989a5a240] Failed to read unit 1 (type 5).
 [av1 @ 0000027989a5a240] Failed to read packet.
 [vist#0:0/av1 @ 0000027989a802c0] [dec:av1 @ 0000027989a7a580] Error
 submitting packet to decoder: Invalid data found when processing input
 [av1 @ 0000027989a5a240] trailing_one_bit out of range: 0, but must be in
 [1,1].
 [av1 @ 0000027989a5a240] Failed to read unit 0 (type 5).
 [av1 @ 0000027989a5a240] Failed to read packet.
 }}}
 Which ultimately fails

 {{{
 [vist#0:0/av1 @ 0000027989a802c0] [dec:av1 @ 0000027989a7a580] Decode
 error rate 1 exceeds maximum 0.666667
 [vist#0:0/av1 @ 0000027989a802c0] [dec:av1 @ 0000027989a7a580] Task
 finished with error code: -1145393733 (Error number -1145393733 occurred)
 [vist#0:0/av1 @ 0000027989a802c0] [dec:av1 @ 0000027989a7a580] Terminating
 thread with return code -1145393733 (Error number -1145393733 occurred)
 [vost#0:0/wrapped_avframe @ 0000027989a7e600] No filtered frames for
 output stream, trying to initialize anyway.
 Output #0, null, to 'pipe:':
   Metadata:
     encoder         : Lavf61.1.100
   Chapters:
     Chapter #0:0: start 0.033000, end 1.250000
       Metadata:
         title           : Intro
   Stream #0:0(jpn): Video: wrapped_avframe, yuv420p(progressive),
 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 200 kb/s, 23.98 fps, 1k tbn
 (default)
       Metadata:
         title           : JPNBD
         DURATION        : 00:00:01.505000000
         BPS             : 34918000
         NUMBER_OF_FRAMES: 34141
         NUMBER_OF_BYTES : 6215251315
         _STATISTICS_WRITING_APP: mkvmerge v88.0 ('All I Know') 64-bit
         _STATISTICS_WRITING_DATE_UTC: 2024-11-10 11:06:16
         _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
         encoder         : Lavc61.3.100 wrapped_avframe
   Stream #0:1(jpn): Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
 (default)
       Metadata:
         title           : PCM 2.0
         DURATION        : 00:00:01.253000000
         BPS             : 2304000
         NUMBER_OF_FRAMES: 284793
         NUMBER_OF_BYTES : 410101920
         _STATISTICS_WRITING_APP: mkvmerge v88.0 ('All I Know') 64-bit
         _STATISTICS_WRITING_DATE_UTC: 2024-11-10 11:06:16
         _STATISTICS_TAGS: BPS DURATION NUMBER_OF_FRAMES NUMBER_OF_BYTES
         encoder         : Lavc61.3.100 pcm_s16le
 [out#0/null @ 00000279899ef840] video:0KiB audio:238KiB subtitle:0KiB
 other streams:0KiB global headers:0KiB muxing overhead: unknown
 frame=    0 fps=0.0 q=0.0 Lsize=N/A time=N/A bitrate=N/A speed=N/A
 Conversion failed!
 }}}

 I think the difference in behavior between mpv and VLC is because mpv
 automatically falls back to the software decoder if the hardware one
 fails: opening the Stats for nerds menu, a working av1 video shows
 {{{
 Video: Alliance for Open Media AV1 [Main] HW: d3d11va
 }}}
 while the broken video shows
 {{{
 Video: Alliance for Open Media AV1 [Main] [libdav1d]
 }}}


 The cuvid decoders solve this issue: the av1 video will be decoded
 correctly when running
 {{{
 ffmpeg -c:v av1_cuvid -i debug_av1_nvenc.mkv -f null -
 }}}

 Also, using hevc_cuvid in the two-step example from above will produce an
 av1 video which can be played with -hwaccel cuda without needing av1_cuvid
 (i had to remove -tune:v uhq from the command since it produced a 0-bytes
 file)
 {{{
 .\ffmpeg.exe -y -c:v hevc_cuvid -i tmp.mkv -c:v av1_nvenc -preset:v p7
 -rc:v vbr -b:v 0 -multipass:v 2 -rc-lookahead:v 30 -lookahead_level:v 15
 -split_encode_mode:v 1 -cq:v 30 -c:a copy -c:s copy -c:d copy debug.mkv
 }}}
 As I wrote in my issue, also reencoding with a software codec like libx264
 or libx265 before encoding again with av1_nvenc will produce a playable
 result
-- 
Ticket URL: <https://trac.ffmpeg.org/ticket/11390#comment:6>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
_______________________________________________
FFmpeg-trac mailing list
FFmpeg-trac@avcodec.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-trac

To unsubscribe, visit link above, or email
ffmpeg-trac-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to