Opened 13 years ago

Closed 13 years ago

Last modified 13 years ago

#9926 closed Bug Report - General (fixed)

IPTV BBC recordings can't be played.

Reported by: Jan Hugo Prins <jhp@…> Owned by: beirdo
Priority: minor Milestone: 0.25
Component: MythTV - Video Decoding Version: 0.24.1
Severity: medium Keywords:
Cc: Ticket locked: no

Description

Hello,

I have a MythTV station that is connected to an IPTV fiber connection. All channels come in with UDP multicast and everything is recorded using the FREEBOX tuner. I can record any channel I want and playback of dutch channels works just fine.

But when I try to playback a recording coming from one of the BBC channels I have (BBC1, BBC2, BBC3, BBC4) the playback fails and after trying it 2 times the frontend crashes of hangs. I have had several times where I had to kill the frontend to be able to start it again.

I have created a trace of the failed playback using the -v playback option and when I do that I get the following error (full log attached):

2011-07-18 23:00:36.158 TV: Attempting to change from None to WatchingRecording? 2011-07-18 23:00:36.161 RingBuf?(/storage/default/1401_20110718224900.mpg): OpenFile?(/storage/default/1401_20110718224900.mpg, 2000 ms) 2011-07-18 23:00:36.166 TV Error: Couldn't find recorder for in-progress recording 2011-07-18 23:00:36.166 TV: StartPlayer?(0, WatchingPreRecorded?, main) -- begin 2011-07-18 23:00:36.167 TV: Elapsed time since TV constructor was called: 58 ms 2011-07-18 23:00:36.415 Tuning to pnum: 0x1 without CRC check on PMT 2011-07-18 23:00:36.463 mpegts_read_header: could not find any PMT's 2011-07-18 23:00:36.464 AFD Error: avformat err(-1) on av_open_input_file call. 2011-07-18 23:00:36.464 Couldn't open decoder for: /storage/default/1401_20110718224900.mpg 2011-07-18 23:00:36.464 Unable to open video file. 2011-07-18 23:00:56.512 playCtx, Error: StartPlaying?() Failed to start player 2011-07-18 23:00:56.512 Player(0): StopPlaying? - begin 2011-07-18 23:00:56.512 Player(0): Exited decoder loop. 2011-07-18 23:00:56.512 Player(0): StopPlaying? - end 2011-07-18 23:00:56.512 TV: StartPlayer?(0, WatchingPreRecorded?, main) -- end error

I have tried setting the playback profile to Slim, but that doesn't work. At the moment it is set to CPU+.

I have put a 50MB MPEG2 file that gives this error for me at http://jhp.home.xs4all.nl/50mb_bbc1.mpg

Attachments (1)

bbc1.log (19.4 KB) - added by Jan Hugo Prins <jhp@…> 13 years ago.
logfiles of failing bbc1 playback.

Download all attachments as: .zip

Change History (5)

Changed 13 years ago by Jan Hugo Prins <jhp@…>

Attachment: bbc1.log added

logfiles of failing bbc1 playback.

comment:1 Changed 13 years ago by Jan Hugo Prins <jhp@…>

[root@mythtv ~]# mythffplay /storage/50mb_bbc1.mpg FFplay version UNKNOWN, Copyright (c) 2003-2010 the FFmpeg developers

built on Jul 10 2011 19:15:33 with gcc 4.4.4 20100630 (Red Hat 4.4.4-10) configuration: --prefix=/usr --libdir=/usr/lib --libdir-name=lib --mandir=/usr/share/man --enable-iptv --enable-pthreads --enable-ffmpeg-pthreads --enable-joystick-menu --enable-audio-alsa --enable-audio-oss --enable-audio-jack --enable-libfftw3 --enable-x11 --x11-path=/usr/include --enable-xv --enable-xvmc-vld --enable-opengl-video --enable-opengl-vsync --enable-xrandr --enable-lirc --enable-ivtv --enable-firewire --enable-dvb --enable-libmp3lame --enable-libtheora --enable-libvorbis --enable-libxvid --enable-vdpau --enable-crystalhd --disable-directfb --extra-cflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fomit-frame-pointer' --extra-cxxflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m32 -march=i686 -mtune=atom -fasynchronous-unwind-tables -fomit-frame-pointer' --cpu=i686 --tune=i686 --enable-mmx --compile-type=release --enable-debug libavutil 50.24. 0 / 50.24. 0 libavcore 0. 6. 0 / 0. 6. 0 libavcodec 52.86. 1 / 52.86. 1 libavformat 52.78. 3 / 52.78. 3 libavdevice 52. 2. 1 / 52. 2. 1 libavfilter 1.37. 0 / 1.37. 0 libswscale 0.11. 0 / 0.11. 0 libpostproc 51. 2. 0 / 51. 2. 0

Tuning to pnum: 0x1 without CRC check on PMT mpegts_read_header: could not find any PMT's /storage/50mb_bbc1.mpg: Operation not permitted

comment:2 Changed 13 years ago by Raymond Wagner

Component: MythTV - Video PlaybackMythTV - Video Decoding
Owner: changed from markk to beirdo
Status: newassigned
Type: Bug Report - CrashBug Report - General

Issue with MPEG TS demuxer in local copy of ffmpeg. Problem does not exist upstream.

comment:3 Changed 13 years ago by Github

Resolution: fixed
Status: assignedclosed

Deal with incomplete PMT streams in BBC iPlayer IPTV

Fixes #9926

It turns out that the test recording (and presumably the others from the same source) contain incomplete PMT tables. The size field for the PMT says that there will be 383 bytes of data, but the only data received is the 182 bytes contained in the rest of that TS packet. i

FFmpeg without MythTV modifications to mpegts.c can handle this just fine as it doesn't need to know about the contents of the PMT. MythTV, however, depends on that information to determine what video and audio streams we have.

To deal with this without affecting "normal" recordings, I have put in another fallback that will try to parse the PMT overriding the length to the length received in the TS packet. This will only be used if it can not be parsed correctly, and if we've tried again without checking the CRC. This third and final attempt, should it fail, will cause it to give up. Should it succeed, there may be some streams not parsed, but whatever was in the first 182 bytes of the PMT should be taken into consideration, and there should be playback.

Branch: master Changeset: c11ee69c81198dc221c874e8132f1f30a385fa63

comment:4 Changed 13 years ago by beirdo

Milestone: 0.24.10.25
Note: See TracTickets for help on using tickets.