Opened 9 years ago

Last modified 9 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 by skrull, 9 years ago

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

comment:2 by Carl Eugen Hoyos, 9 years ago

Component: undeterminedavformat
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 by Carl Eugen Hoyos, 9 years ago

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

comment:4 by skrull, 9 years ago

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 9 years ago by Carl Eugen Hoyos (previous) (diff)

comment:5 by Carl Eugen Hoyos, 9 years ago

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

comment:6 by skrull, 9 years ago

BIS Multishow HD

comment:7 by Carl Eugen Hoyos, 9 years ago

Reproduced by developer: set
Status: newopen

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 by skrull, 9 years ago

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 by Carl Eugen Hoyos, 9 years ago

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 by skrull, 9 years ago

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 by Carl Eugen Hoyos, 9 years ago

I can confirm that audio plays with WMP.

comment:12 by Carl Eugen Hoyos, 9 years ago

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