FireTV 4K Stick Stutter Step Video With Transcoding

Symptom:
FireTV 4K Stick playing transcoded (8Mbps 1080p, 6 Mbps 720p or 2Mbps 480p) OTA video in DVR app stutters approximately twice per second, the video appears to run at slow speed then jump to catch up each time (twice per second). No continuous motion is seen, audio appears perfect, i.e. continuous and correct.
Original Video stream works as intended, but since this is a prototype for a remote client setup which fails identically, is not an acceptable solution.
Streams from NBC, ABC, CBS, CW, Fox all show same issue. HD and 480i show same issue.
Plays correctly on TiVo Stream 4k, Web app (6 concurrent streams), Android Phone, iOS Tablet

Software/Hardware:
Fire OS 6.2.7.1 (NS6271/2495)
Channels DVR (FireTV client) 2.1.23
Channels DVR (Windows server) 2020.03.27.1730
Windows Microsoft Windows 10 Pro 10.0.18363 Build 18363
8 cores / AMD Ryzen 5 2400G with Radeon Vega Graphics
31.93 GB 83.0% free
Transcoding GPU - Geforce GTX 1660 Super
HDHR Quartro (1-4 units, no change)

Config switches tried:
480p and greater all show same stutter step (Original works but is not a solution)
Software decoding at FireTV looks different but may just be dropping many frames
Tuner sharing On/Off - no change

