Opened 4 years ago

Last modified 4 years ago

#1798 open defect

Real-world transport stream with incorrect PMT plays fine with WMP

Reported by: skrull Owned by:
Priority: normal Component: avformat
Version: git-master Keywords: mpegts
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

There's no sound with this file. It comes from a dvb-s2 channel.

WMP is the only player working.
ffplay git, MPlayer 1.1, MPlayer2, VLC 2.0.3, xbmc git (07/Oct/12) does not play audio (either windows or linux)

I managed to play audio only with mplayer -novideo switch.

It seems that PMT indicates the wrong stream type.

Change History (12)

comment:1 Changed 4 years ago by skrull

Since it is a 20MB sample file I have uploaded it to ftp://upload.mplayerhq.hu/incoming/multishow-hd.ts

comment:2 Changed 4 years ago by cehoyos

  • Component changed from undetermined to avformat
  • Keywords mpegts added

How was this sample recorded? With cat directly from the dvb device or did an application possibly alter the stream?
Which tv program is it?

comment:3 Changed 4 years ago by cehoyos

Please add complete, uncut console output of ffmpeg -i multishow-hd.ts to make this a valid ticket.

comment:4 Changed 4 years ago by skrull

It was recorded with tvheadend-git (07/Oct/2012).

ffmpeg version N-45169-g43c157f Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct  8 2012 10:02:26 with gcc 4.4.5 (Debian 4.4.5-8)
  configuration: --prefix=/usr --enable-gpl --enable-nonfree --enable-version3 --enable-shared --enable-gray --enable-avresample --enable-x11grab --enable-vaapi --enable-gnutls --enable-libass --enable-libbluray --enable-libcaca --enable-libfaac --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-librtmp --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libv4l2 --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libxvid --enable-openal --enable-openssl --enable-lto --disable-decoder='mpeg2_crystalhd,mpeg4_crystalhd,msmpeg4_crystalhd,vc1_crystalhd,wmv3_crystalhd,h264_crystalhd'
  libavutil      51. 73.102 / 51. 73.102
  libavcodec     54. 65.100 / 54. 65.100
  libavformat    54. 30.100 / 54. 30.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 19.102 /  3. 19.102
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[h264 @ 0x1444120] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1444120] non-existing PPS referenced
[h264 @ 0x1444120] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1444120] non-existing PPS 0 referenced
[h264 @ 0x1444120] decode_slice_header error
[h264 @ 0x1444120] no frame!
[mpegts @ 0x142f640] Stream #1: not enough frames to estimate rate; consider increasing probesize
[mpegts @ 0x142f640] PES packet size mismatch
Input #0, mpegts, from 'multishow-hd.ts':
  Duration: 00:00:18.20, start: 16706.124278, bitrate: 9070 kb/s
  Program 1
    Stream #0:0[0x1043]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1041](por): Audio: ac3 ([129][0][0][0] / 0x0081), 44100 Hz, 4.1, s16, 384 kb/s (comment)
Last edited 4 years ago by cehoyos (previous) (diff)

comment:5 Changed 4 years ago by cehoyos

What is the name of the dvb program you recorded (not the software, the tv program)?

comment:6 Changed 4 years ago by skrull

BIS Multishow HD

comment:7 Changed 4 years ago by cehoyos

  • Reproduced by developer set
  • Status changed from new to open

Work-around is to use -acodec mp2:

$ ffmpeg -acodec mp2 -i multishow-hd.ts
ffmpeg version N-45217-gb6f435f Copyright (c) 2000-2012 the FFmpeg developers
  built on Oct  9 2012 21:23:23 with gcc 4.7 (SUSE Linux)
  configuration: --enable-gpl
  libavutil      51. 74.100 / 51. 74.100
  libavcodec     54. 65.100 / 54. 65.100
  libavformat    54. 31.100 / 54. 31.100
  libavdevice    54.  3.100 / 54.  3.100
  libavfilter     3. 19.102 /  3. 19.102
  libswscale      2.  1.101 /  2.  1.101
  libswresample   0. 16.100 /  0. 16.100
  libpostproc    52.  1.100 / 52.  1.100
[h264 @ 0x1765220] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1765220] non-existing PPS referenced
[h264 @ 0x1765220] non-existing SPS 0 referenced in buffering period
[h264 @ 0x1765220] non-existing PPS 0 referenced
[h264 @ 0x1765220] decode_slice_header error
[h264 @ 0x1765220] no frame!
[mpegts @ 0x1761360] PES packet size mismatch
Input #0, mpegts, from 'multishow-hd.ts':
  Duration: 00:00:18.20, start: 16706.124278, bitrate: 9070 kb/s
  Program 1
    Stream #0:0[0x1043]: Video: h264 (High) ([27][0][0][0] / 0x001B), yuv420p, 1920x1080 [SAR 1:1 DAR 16:9], 59.94 fps, 59.94 tbr, 90k tbn, 59.94 tbc
    Stream #0:1[0x1041](por): Audio: mp2 ([129][0][0][0] / 0x0081), 48000 Hz, stereo, s16, 384 kb/s
At least one output file must be specified

tvheadend has a transport stream muxer, so it is theoretically possible that the software is writing the broken stream (and not the television provider). Do you have another possibility to record a few seconds directly from dvb?

comment:8 Changed 4 years ago by skrull

Today I was doing a raw mux dump to check if it was a tvheadend bug or not, then I noticed that audio was playing. So I guess the tv provider fixed it last night.

But if you still want a raw mux dump, point me where I could upload a 200MB file.

comment:9 Changed 4 years ago by cehoyos

Do I understand correctly that you know for sure now that it was the provider's fault and that they fixed it?

There is no hard file limit for the incoming directory you used.

comment:10 Changed 4 years ago by skrull

Yes, I was living with that problem for last four months, until this week I decided to debug it. I went to #mplayerdev and asked for help, someone told me that sample was indicating wrong stream type on PMT. They also told me to submit to ffmpeg trac (and here we are).

After that, I went to #hts (tvheadend). They asked for a raw mux dump. Today when I did record it and suddenly I could hear sound. tvheadend was always the same version.

Also today, on XBMC channel sound settings (where I do select audio stream), the stream names changed to new ones. Based on this, I could spot they changed something.

I could assure I did not change anything. But it would be nice if ffmpeg could play this file even if has wrong headers, in case my content provider chooses to mess up again :)

BTW, WMP 12 plays that file fine.

comment:11 Changed 4 years ago by cehoyos

I can confirm that audio plays with WMP.

comment:12 Changed 4 years ago by cehoyos

  • Summary changed from ffplay won't play audio from mpeg-ts file/stream to Real-world transport stream with incorrect PMT plays fine with WMP
Note: See TracTickets for help on using tickets.