Opened 8 years ago

Closed 5 years ago

Last modified 5 years ago

#5501 closed defect (worksforme)

EAC3 decoding

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

Description

Problem decoding EAC3 from TS, if track is repackaged with "-copy_unkown", then the stream is a FFmpeg decodable AC3 384k...

Any way to decode original file without the temp file?

  1. FAILED TO DECODE

ffmpeg -i part.ts -map 0:1 -t 10 -f null -

ffmpeg version N-79000-g66edd86 Copyright (c) 2000-2016 the FFmpeg developers

built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100

[mpegts @ 00000000007a2700] probed stream 1 failed
[mpegts @ 00000000007a2700] Could not find codec parameters for stream 1 (Unknown: none (EAC3 / 0x33434145)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'part.ts':

Duration: N/A, start: 1.083400, bitrate: N/A
Program 2

Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9],

Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc

Stream #0:1[0x1e2]: Unknown: none (EAC3 / 0x33434145)

Cannot map stream #0:1 - unsupported type.
If you want unsupported types ignored instead of failing, please use the -ignore_unknown option
If you want them copied, please use -copy_unknown

  1. COPIED TRACK TO TS with "-copy_unknown"

ffmpeg -i 108GB_9.ts -map 0:1 -t 10 -copy_unknown -c copy audio_test.ts

ffmpeg version N-79000-g66edd86 Copyright (c) 2000-2016 the FFmpeg developers

built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100

[mpegts @ 0000000000662820] probed stream 1 failed
[mpegts @ 0000000000662820] Could not find codec parameters for stream 1 (Unknown: none (EAC3 / 0x33434145)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from '108GB_9.ts':

Duration: N/A, start: 1.083400, bitrate: N/A
Program 2

Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9],

Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc

Stream #0:1[0x1e2]: Unknown: none (EAC3 / 0x33434145)

Output #0, mpegts, to 'audio_test.ts':

Metadata:

encoder : Lavf57.28.100
Stream #0:0: Unknown: none (EAC3 / 0x33434145)

Stream mapping:

Stream #0:1 -> #0:0 (copy)

Press [q] to stop, ? for help
size= 540kB time=00:00:09.98 bitrate= 443.5kbits/s speed= 35x
video:0kB audio:0kB subtitle:0kB other streams:473kB global headers:0kB muxing overhead: 14.242310%

  1. CONVERT TEST AUDIO FILE to WAV - OK!

ffmpeg -i audio_test.ts 1.wav

ffmpeg version N-79000-g66edd86 Copyright (c) 2000-2016 the FFmpeg developers

built with gcc 5.3.0 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libbs2b --enable-libcaca --enable-libdcadec --enable-libfreetype --enable-libgme --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmfx --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-libzimg --enable-lzma --enable-decklink --enable-zlib
libavutil 55. 19.100 / 55. 19.100
libavcodec 57. 28.100 / 57. 28.100
libavformat 57. 28.100 / 57. 28.100
libavdevice 57. 0.101 / 57. 0.101
libavfilter 6. 39.102 / 6. 39.102
libswscale 4. 0.100 / 4. 0.100
libswresample 2. 0.101 / 2. 0.101
libpostproc 54. 0.100 / 54. 0.100

Input #0, mpegts, from 'audio_test.ts':

Duration: 00:00:09.98, start: 1.400000, bitrate: 443 kb/s
Program 1

Metadata:

service_name : Service01
service_provider: FFmpeg

Stream #0:0[0x100]: Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, 5.1(side), fltp, 384 kb/s

Output #0, wav, to '1.wav':

Metadata:

ISFT : Lavf57.28.100
Stream #0:0: Audio: pcm_s16le ([1][0][0][0] / 0x0001), 48000 Hz, 5.1(side), s16, 4608 kb/s
Metadata:

encoder : Lavc57.28.100 pcm_s16le

Stream mapping:

Stream #0:0 -> #0:0 (eac3 (native) -> pcm_s16le (native))