Log from Web App shows 5-10 lines per minute while visual issue is about 2 per second.
2020/05/21 20:05:31.416354 [TNR] Opened connection to 10773BB9/0 for ch24.1 KVUE-DT
2020/05/21 20:05:31.424352 [HLS] Starting transcoder for channel 24.1 from 172.29.112.130 (encoder=remux, resolution=, deinterlacer=, bitrate=0)
2020/05/21 20:05:32.431538 [HLS] Probed live stream in 1.007186s: mpeg2video 1920x1080 tt 6658654bps
2020/05/21 20:05:34.454404 [HLS] Session ch24.1-dANY-ip172.29.112.130 started in 3.4411703s
2020/05/21 20:05:34.463406 [ENC] Starting encoder for ch24.1 in I:\ChDVR\Streaming\ch24.1-dANY-ip172.29.112.130-804284649\encoder-1-231717684 at 1 (1.040200) (encoder=h264_nvenc, resolution=1080, deinterlacer=linear, bitrate=8000 segment_size=0.01)
2020/05/21 20:05:40.366734 [ENC] Segment 4 has unexpected duration: inputs=10-12 expected=1.5015 actual=1.568233 expected_pts=5.344500-6.812633 actual_pts=5.365833-6.917389
2020/05/21 20:05:47.867365 [ENC] Segment 10 has unexpected duration: inputs=27-29 expected=1.5015 actual=1.568233 expected_pts=13.252400-14.720533 actual_pts=13.273733-14.825289
2020/05/21 20:05:51.966139 [ENC] Segment 13 has unexpected duration: inputs=36-38 expected=1.5015 actual=1.568233 expected_pts=17.089567-18.557700 actual_pts=17.110900-18.662456
2020/05/21 20:05:58.067379 [ENC] Segment 17 has unexpected duration: inputs=48-50 expected=1.5015 actual=1.568233 expected_pts=23.195667-24.663800 actual_pts=23.217000-24.768556
2020/05/21 20:06:05.865481 [ENC] Segment 23 has unexpected duration: inputs=64-67 expected=1.5015 actual=1.651644 expected_pts=31.003467-32.471600 actual_pts=30.908022-32.542989
2020/05/21 20:06:13.568498 [ENC] Segment 29 has unexpected duration: inputs=81-84 expected=1.5015 actual=1.584911 expected_pts=38.677800-40.145933 actual_pts=38.682456-40.250689
2020/05/21 20:06:15.544881 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 52 20
2020/05/21 20:06:15.545882 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:06:15.566885 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:06:30.765894 [ENC] Segment 42 has unexpected duration: inputs=118-120 expected=1.5015 actual=1.568233 expected_pts=56.695800-58.163933 actual_pts=56.717133-58.268689
2020/05/21 20:06:44.259549 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 117 30
2020/05/21 20:06:44.259549 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:06:44.262557 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:06:57.065573 [ENC] Segment 66 has unexpected duration: inputs=180-183 expected=0.3003 actual=0.367033 expected_pts=82.922000-83.188933 actual_pts=82.876600-83.226956
2020/05/21 20:07:00.039402 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] ac-tex damaged at 71 48
2020/05/21 20:07:00.043402 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:07:00.067496 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:07:03.166250 [ENC] Segment 70 has unexpected duration: inputs=192-195 expected=1.5015 actual=1.685011 expected_pts=88.227300-89.695433 actual_pts=88.131856-89.800189
2020/05/21 20:07:11.766701 [ENC] Segment 76 has unexpected duration: inputs=211-213 expected=1.5015 actual=1.568233 expected_pts=96.802533-98.270667 actual_pts=96.823867-98.375422
2020/05/21 20:07:16.261059 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 87 0
2020/05/21 20:07:16.262062 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:07:16.264062 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:07:31.142270 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 85 16
2020/05/21 20:07:31.142270 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:07:31.144277 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:07:40.566174 [ENC] Segment 99 has unexpected duration: inputs=274-276 expected=1.5015 actual=1.568233 expected_pts=126.398767-127.866900 actual_pts=126.420100-127.971656
2020/05/21 20:07:45.102248 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 71 32
2020/05/21 20:07:45.102248 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:07:45.104248 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:07:46.068545 [ENC] Segment 103 has unexpected duration: inputs=285-287 expected=1.5015 actual=1.568233 expected_pts=131.704067-133.172200 actual_pts=131.725400-133.276956
2020/05/21 20:07:50.167078 [ENC] Segment 106 has unexpected duration: inputs=292-295 expected=1.6016 actual=1.651644 expected_pts=135.207567-136.775800 actual_pts=135.212222-136.847189
2020/05/21 20:07:58.909000 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] skip with previntra
2020/05/21 20:07:58.909991 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:07:58.912000 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:08:07.468438 [ENC] Segment 119 has unexpected duration: inputs=328-331 expected=1.5015 actual=1.584911 expected_pts=152.925267-154.393400 actual_pts=152.896556-154.464789
2020/05/21 20:08:09.867675 [ENC] Segment 121 has unexpected duration: inputs=334-337 expected=1.5015 actual=1.551544 expected_pts=155.494500-156.962633 actual_pts=155.499156-157.034022
2020/05/21 20:08:15.088138 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 1 21
2020/05/21 20:08:15.089131 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:08:15.091139 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:08:34.766097 [ENC] Segment 137 has unexpected duration: inputs=381-383 expected=1.5015 actual=1.568233 expected_pts=179.885533-181.353667 actual_pts=179.906867-181.458422
2020/05/21 20:08:43.974982 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 4 10
2020/05/21 20:08:43.974982 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:08:43.989993 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:08:48.865902 [ENC] Segment 146 has unexpected duration: inputs=407-409 expected=1.5015 actual=1.568233 expected_pts=193.999633-195.467767 actual_pts=194.020967-195.572522
2020/05/21 20:08:59.935483 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:08:59.955011 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:09:01.367226 [ENC] Segment 155 has unexpected duration: inputs=432-435 expected=1.5015 actual=1.584911 expected_pts=206.478767-207.946900 actual_pts=206.483422-208.051656
2020/05/21 20:09:06.772136 [ENC] Segment 159 has unexpected duration: inputs=444-446 expected=1.735067 actual=1.8018 expected_pts=211.683967-213.385667 actual_pts=211.705300-213.490422
2020/05/21 20:09:14.993568 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 83 32
2020/05/21 20:09:14.993568 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:09:15.016568 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:09:15.766986 [ENC] Segment 166 has unexpected duration: inputs=463-465 expected=1.5015 actual=1.568233 expected_pts=221.527133-222.995267 actual_pts=221.548467-223.100022
2020/05/21 20:09:28.552603 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-remux: [mpegts @ 000000000255c040] Dropped corrupted packet (stream = 2)
2020/05/21 20:09:32.966463 [ENC] Segment 179 has unexpected duration: inputs=498-500 expected=1.5015 actual=1.568233 expected_pts=237.943533-239.411667 actual_pts=237.964867-239.516422
2020/05/21 20:09:47.266213 [ENC] Segment 189 has unexpected duration: inputs=527-529 expected=1.5015 actual=1.568233 expected_pts=252.458033-253.926167 actual_pts=252.479367-254.030922
2020/05/21 20:09:54.165548 [ENC] Segment 194 has unexpected duration: inputs=541-543 expected=1.5015 actual=1.568233 expected_pts=259.331567-260.799700 actual_pts=259.352900-260.904456
2020/05/21 20:10:02.366441 [ENC] Segment 200 has unexpected duration: inputs=557-559 expected=1.5015 actual=1.568233 expected_pts=267.272833-268.740967 actual_pts=267.294167-268.845722
2020/05/21 20:10:14.666178 [ENC] Segment 210 has unexpected duration: inputs=584-587 expected=1.5015 actual=1.618277 expected_pts=280.185733-281.653867 actual_pts=280.157022-281.758622
2020/05/21 20:10:17.664804 [ENC] Segment 212 has unexpected duration: inputs=590-593 expected=1.5015 actual=1.584911 expected_pts=282.788333-284.256467 actual_pts=282.792989-284.361222
2020/05/21 20:10:28.867510 [ENC] Segment 222 has unexpected duration: inputs=617-619 expected=1.034367 actual=1.1011 expected_pts=294.733600-295.734600 actual_pts=294.671522-295.755933
2020/05/21 20:10:30.466356 [ENC] Segment 223 has unexpected duration: inputs=620-623 expected=1.267933 actual=1.351344 expected_pts=295.767967-297.002533 actual_pts=295.772622-297.107289
2020/05/21 20:10:33.566243 [ENC] Segment 227 has unexpected duration: inputs=631-633 expected=1.5015 actual=1.568233 expected_pts=299.605133-301.073267 actual_pts=299.626467-301.178022
2020/05/21 20:10:40.969043 [ENC] Segment 232 has unexpected duration: inputs=645-647 expected=1.568233 actual=1.634967 expected_pts=306.011533-307.546400 actual_pts=306.032867-307.651156
2020/05/21 20:10:56.967739 [ENC] Segment 244 has unexpected duration: inputs=679-681 expected=1.5015 actual=1.568233 expected_pts=321.927433-323.395567 actual_pts=321.948767-323.500322
2020/05/21 20:11:06.160610 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:11:06.162608 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:11:23.668481 [ENC] Segment 261 has unexpected duration: inputs=730-732 expected=1.5015 actual=1.568233 expected_pts=348.954433-350.422567 actual_pts=348.975767-350.527322
2020/05/21 20:11:26.466849 [ENC] Segment 263 has unexpected duration: inputs=735-738 expected=1.5015 actual=1.685011 expected_pts=351.657133-353.125267 actual_pts=351.561689-353.230022
2020/05/21 20:11:35.371119 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:11:35.391140 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:11:36.066056 [ENC] Segment 271 has unexpected duration: inputs=757-759 expected=1.5015 actual=1.568233 expected_pts=361.967433-363.435567 actual_pts=361.988767-363.540322
2020/05/21 20:11:44.267082 [ENC] Segment 277 has unexpected duration: inputs=773-775 expected=1.5015 actual=1.568233 expected_pts=370.209000-371.677133 actual_pts=370.230333-371.781889
2020/05/21 20:11:50.383364 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] 00 motion_type at 14 54
2020/05/21 20:11:50.383364 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:11:50.397365 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:12:04.069449 [ENC] Segment 291 has unexpected duration: inputs=811-813 expected=1.5015 actual=1.568233 expected_pts=388.827600-390.295733 actual_pts=388.848933-390.400489
2020/05/21 20:12:05.678608 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:12:05.680605 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:12:21.867762 [ENC] Segment 303 has unexpected duration: inputs=846-848 expected=1.5015 actual=1.568233 expected_pts=406.845600-408.313733 actual_pts=406.866933-408.418489
2020/05/21 20:12:30.167171 [ENC] Segment 309 has unexpected duration: inputs=864-866 expected=1.5015 actual=1.568233 expected_pts=415.954700-417.422833 actual_pts=415.976033-417.527589
2020/05/21 20:13:00.465908 [ENC] Segment 331 has unexpected duration: inputs=924-927 expected=1.5015 actual=1.584911 expected_pts=445.484200-446.952333 actual_pts=445.488856-447.057089
2020/05/21 20:13:05.866743 [ENC] Segment 337 has unexpected duration: inputs=940-943 expected=1.5015 actual=1.584911 expected_pts=451.023067-452.491200 actual_pts=451.027722-452.595956
2020/05/21 20:13:11.267524 [ENC] Segment 340 has unexpected duration: inputs=950-952 expected=1.5015 actual=1.568233 expected_pts=455.994700-457.462833 actual_pts=456.016033-457.567589
2020/05/21 20:13:22.345539 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:13:22.361540 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:13:22.365541 [ENC] Segment 348 has unexpected duration: inputs=974-976 expected=1.5015 actual=1.568233 expected_pts=467.506200-468.974333 actual_pts=467.527533-469.079089
2020/05/21 20:13:26.066287 [ENC] Segment 351 has unexpected duration: inputs=982-984 expected=1.5015 actual=1.568233 expected_pts=471.109800-472.577933 actual_pts=471.131133-472.682689
2020/05/21 20:13:38.099453 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:13:38.135475 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:13:42.066586 [ENC] Segment 362 has unexpected duration: inputs=1015-1017 expected=1.5015 actual=1.568233 expected_pts=487.859867-489.328000 actual_pts=487.881200-489.432756
2020/05/21 20:13:47.167058 [ENC] Segment 366 has unexpected duration: inputs=1025-1027 expected=1.5015 actual=1.568233 expected_pts=492.364367-493.832500 actual_pts=492.385700-493.937256
2020/05/21 20:13:52.844422 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:13:52.864426 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0
2020/05/21 20:13:57.367955 [ENC] Segment 373 has unexpected duration: inputs=1045-1047 expected=1.5015 actual=1.568233 expected_pts=502.474467-503.942600 actual_pts=502.495800-504.047356
2020/05/21 20:14:06.668845 [ENC] Segment 381 has unexpected duration: inputs=1066-1068 expected=1.9019 actual=1.968633 expected_pts=512.184167-514.052700 actual_pts=512.205500-514.157456
2020/05/21 20:14:11.968329 [ENC] Segment 386 has unexpected duration: inputs=1078-1079 expected=0.667333 actual=0.734067 expected_pts=517.856500-518.490467 actual_pts=517.877833-518.595222
2020/05/21 20:14:13.786239 [ENC] Segment 388 has unexpected duration: inputs=1083-1084 expected=0.734067 actual=0.8008 expected_pts=520.125433-520.826133 actual_pts=520.146767-520.930889
2020/05/21 20:14:19.966224 [ENC] Segment 397 has unexpected duration: inputs=1102-1104 expected=0.533867 actual=0.684011 expected_pts=527.099067-527.599567 actual_pts=527.003622-527.670956
2020/05/21 20:14:22.666973 [ENC] Segment 401 has unexpected duration: inputs=1111-1113 expected=0.467133 actual=0.617277 expected_pts=529.768400-530.202167 actual_pts=529.706322-530.306922
2020/05/21 20:14:23.091029 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Invalid mb type in P-frame at 5 50
2020/05/21 20:14:23.092032 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: [mpeg2video @ 00000000025cc480] Warning MVs not available
2020/05/21 20:14:23.107033 [HLS] ffmpeg: ch24.1-dANY-ip172.29.112.130-1-h264-aac-8000-256-1080-6-40--linear-false-false-0.01: pipe:: corrupt decoded frame in stream 0

