bennettpeter / android-MythTV-Leanfront

:tv: MythTV Android TV frontend
GNU General Public License v3.0
45 stars 9 forks source link

Leanfront forgetting it's point of reference within the recording #66

Closed jfabernathy closed 1 year ago

jfabernathy commented 1 year ago

I've been recording all the FIFA WWC matches since they are not in my timezone. This morning I was watch Japan and Sweden which had completed. I watched the first half and then I use the remote to start skipping the commercials and halftime commentary when all of a sudden it started playing local news which could have been live on that same channel, I'm not sure. So I backed out of Leanfront and started over. Now the match showed to be only 2 minutes of recording which was only the start of the match. I cleared the cache and no changes. I know I had watched the entire first half without issues.

I switched over to a Linux PC running mythfrontend against the same backend and saw the rest of the match. I have no indications of any bad signal issues on this recording. This is one of the towers that is 10 miles away and always around 90% + .

I'll save the recording so maybe it can be analyzed, but mythfrontend on x86_64 Debian has no issues with it.

Leanfront is running on a FireTV 4K Max and is version 435

bennettpeter commented 1 year ago

How long is the recording? If you play it on leanfront does it show it is only 2 minutes long? How big is the file? Perhaps there are two copies of the recording, one of them short?

jfabernathy commented 1 year ago

On Leanfront it shows as only 1:59 i.e. 2 minutes. On Mythfrontend it shows as 180 minutes but 8.24GB. If I ssh into the backend and look for files this is the only one recording in August that is still around:

-rw-r--r-- 1 mythtv mythtv 8.3G Aug 11 06:30 16263_20230811073000.ts -rw-rw-rw- 1 mythtv mythtv 823K Aug 11 13:52 16263_20230811073000.ts.png

I did go back and watch it with mythfrontend on the firetv and I did notice about 1 hour, 8 mins in, at the start of the 2nd half, there were some small signal pixelations. mythfrontend recovered quickly and continued.

Originally I started watching with Leanfront and it was a full game recording, 180 minutes. I tried clearing the cache to see if that would fix it but no. Leanfront is convinced it's only 2 minutes.

Could Leanfront be reading the current position wrong in the database vs. mythfrontend?

jfabernathy commented 1 year ago