Press [q] to stop, ? for help
[eac3 @ 000000000078ef20] incomplete frame
size= 5652kB time=00:00:10.04 bitrate=4608.1kbits/s speed= 141x
video:0kB audio:5652kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.001762%

Change History (9)

comment:1 by Mista_D, 8 years ago

Original test file - blank video frames with original audio track. http://www.mediafire.com/download/x2769n0orzybw06/AEC3_undecodable.ts

comment:2 by Carl Eugen Hoyos, 8 years ago

Keywords: mpegts added

I cannot reproduce with the sample you uploaded: Please provide command line and console output for the sample you uploaded or upload a larger sample (there is no file size limit).

comment:3 by Mista_D, 8 years ago

Resubmitting test file, commands and console as per Carlos' request.

LONGER TEST FILE:
http://www.mediafire.com/download/3213n9fvecewxwn/part.ts

COMMANDS:

  1. NOT DECODING

ffmpeg -i part.ts -map 0:1 -f null /dev/null
ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers

built with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52)
configuration: --prefix=/home/dennisp/010_64 --enable-static --enable-postproc --enable-gpl --enable-avfilter --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libx265 --enable-pthreads --enable-swscale --enable-runtime-cpudetect --disable-devices --disable-avdevice --extra-ldflags=-static --disable-shared --enable-bzlib --enable-zlib --enable-libfaac --extra-libs='-lx264 -lxvidcore -lmp3lame -lpthread -lm -lbz2 -lz -lpthread -lvpx -lass -lfontconfig -lexpat -lfreetype -lfaac -lx265 -lfdk-aac' --enable-libfdk-aac --disable-encoder=libgsm --disable-decoder=libgsm --disable-doc --enable-libvpx --enable-libass --enable-version3 --enable-nonfree --enable-libfreetype --pkg-config-flags=--static
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100

[mpegts @ 0x404f980] Could not find codec parameters for stream 1 (Unknown: none (EAC3 / 0x33434145)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'part.ts':

Duration: 00:00:19.06, start: 1.083400, bitrate: 125913 kb/s
Program 2

Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x1e2]: Unknown: none (EAC3 / 0x33434145)

Cannot map stream #0:1 - unsupported type.
If you want unsupported types ignored instead of failing, please use the -ignore_unknown option
If you want them copied, please use -copy_unknown

  1. COPY UNDECODABLE TRACK TO A TEMP AUDIO TS FILE:

ffmpeg281 -i part.ts -map 0:1 -copy_unknown -c copy audio.ts
ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers

built with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52)
configuration: --prefix=/home/dennisp/010_64 --enable-static --enable-postproc --enable-gpl --enable-avfilter --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libx265 --enable-pthreads --enable-swscale --enable-runtime-cpudetect --disable-devices --disable-avdevice --extra-ldflags=-static --disable-shared --enable-bzlib --enable-zlib --enable-libfaac --extra-libs='-lx264 -lxvidcore -lmp3lame -lpthread -lm -lbz2 -lz -lpthread -lvpx -lass -lfontconfig -lexpat -lfreetype -lfaac -lx265 -lfdk-aac' --enable-libfdk-aac --disable-encoder=libgsm --disable-decoder=libgsm --disable-doc --enable-libvpx --enable-libass --enable-version3 --enable-nonfree --enable-libfreetype --pkg-config-flags=--static
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100

[mpegts @ 0x3ad29a0] Could not find codec parameters for stream 1 (Unknown: none (EAC3 / 0x33434145)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'part.ts':

Duration: 00:00:19.06, start: 1.083400, bitrate: 125913 kb/s
Program 2

Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x1e2]: Unknown: none (EAC3 / 0x33434145)

Output #0, mpegts, to 'audio.ts':

Metadata:

encoder : Lavf56.40.101
Stream #0:0: Unknown: none (EAC3 / 0x33434145)

Stream mapping:

