Playback video problems on some 720p encodes

I’ve been running into problems with certain TV show encodes playing back on my Vero4K+. I thought it might be a KODI level problem as the videos play fine from my Windows machine using MPC or VLC.

However, I also have an AppleTV 4K with MrMC (KODI fork) and it can play the same video with no problems. So I’m starting to think this is OSMC or Vero4K+ specific.

When it plays the audio is fine, but the video drops tons of frames and becomes desynchronized from the audio by a substantial amount. There is also frequent screen freezing while the audio plays just fine. It’s not just a few frames getting dropped it’s massively desynchronized and not flowing at all.

Here’s a mediainfo dump of the file in-case there are any clues?

General

Unique ID : 96285175933275132003584471331647056364 (0x486FD9B0BCC68FD3D552583753E4E9EC)
Complete name : \video\TV\Last.Week.Tonight.With.John.Oliver\Last.Week.Tonight.with.John.Oliver.S06E19.720p.mkv
Format : Matroska
Format version : Version 4
File size : 1 011 MiB
Duration : 31 min 20 s
Overall bit rate : 4 512 kb/s
Writing application : mkvmerge v35.0.0 (‘All The Love In The World’) 64-bit
Writing library : libebml v1.3.9 + libmatroska v1.5.2

Video

ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High@L4.1
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Codec ID : V_MPEG4/ISO/AVC
Duration : 31 min 20 s
Bit rate mode : Constant
Bit rate : 4 372 kb/s
Width : 1 280 pixels
Height : 720 pixels
Display aspect ratio : 16:9
Frame rate mode : Constant
Frame rate : 59.940 (60000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:0
Bit depth : 8 bits
Scan type : Progressive
Bits/(PixelFrame) :* 0.079
Stream size : 982 MiB (97%)
Default : Yes
Forced : No

Audio

ID : 2
Format : AAC LC
Format/Info : Advanced Audio Codec Low Complexity
Codec ID : A_AAC-2
Duration : 31 min 20 s
Bit rate : 125 kb/s
Channel(s) : 2 channels
Channel layout : L R
Sampling rate : 48.0 kHz
Frame rate : 46.875 FPS (1024 SPF)
Compression mode : Lossy
Stream size : 28.1 MiB (3%)
Language : English
Default : Yes
Forced : No

Text

ID : 3
Format : UTF-8
Codec ID : S_TEXT/UTF8
Codec ID/Info : UTF-8 Plain Text
Duration : 31 min 11 s
Bit rate : 264 b/s
Count of elements : 1185
Stream size : 60.5 KiB (0%)
Language : English
Default : No
Forced : No

It’s a problem with that specific encode that makes the decoder getting into issues. See all these threads
https://discourse.osmc.tv/search?q=John%20Oliver%20order%3Alatest

1 Like

Ahh…thanks! That’s a prolific number of posts regarding that show! Ok, well, at least it is a known issue. Don’t think I want to be enable/disabling hardware decoding all the time because, inevitably, I’ll forget to turn it back on.

This has been a minor annoyance since I got my 4k+ and it’s a little disappointing to have a feature regression when it worked well on my prior KODI hardware, but it’s not a deal breaker. Otherwise love my 4k+ to pieces. Best hardware I’ve ever used and I have tried almost everything.

TL;DR summary: releases from that group are broken…find another source

Note that these encodes are broken so that the mediainfo doesn’t match the actual content, which really isn’t in spec, so anything that can play it back is just getting lucky.

The issue is that the source is a 30/1.001p (or about 30 frames per second), while this encode is marked as 60/1.001p (or about 60 frames per second). If it was just frame-doubled, there would be no issue (although it would be a bit of wasted bandwidth). Instead, it is likely from a 60/1.001i source (or about 60 interlaced fields per second), where the original progressive was just sent as interlaced. This causes very little loss of quality, but the encode should still have undone that (by converting back to 30/1.001p), or should have the correct metadata.

Part of the problem is that, technically, H.264 cannot be used to encode interlaced video…you must encode whole frames. This led to a bit of a question on exactly how the metadata should be written, and the spec isn’t clear. Typically, 60 interlaced fields per second has metadata as 60i, but 30i was used sometimes to signify 30 frames per second of video that was interlaced, which is 60 fields per second. So, 60i and 30i have both been used to signify what is actually the same content.

2 Likes