I have not found good instructions for issue reporting, point me at them if you need more.

John Brisbin

On the appletv app you can access client logs that have a lot of details by browsing to http://iPod client/log. Or maybe it’s logs. Not sure. Also not sure if the same logs exist for firetv, but might be worth a shot. I’ve used these in the past to confirm frame drops.

The client endpoint is http://${CLIENT_IP}:57000/log. Same for tvOS/iOS/Android.

1 Like

After reproducing the problem, please click Submit Diagnostics on both the server and client.

On the server web UI it's under Help > Submit Diagnostics

On the client it's under Settings > Player

I would be curious if the same thing is happening with Software transcoding enabled on the server.

Thanks, that works for me and shows the FireTV dropping frames like mad, but does not reveal any reason.

Issue does not seem to occur with software based encoding enabled in section " Transcoder Video compression mode used for remote and web-based playback"

Will send diagnostics with hardware re-enabled.

Submitted diags as 042fa633-2e92-41c1-b650-58a1d2b0010d and from FireTV a moment before.
Includes only about 30 seconds video, but plenty of errors.

Thank you. Clearly lots of frames dropped. There seems to be some bad interaction between the nvidia hardware encoder and the FireTV hardware decoder.

Could you submit diagnostics from the player after playing in software decoding mode?

Are the GeForce drivers on the PC up to date?

