Opened 18 months ago

Last modified 5 months ago

#8660 new defect

mpegts recognize s302m as private data stream

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

Description

Summary of the bug:

When using s302m audio codec in mpegts, the current ffmpeg version gives then warning:

[mpegts @ 0x55fa474108c0] Stream 1, codec s302m, is muxed as a private data stream and may not be recognized upon reading.

That is a wrong message, because s302m should be listed as a audio codec.

I read that the list of supported codecs are incomplete. Would be good to update it.

How to reproduce:

% ffmpeg -i input -c:v mpeg2video -c:a s302m -strict -2 -ar 48000 -ac 2 -f mpegts /dev/null

Would it be correct to add in mpegts.h:

#define STREAM_TYPE_AUDIO_S302M    0x84

And in mpegtsenc.c:

case AV_CODEC_ID_S302M:
        stream_type = STREAM_TYPE_AUDIO_S302M;
        break;

? Or does it need more effort?

When yes, I could try to prepare a patch.

Change History (6)

comment:1 by Balling, 18 months ago

Is not smth like dolby E in s302m an actual audio not s302m?

comment:2 by Carl Eugen Hoyos, 18 months ago

To make this a valid ticket please provide the actual command line you tested together with the complete, uncut console output and explain what is wrong with the output file.

comment:3 by jb_alvarado, 18 months ago

Sorry, here is complete output:

ffmpeg -f lavfi -i nullsrc=s=256x256:d=30 -f lavfi -i anullsrc=r=48000:cl=stereo -shortest -c:v mpeg2video -c:a s302m -strict -2 -ar 48000 -ac 2 -y -f mpegts /dev/null
ffmpeg version git-2020-05-10-a058d81 Copyright (c) 2000-2020 the FFmpeg developers
  built with gcc 10 (GCC)
  configuration: --disable-debug --disable-shared --disable-doc --enable-gpl --enable-version3 --enable-runtime-cpudetect --enable-avfilter --enable-zlib --enable-fontconfig --enable-libfdk-aac --enable-libfribidi --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsoxr --enable-libsrt --enable-libtwolame --enable-libvpx --enable-libx264 --enable-libx265 --enable-libzimg --enable-libzmq --enable-nonfree --enable-opengl --enable-openssl --enable-pic
  libavutil      56. 43.100 / 56. 43.100
  libavcodec     58. 83.100 / 58. 83.100
  libavformat    58. 43.100 / 58. 43.100
  libavdevice    58.  9.103 / 58.  9.103
  libavfilter     7. 80.100 /  7. 80.100
  libswscale      5.  6.101 /  5.  6.101
  libswresample   3.  6.100 /  3.  6.100
  libpostproc    55.  6.100 / 55.  6.100
Input #0, lavfi, from 'nullsrc=s=256x256:d=30':
  Duration: N/A, start: 0.000000, bitrate: N/A
    Stream #0:0: Video: rawvideo (I420 / 0x30323449), yuv420p, 256x256 [SAR 1:1 DAR 1:1], 25 tbr, 25 tbn, 25 tbc
Input #1, lavfi, from 'anullsrc=r=48000:cl=stereo':
  Duration: N/A, start: 0.000000, bitrate: 768 kb/s
    Stream #1:0: Audio: pcm_u8, 48000 Hz, stereo, u8, 768 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (rawvideo (native) -> mpeg2video (native))
  Stream #1:0 -> #0:1 (pcm_u8 (native) -> s302m (native))
Press [q] to stop, [?] for help
Output #0, mpegts, to '/dev/null':
  Metadata:
    encoder         : Lavf58.43.100
    Stream #0:0: Video: mpeg2video (Main), yuv420p(progressive), 256x256 [SAR 1:1 DAR 1:1], q=2-31, 200 kb/s, 25 fps, 90k tbn, 25 tbc
    Metadata:
      encoder         : Lavc58.83.100 mpeg2video
    Side data:
      cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
    Stream #0:1: Audio: s302m, 48000 Hz, stereo, s16, 1920 kb/s
    Metadata:
      encoder         : Lavc58.83.100 s302m
[mpegts @ 0x393bf80] Stream 1, codec s302m, is muxed as a private data stream and may not be recognized upon reading.
[Parsed_nullsrc_0 @ 0x38ff5c0] EOF timestamp not reliable
frame=  750 fps=0.0 q=2.0 Lsize=    7566kB time=00:00:29.99 bitrate=2066.3kbits/s speed= 128x    
video:170kB audio:7040kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 4.930064%

The file is working, but the message is confusing, because it implies that the audio codec is not known.

comment:4 by Carl Eugen Hoyos, 18 months ago

Component: undeterminedavformat
Keywords: mpegts added
Priority: normalminor
Version: unspecifiedgit-master

(Your command line does not produce a „file“.)
Did you test an output file with software not based on FFmpeg?

comment:5 by jb_alvarado, 18 months ago

I have no access to players which are not based on ffmpeg and support s302m audio. But gnome video player, mpv and ffplay will play that file. Mediainfo shows also the s302m audio as audio line and not data stream. So I think fmpeg just gives a wrong warning.

What I read here, is that the recognized list is not complete. So I guess the audio codec just needs to be added.

comment:6 by Balling, 5 months ago

But gnome video player, mpv and ffplay will play that file.

But not dolby E. Or any non-pcm-audio (Dolby E is type 28).

Note: See TracTickets for help on using tickets.