More information. I restarted the FireTV Max and turned on some adb logging. I then started the match playing. When it got to the end 1:59, it continued playing like there was no end. the first number kept counting up, but the second number stayed at 1:59 jim@jim-XPS-15-9500:~/platform-tools$ ./adb logcat lfe:D *:S --------- beginning of system --------- beginning of crash --------- beginning of main 08-11 14:40:33.531 5485 5485 I lfe : MainActivity memoryClass:192 lMemoryClass:384 08-11 14:40:33.653 5485 5517 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/DelayShutdown 08-11 14:40:33.715 5485 5517 I lfe : XmlNode Response: 200 OK 08-11 14:40:33.751 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterBackendOverride&Default=0&HostName=_GLOBAL_ 08-11 14:40:33.777 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:33.781 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterServerName&Default=0&HostName=_GLOBAL_ 08-11 14:40:33.824 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:33.837 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecordedList?IncCast=false 08-11 14:40:33.988 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:34.421 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?Key=BackendServerAddr&HostName=kubuntu-closet 08-11 14:40:34.436 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:34.833 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Video/GetVideoList 08-11 14:40:34.931 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Status/GetStatus 08-11 14:40:34.946 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:34.969 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:34.979 5485 5596 I lfe : AsyncBackendCall Time difference -979 milliseconds 08-11 14:40:34.980 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetLastPlayPos?RecordedId=-1 08-11 14:40:34.993 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:34.995 5485 5596 I lfe : AsyncBackendCall Last Play Position Support:true 08-11 14:40:36.143 5485 5529 I lfe : XmlNode URL: http://192.168.0.125:6544/Channel/GetChannelInfoList?OnlyVisible=true 08-11 14:40:36.170 5485 5529 I lfe : XmlNode Response: 200 OK 08-11 14:40:37.476 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Status/GetStatus 08-11 14:40:37.565 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:37.580 5485 5596 I lfe : AsyncBackendCall Time difference -580 milliseconds 08-11 14:40:37.582 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetLastPlayPos?RecordedId=-1 08-11 14:40:37.603 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:37.607 5485 5596 I lfe : AsyncBackendCall Last Play Position Support:true 08-11 14:40:46.187 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetLastPlayPos?OffsetType=duration&RecordedId=9233 08-11 14:40:46.212 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:46.229 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetSavedBookmark?OffsetType=duration&RecordedId=9233 08-11 14:40:46.253 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:46.256 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecorded?RecordedId=9233 08-11 14:40:46.284 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:46.510 5485 6381 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterBackendOverride&Default=0&HostName=_GLOBAL_ 08-11 14:40:46.525 5485 6381 I lfe : XmlNode Response: 200 OK 08-11 14:40:46.529 5485 6381 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterServerName&Default=0&HostName=_GLOBAL_ 08-11 14:40:46.541 5485 6381 I lfe : XmlNode Response: 200 OK 08-11 14:40:46.545 5485 6381 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecorded?RecordedId=9233 08-11 14:40:46.570 5485 6381 I lfe : XmlNode Response: 200 OK 08-11 14:40:50.737 5485 5485 I lfe : PlaybackFragment Initializing Player for FIFA Women's World Cup 2023 http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:40:50.885 5485 5485 I lfe : PlaybackFragment Playing offset mSec:0 08-11 14:40:51.909 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:40:51.970 5485 5485 I lfe : PlaybackFragment File Length changed from -1 to 8847652804 08-11 14:40:52.974 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:40:52.998 5485 5485 I lfe : PlaybackFragment File Length changed from 8847652804 to 8847652804 08-11 14:40:52.999 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecordedCutList?RecordedId=9233&OffsetType=Duration 08-11 14:40:53.026 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:53.028 5485 5596 I lfe : CommBreakTable CommBreakTable size:0 08-11 14:40:53.028 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecordedCutList?RecordedId=9233 08-11 14:40:53.043 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:53.046 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecordedCommBreak?RecordedId=9233&OffsetType=Duration 08-11 14:40:53.059 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:53.062 5485 5596 I lfe : CommBreakTable CommBreakTable size:0 08-11 14:40:53.062 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecordedCommBreak?RecordedId=9233 08-11 14:40:53.077 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:40:53.079 5485 5596 I lfe : CommBreakTable CommBreakTable size:0 08-11 14:40:53.402 5485 5485 I lfe : PlaybackFragment Frame rate Calculated:59.31198, Normalized:59.94 08-11 14:43:28.059 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/SetLastPlayPos?OffsetType=duration&RecordedId=9233&Offset=0 08-11 14:43:28.088 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.137 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/UpdateRecordedWatchedStatus?RecordedId=9233&Watched=true 08-11 14:43:28.153 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.161 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/SetLastPlayPos?OffsetType=duration&RecordedId=9233&Offset=0 08-11 14:43:28.207 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.253 5485 5485 I lfe : PlaybackActionListener onPlayCompleted checking File Length. 08-11 14:43:28.266 5485 5596 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/UpdateRecordedWatchedStatus?RecordedId=9233&Watched=true 08-11 14:43:28.273 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterBackendOverride&Default=0&HostName=_GLOBAL_ 08-11 14:43:28.286 5485 5596 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.293 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.295 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterServerName&Default=0&HostName=_GLOBAL_ 08-11 14:43:28.308 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.311 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecorded?RecordedId=9233 08-11 14:43:28.332 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.357 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterBackendOverride&Default=0&HostName=_GLOBAL_ 08-11 14:43:28.372 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.375 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Myth/GetSetting?key=MasterServerName&Default=0&HostName=_GLOBAL_ 08-11 14:43:28.391 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:28.393 5485 9329 I lfe : XmlNode URL: http://192.168.0.125:6544/Dvr/GetRecorded?RecordedId=9233 08-11 14:43:28.416 5485 9329 I lfe : XmlNode Response: 200 OK 08-11 14:43:29.290 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:43:30.305 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:43:31.318 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:43:32.334 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:43:33.349 5485 5596 I lfe : AsyncBackendCall URL: http://192.168.0.125:6544/Content/GetFile?StorageGroup=Default&FileName=/16263_20230811073000.ts 08-11 14:43:33.367 5485 5485 I lfe : PlaybackFragment File Length changed from 8847652804 to 8847652804 08-11 14:43:33.367 5485 5485 I lfe : PlaybackFragment Playback ending at EOF. `