Can you also run an HWE test and post all the generated logs:

Windows is not aware that there are newer Geforce drivers, but with several versions seemingly in parallel, it can be hard to tell. They were up to date when I installed the card less than a month ago.

Note also that ffmpeg recently began supporting AMD/Radeon GPUs. I initially encountered this problem using the APU in the Ryzen CPU, so if anything it is the way that ffmpeg configures hardware encoders. Or so it would seem.

2020/05/21 23:08:23.604149 [HWE] Trying h264_amf: C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe -hide_banner -nostats -loglevel warning -loglevel verbose -f lavfi -t 0.1 -i color=black:640x480 -c:v h264_amf -profile:v high -level 42 -b:v 400k -maxrate:v 600k -f null -y nul
[Parsed_color_0 @ 00000000025c3e80] size:640x480 rate:25/1 duration:-1.000000 sar:1/1
Input #0, lavfi, from 'color=black:640x480':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_amf))
Press [q] to stop, [?] for help
[graph 0 input from stream 0:0 @ 00000000038b3500] w:640 h:480 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[h264_amf @ 00000000026aa5c0] AMF initialisation succeeded via D3D11.
[h264_amf @ 00000000026aaa00] CreateComponent(AMFVideoEncoderVCE_AVC) failed with error 13
Error initializing output stream 0:0 -- Error while opening encoder for output stream #0:0 - maybe incorrect parameters such as bit_rate, rate, width or height
Conversion failed!
2020/05/21 23:08:23.762813 [HWE] Failure: exit status 1
2020/05/21 23:08:23.762813 [HWE] Trying h264_nvenc: C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe C:\ProgramData\ChannelsDVR\latest\ffmpeg.exe -hide_banner -nostats -loglevel warning -loglevel verbose -f lavfi -t 0.1 -i color=black:640x480 -c:v h264_nvenc -profile:v high -level 42 -b:v 400k -maxrate:v 600k -f null -y nul
[Parsed_color_0 @ 00000000025a3e80] size:640x480 rate:25/1 duration:-1.000000 sar:1/1
Input #0, lavfi, from 'color=black:640x480':
Duration: N/A, start: 0.000000, bitrate: N/A
Stream #0:0: Video: rawvideo, 1 reference frame (I420 / 0x30323449), yuv420p, 640x480 [SAR 1:1 DAR 4:3], 25 tbr, 25 tbn, 25 tbc
Stream mapping:
Stream #0:0 -> #0:0 (rawvideo (native) -> h264 (h264_nvenc))
Press [q] to stop, [?] for help
[graph 0 input from stream 0:0 @ 000000000375ce80] w:640 h:480 pixfmt:yuv420p tb:1/25 fr:25/1 sar:1/1 sws_param:flags=2
[h264_nvenc @ 000000000268a5c0] Loaded Nvenc version 10.0
[h264_nvenc @ 000000000268a5c0] Nvenc initialized successfully
[h264_nvenc @ 000000000268a5c0] 1 CUDA capable devices found
[h264_nvenc @ 000000000268a5c0] [ GPU #0 - < GeForce GTX 1660 SUPER > has Compute SM 7.5 ]
[h264_nvenc @ 000000000268a5c0] supports NVENC
Output #0, null, to 'nul':
Metadata:
encoder : Lavf58.29.100
Stream #0:0: Video: h264 (h264_nvenc) (High), 1 reference frame, yuv420p, 640x480 [SAR 1:1 DAR 4:3], q=-1--1, 400 kb/s, 25 fps, 25 tbn, 25 tbc
Metadata:
encoder : Lavc58.54.100 h264_nvenc
Side data:
cpb: bitrate max/min/avg: 600000/0/400000 buffer size: 800000 vbv_delay: -1
No more output streams to write to, finishing.
frame= 3 fps=0.0 q=24.0 Lsize=N/A time=00:00:00.12 bitrate=N/A speed=0.504x
video:0kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown
Input file #0 (color=black:640x480):
Input stream #0:0 (video): 4 packets read (1843200 bytes); 4 frames decoded;
Total: 4 packets (1843200 bytes) demuxed
Output file #0 (nul):
Output stream #0:0 (video): 3 frames encoded; 3 packets muxed (226 bytes);
Total: 3 packets (226 bytes) muxed
[h264_nvenc @ 000000000268a5c0] Nvenc unloaded
2020/05/21 23:08:24.143732 [HWE] Successfully encoded using h264_nvenc

Diagnostics under b91bae72-1e8e-4999-bdb4-22bfe6bf009f
with FireTV diag uploaded a moment before.

To be clear I meant web UI set to Hardware, and FireTV set to Video Decoder: Software

Interesting. What did you do to disable the APU and switch to the GPU?

That is what you said, I see now. Will do.
Find it under 8813092e-aee2-4c51-8bac-c819bf54d3a0

When you asked, frankly I could not recall. I think I did the simple thing and disabled the graphic output of the CPU in the BIOS and checked to see that the NVIDIA cpu was being used for plex transcodes, since that was the immediate target.
I see also that the correct (NVIDIA) GPU is being used for Channels under the performance tab of the task manager (especially when many sessions are active).

BTW, I ran across this issue in Channels, decided Plex might be a better alternative, then eventually discovered that they cannot handle merging channels from two viewing areas (Austin and San Antonio, in my case). So, that capability of Channels brought me back.

Thanks! I have all the information we need to investigate further.

One more thing you can try is the Old Transcoder checkbox in the experimental section at the bottom of the web UI

I gave it a shot earlier this evening. There was no apparent difference.

Thanks.

Given every other device works fine, there's something specific to the FireTV causing issues. Amazon has promised us several fixes to their hardware h264 decoder by the end of Q2, so that could be the root cause. I am surprised to see you're also seeing framedrops when using software decoding, but that might be a CPU limitation. Does it work any better at lower resolutions like 480p?

Yes, software decode does work quite a bit better at smaller sizes. The log seems to have few if any drops at 2Mbps 480p and it looks good visually.

1 Like

Great, sounds like we have narrowed down the issue. I'm hopeful this will be resolved with the next FireTV firmware update

That is good news. According to that thread, it could be any day, week or month now :wink: 'Q2'.

Do so few people use NVIDIA/AMD hardware transcoding that I am alone in encountering this issue? Is it reproducible for you?

The nvidia/AMD encoder support is much newer than the others, and not as well tested in our community. But there are users like @smswings14 and @thechannels using Quadros with a lot of success.

Personally I do not have a PC or any AMD/NVIDIA GPUs. I do most of my development on Mac and Linux and use Windows VMs for testing when necessary.

Given that the TiVo streamer has no issues with the encoded stream from you GeForce, this does seem like more of a FireTV stick specific issue.