Stream #0:1 -> #0:0 (copy)

Press [q] to stop, ? for help
[mpegts @ 0x3ad29a0] PES packet size mismatch
size= 993kB time=00:00:18.20 bitrate= 446.7kbits/s
video:0kB audio:0kB subtitle:0kB other streams:854kB global headers:0kB muxing overhead: 16.271017%

  1. NEWLY CREATED AUDIO TS FILE IS DECODABLE:

fmpeg281 -i part.ts -map 0:1 -copy_unknown -c copy audio.ts
ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers

built with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52)
configuration: --prefix=/home/dennisp/010_64 --enable-static --enable-postproc --enable-gpl --enable-avfilter --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libx265 --enable-pthreads --enable-swscale --enable-runtime-cpudetect --disable-devices --disable-avdevice --extra-ldflags=-static --disable-shared --enable-bzlib --enable-zlib --enable-libfaac --extra-libs='-lx264 -lxvidcore -lmp3lame -lpthread -lm -lbz2 -lz -lpthread -lvpx -lass -lfontconfig -lexpat -lfreetype -lfaac -lx265 -lfdk-aac' --enable-libfdk-aac --disable-encoder=libgsm --disable-decoder=libgsm --disable-doc --enable-libvpx --enable-libass --enable-version3 --enable-nonfree --enable-libfreetype --pkg-config-flags=--static
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100

[mpegts @ 0x3ad29a0] Could not find codec parameters for stream 1 (Unknown: none (EAC3 / 0x33434145)): unknown codec
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'part.ts':

Duration: 00:00:19.06, start: 1.083400, bitrate: 125913 kb/s
Program 2

Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709), 3840x2160 [SAR 1:1 DAR 16:9], Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
Stream #0:1[0x1e2]: Unknown: none (EAC3 / 0x33434145)

Output #0, mpegts, to 'audio.ts':

Metadata:

encoder : Lavf56.40.101
Stream #0:0: Unknown: none (EAC3 / 0x33434145)

Stream mapping:

Stream #0:1 -> #0:0 (copy)

Press [q] to stop, ? for help
[mpegts @ 0x3ad29a0] PES packet size mismatch
size= 993kB time=00:00:18.20 bitrate= 446.7kbits/s
video:0kB audio:0kB subtitle:0kB other streams:854kB global headers:0kB muxing overhead: 16.271017%
[admin26@san-prod-drop-02 ~]$ ffmpeg281 -i audio.ts -f null /dev/null
ffmpeg version 2.8.1 Copyright (c) 2000-2015 the FFmpeg developers

built with gcc 4.1.2 (GCC) 20080704 (Red Hat 4.1.2-52)
configuration: --prefix=/home/dennisp/010_64 --enable-static --enable-postproc --enable-gpl --enable-avfilter --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libx265 --enable-pthreads --enable-swscale --enable-runtime-cpudetect --disable-devices --disable-avdevice --extra-ldflags=-static --disable-shared --enable-bzlib --enable-zlib --enable-libfaac --extra-libs='-lx264 -lxvidcore -lmp3lame -lpthread -lm -lbz2 -lz -lpthread -lvpx -lass -lfontconfig -lexpat -lfreetype -lfaac -lx265 -lfdk-aac' --enable-libfdk-aac --disable-encoder=libgsm --disable-decoder=libgsm --disable-doc --enable-libvpx --enable-libass --enable-version3 --enable-nonfree --enable-libfreetype --pkg-config-flags=--static
libavutil 54. 31.100 / 54. 31.100
libavcodec 56. 60.100 / 56. 60.100
libavformat 56. 40.101 / 56. 40.101
libavfilter 5. 40.101 / 5. 40.101
libswscale 3. 1.101 / 3. 1.101
libswresample 1. 2.101 / 1. 2.101
libpostproc 53. 3.100 / 53. 3.100

Input #0, mpegts, from 'audio.ts':

Duration: 00:00:18.21, start: 1.400000, bitrate: 446 kb/s
Program 1

