Opened 8 years ago

Closed 8 years ago

#5216 closed defect (fixed)

"could not find corresponding track id 1" for DASH video from Kaltura.com

Reported by: yan12125 Owned by:
Priority: important Component: avformat
Version: git-master Keywords: mov regression
Cc: Blocked By:
Blocking: Reproduced by developer: yes
Analyzed by developer: no

Description

Summary of the bug:
ffprobe fails with the attached file. All further actions, including using ffmpeg for conversion, fails with the same error message, too.

Seems the problem exists since http://git.videolan.org/?p=ffmpeg.git;a=commitdiff;h=4ab56667594842283dc5ae07f0daba2a2cb4d3af. avprobe/avconv works fine as Libav does not include this commit.

How to reproduce:

$ LD_LIBRARY_PATH=~/tmp/FFmpeg/libavdevice:~/tmp/FFmpeg/libavfilter:~/tmp/FFmpeg/libavformat:~/tmp/FFmpeg/libavcodec:~/tmp/FFmpeg/libavresample:~/tmp/FFmpeg/libpostproc:~/tmp/FFmpeg/libswresample:~/tmp/FFmpeg/libswscale:~/tmp/FFmpeg/libavutil ~/tmp/FFmpeg/ffprobe_g -loglevel trace Straight\ from\ the\ Heart-1_1jc2y3e4.ff4-v1.unknown_video
ffprobe version N-78269-gc1b23e1 Copyright (c) 2007-2016 the FFmpeg developers
  built with gcc 5.3.0 (GCC)
  configuration: --prefix=/usr --disable-debug --disable-static --disable-stripping --enable-avisynth --enable-avresample --enable-fontconfig --enable-gnutls --enable-gpl --enable-ladspa --enable-libass --enable-libbluray --enable-libdcadec --enable-libfreetype --enable-libfribidi --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libopencore_amrnb --enable-libopencore_amrwb --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libssh --enable-libtheora --enable-libv4l2 --enable-libvidstab --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxvid --enable-shared --enable-version3 --enable-x11grab
  libavutil      55. 17.100 / 55. 17.100
  libavcodec     57. 24.101 / 57. 24.101
  libavformat    57. 24.100 / 57. 24.100
  libavdevice    57.  0.101 / 57.  0.101
  libavfilter     6. 28.100 /  6. 28.100
  libavresample   3.  0.  0 /  3.  0.  0
  libswscale      4.  0.100 /  4.  0.100
  libswresample   2.  0.101 /  2.  0.101
  libpostproc    54.  0.100 / 54.  0.100
[file @ 0x25cdf00] Setting default whitelist 'file'
Probing mov,mp4,m4a,3gp,3g2,mj2 score:100 size:2048
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] Format mov,mp4,m4a,3gp,3g2,mj2 probed with size=2048 and score=100
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 70797466 'ftyp' parent:'root' sz: 24 8 45867145
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] ISO: File Type Major Brand: isom
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 766f6f6d 'moov' parent:'root' sz: 628 32 45867145
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6468766d 'mvhd' parent:'moov' sz: 108 8 620
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] time scale = 1000
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 7865766d 'mvex' parent:'moov' sz: 40 116 620
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 78657274 'trex' parent:'mvex' sz: 32 8 32
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6b617274 'trak' parent:'moov' sz: 472 156 620
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 64686b74 'tkhd' parent:'trak' sz: 92 8 464
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6169646d 'mdia' parent:'trak' sz: 372 100 464
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6468646d 'mdhd' parent:'mdia' sz: 32 8 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 726c6468 'hdlr' parent:'mdia' sz: 45 40 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] ctype=  (0x00000000)
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] stype= vide
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 666e696d 'minf' parent:'mdia' sz: 287 85 364
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 64686d76 'vmhd' parent:'minf' sz: 20 8 279
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 666e6964 'dinf' parent:'minf' sz: 36 28 279
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 66657264 'dref' parent:'dinf' sz: 28 8 28
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type url  size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] Unknown dref type 0x08206c7275 size 12
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6c627473 'stbl' parent:'minf' sz: 223 64 279
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 64737473 'stsd' parent:'stbl' sz: 147 8 215
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] size=131 4CC= avc1/0x31637661 codec_type=0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 43637661 'avcC' parent:'stsd' sz: 45 8 45
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 73747473 'stts' parent:'stbl' sz: 16 155 215
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] track[0].stts.entries = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 63737473 'stsc' parent:'stbl' sz: 16 171 215
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] track[0].stsc.entries = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 7a737473 'stsz' parent:'stbl' sz: 20 187 215
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] sample_size = 0 sample_count = 0
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 6f637473 'stco' parent:'stbl' sz: 16 207 215
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 70797473 'styp' parent:'root' sz: 28 660 45867145
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] type: 78646973 'sidx' parent:'root' sz: 44 688 45867145
Track id = 2
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] could not find corresponding track id 1
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x25cd7c0] error reading header
[AVIOContext @ 0x25d61a0] Statistics: 32768 bytes read, 0 seeks
Straight from the Heart-1_1jc2y3e4.ff4-v1.unknown_video: Invalid data found when processing input

The steps to generate this file:

git clone https://github.com/remitamine/youtube-dl -b dash

Then apply this patch:

diff --git a/youtube_dl/extractor/kaltura.py b/youtube_dl/extractor/kaltura.py
index ccbc39c..0720fb4 100644
--- a/youtube_dl/extractor/kaltura.py
+++ b/youtube_dl/extractor/kaltura.py
@@ -165,8 +165,13 @@ class KalturaIE(InfoExtractor):
             m3u8_url += '?referrer=%s' % referrer
         formats.extend(self._extract_m3u8_formats(
             m3u8_url, entry_id, 'mp4', 'm3u8_native', m3u8_id='hls', fatal=False))
+        mpd_url = info['dataUrl'].replace('format/url', 'format/mpegdash')
+        if referrer:
+            mpd_url += '?referrer=%s' % referrer
+        formats.extend(self._extract_mpd_formats(
+            mpd_url, entry_id, fatal=False))

-        self._check_formats(formats, entry_id)
+        #self._check_formats(formats, entry_id)
         self._sort_formats(formats)

         return {

Finally run this command:

python ./youtube_dl/__main__.py -v -f bestvideo test:kaltura

Attachments (1)

Change History (7)

comment:1 by yan12125, 8 years ago

My file exceeds the size limit of trac.ffmpeg.org, so I paste the link here:

http://chyen.twbbs.org/downloads/Straight%20from%20the%20Heart-1_1jc2y3e4.unknown_video

comment:2 by Carl Eugen Hoyos, 8 years ago

Keywords: mov regression added
Priority: normalimportant
Reproduced by developer: set
Status: newopen

comment:3 by Carl Eugen Hoyos, 8 years ago

See also ticket #5090.

comment:4 by Ridley Combs, 8 years ago

This file looks invalid to me. It declares a stream with id=2, but all of its sidx indexes reference a nonexistent stream with id=1.

We could probably degrade gracefully for this case; I'm not sure if we should fallback on assuming the index is for the first stream that exists, or just ignore indexes for nonexistent streams.

comment:5 by yan12125, 8 years ago

This file is simply a concatenation of DASH segments found in the wild. I think ffmpeg should tolerate it. libav does not implement sidx and this file plays well in avplay, so wrong sidx is not fatal here I guess?

comment:6 by Timothy Gu, 8 years ago

Resolution: fixed
Status: openclosed
Note: See TracTickets for help on using tickets.