jfabernathy commented 1 year ago

To continure: If I press the right arrow to have it skip 30 seconds, it freezes the video and the time says 1:59 / 1:59 even though it may have been at 2:16 / 1:59 before I pressed right arrow.

If I then press left arrow, it skips back to 30 seconds from the real end of the file where the match ended and the local news had started to record.

bennettpeter commented 1 year ago

exoplayer calculates the duration from timestamps in the file at the start and end. It seems that the end timestamp may be wrong. Try changing "ts search packets" in settings, advanced to a higher value.

jfabernathy commented 1 year ago

I tried setting TS search to 3000, 5000, and 10000. No change that I can detect. I tried changing to having the last position played from Mythtv database to Android local.

If during the 1st minute I can click the left arrow and it will back up 30 seconds. If it's greater than 1 minute and I click the left arrow it backs up relative to the end of the real file, ~ 3 hours later.

bennettpeter commented 1 year ago

I think the only way I can debug this and fix it is if I can get a copy of that 8 GB video file. You can upload it to google drive and share it with me. Google drive allows you up to 15 GB, so as long as your google drive is not over 7 GB you could share it that way and then delete it once I have downloaded it.

jfabernathy commented 1 year ago

I've started the upload; it may take all night since my Internet is only 10Mb/s up. I'll email directly the link once I've created it. You can let me know when to delete it.

bennettpeter commented 1 year ago

The file has the same problem when played with vlc. How did you record this? Was it over the air or cable?

jfabernathy commented 1 year ago

This file was recording on my Production backend which is a PC with a Hauppauge WinTV QuadHD PCIe OTA tuner card. V34- Master

bennettpeter commented 1 year ago

I copied the downloaded file to the videos storage group, scanned videos, and tried playing it with mythfrontend. Pressing i shows the length as 1 minute 58 seconds. Once it hits that time you cannot skip forward or back. It shows 1:58 of 1:58 all the time after that.

The only reason it worked on your system is that the seektable was created while recording. If there is a seek table, mythfrontend uses that instead of the timings in the video.

jfabernathy commented 1 year ago

Nice to know the whys and what-fores. I think we can caulk this up to a bad recording that didn't get tagged as a bad recording. You can close when you are done with it.

bennettpeter commented 1 year ago

If I copy the first half (4 GB) of the file to a new file and play that, vlc shows negative 1 hour 37 minutes length and mythfrontend shows 24 hours length. leanfront shows -- as the length, meaning unknown.

This file is badly messed up.

It is possible that you changed channels after an hour and a half? I don't know if that is possible.

bennettpeter commented 1 year ago

The way to repair the file is by using my standard method

mkvmerge -o output-file input-file

You can replace the original file with the output-file that this creates (you don't even have to name it as mkv) and it will play perfectly with all methods, vlc, leanfront, mythfrontend.

jfabernathy commented 1 year ago

This recorded happened while I was asleep. So whatever happened it was automatic. I'll file the mkvmerge tip away for next time.