Metadata:

service_name : Service01
service_provider: FFmpeg

Stream #0:0[0x100]: Audio: eac3 ([6][0][0][0] / 0x0006), 48000 Hz, 5.1(side), fltp, 384 kb/s

Output #0, null, to '/dev/null':

Metadata:

encoder : Lavf56.40.101
Stream #0:0: Audio: pcm_s16le, 48000 Hz, 5.1(side), s16, 4608 kb/s
Metadata:

encoder : Lavc56.60.100 pcm_s16le

Stream mapping:

Stream #0:0 -> #0:0 (eac3 (native) -> pcm_s16le (native))

Press [q] to stop, ? for help
[eac3 @ 0x29b3d40] incomplete frame
size=N/A time=00:00:18.24 bitrate=N/A
video:0kB audio:10260kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: unknown

Looking to decode original file without generating the temp file.

comment:4 by Carl Eugen Hoyos, 8 years ago

Component: undeterminedavformat
Priority: normalminor
Reproduced by developer: set
Status: newopen
Version: unspecifiedgit-master

Thank you for the sample, this is our main request from users!
Your file starts with a 13MB "header" that breaks auto-detection. this is also why your original upload was not helpful, please always (also) test the cut files you upload.
I sent a patch that helps a little but increased probesize is still necessary.

comment:5 by Carl Eugen Hoyos, 8 years ago

Analyzed by developer: set

comment:6 by Carl Eugen Hoyos, 8 years ago

The patch was applied, I don't know if this can be improved further.

comment:7 by Elon Musk, 5 years ago

Resolution: worksforme
Status: openclosed

comment:8 by Carl Eugen Hoyos, 5 years ago

Not sure if this can be improved but "worksforme" seems not ideal.

$ ffmpeg -i part.ts
ffmpeg version N-92507-g027f032 Copyright (c) 2000-2018 the FFmpeg developers
  built with gcc 6.4.0 (GCC)
  configuration: --enable-gpl --enable-gnutls --enable-libxml2
  libavutil      56. 23.101 / 56. 23.101
  libavcodec     58. 39.100 / 58. 39.100
  libavformat    58. 22.100 / 58. 22.100
  libavdevice    58.  6.100 / 58.  6.100
  libavfilter     7. 46.100 /  7. 46.100
  libswscale      5.  4.100 /  5.  4.100
  libswresample   3.  4.100 /  3.  4.100
  libpostproc    55.  4.100 / 55.  4.100
[mpegts @ 0x2228500] start time for stream 1 is not set in estimate_timings_from_pts
[mpegts @ 0x2228500] Could not find codec parameters for stream 1 (Audio: eac3 (EAC3 / 0x33434145), 0 channels, fltp): unspecified sample rate
Consider increasing the value for the 'analyzeduration' and 'probesize' options
Input #0, mpegts, from 'part.ts':
  Duration: 00:00:19.10, start: 1.083400, bitrate: 125638 kb/s
  Program 2
    Stream #0:0[0x1e1]: Video: h264 (High 4:2:2) ([27][0][0][0] / 0x001B), yuv422p10le(tv, bt709, progressive), 3840x2160 [SAR 1:1 DAR 16:9], Closed Captions, 23.98 fps, 23.98 tbr, 90k tbn, 47.95 tbc
    Stream #0:1[0x1e2]: Audio: eac3 (EAC3 / 0x33434145), 0 channels, fltp
At least one output file must be specified

It is not possible to decode the audio stream (with the ffmpeg tool) without specifying an increased probesize.

comment:9 by Hendrik, 5 years ago

If increasing the probesize helps, then thats not a decoder problem, but just an interleaving problem and/or cutting problem. The codec of the stream is irrelevant in that situation. Feel free to rename the ticket if you want to re-open it.

Last edited 5 years ago by Hendrik (previous) (diff)
Note: See TracTickets for help on using tickets.