[FFmpeg-trac] #3176(FFmpeg:new): Transcoding with -copyts does not work with some MPEG-TS files/streams

FFmpeg trac at avcodec.org
Wed Nov 27 21:17:12 CET 2013


#3176: Transcoding with -copyts does not work with some MPEG-TS files/streams
----------------------------------+--------------------------------------
             Reporter:  aurelien  |                     Type:  defect
               Status:  new       |                 Priority:  normal
            Component:  FFmpeg    |                  Version:  git-master
             Keywords:  copyts    |               Blocked By:
             Blocking:            |  Reproduced by developer:  0
Analyzed by developer:  0         |
----------------------------------+--------------------------------------
 Hello,

 ffmpeg is stuck when trying to transcode a video stream from some MPEG-TS
 files or streams (maybe other formats are affected).

 It seems the problem lies in do_video_out() of ffmpeg.c (showing only the
 relevant lines) :
 {{{
     sync_ipts = in_picture->pts;
     delta = sync_ipts - ost->sync_opts + duration;
     [...]
     case VSYNC_CFR:
         // FIXME set to 0.5 after we fix some dts/pts bugs like in
 avidec.c
         if (delta < -1.1)
             nb_frames = 0;
         else if (delta > 1.1)
             nb_frames = lrintf(delta);
     [...]
   /* duplicates frame if needed */
   for (i = 0; i < nb_frames; i++) {
     av_init_packet(&pkt);
     pkt.data = NULL;
     pkt.size = 0;
 }}}
 the lrintf() call sets nb_frames to a very huge value (since delta is
 huge) and the frame is then duplicated (in my example file i get
 nb_frames=2013400).

 My guess is that -copyts seems to work fine when the first pts is very
 close to 0 but not when it starts from a big value.

 I uploaded the sample copyts_pictures_dup.ts on the FTP.

 How to reproduce:
 {{{
 % ffmpeg -i /dump/copyts_pictures_dup.ts -copyts -an -vcodec libx264
 -profile:v baseline -r 25 -s 144x96 -b:v 200k -preset ultrafast -filter:v
 yadif -f mpegts -y /dev/null
 ffmpeg version N-58499-gb723c4e Copyright (c) 2000-2013 the FFmpeg
 developers
   built on Nov 27 2013 19:40:04 with gcc 4.7 (Debian 4.7.2-5)
   configuration: --prefix=/home/aurelien/local --enable-postproc --enable-
 nonfree --enable-gpl --enable-libfaac --enable-shared --enable-libx264
 --extra-cflags=-I/home/aurelien/local/include --extra-
 ldflags=-L/home/aurelien/local/lib --enable-version3 --disable-
 optimizations --enable-libfreetype --disable-stripping --enable-libaacplus
 --enable-libfdk-aac
   libavutil      52. 55.100 / 52. 55.100
   libavcodec     55. 44.100 / 55. 44.100
   libavformat    55. 21.102 / 55. 21.102
   libavdevice    55.  5.102 / 55.  5.102
   libavfilter     3. 91.100 /  3. 91.100
   libswscale      2.  5.101 /  2.  5.101
   libswresample   0. 17.104 /  0. 17.104
   libpostproc    52.  3.100 / 52.  3.100
 [h264 @ 0x1103c80] non-existing PPS referenced
 [h264 @ 0x1103c80] non-existing PPS 0 referenced
 [h264 @ 0x1103c80] decode_slice_header error
 [... non-existing PPS messages skipped ...]
 [mpegts @ 0x22c9b40] PES packet size mismatch
 Input #0, mpegts, from '/dump/copyts_pictures_dup.ts':
   Duration: 00:00:08.09, start: 80533.820156, bitrate: 9297 kb/s
   Program 234
     Stream #0:0[0x3fc]: Video: h264 (Main) ([27][0][0][0] / 0x001B),
 yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 25 fps, 50 tbr, 90k tbn,
 50 tbc
     Stream #0:1[0x3fd](fra): Audio: ac3 ([6][0][0][0] / 0x0006), 48000 Hz,
 5.1(side), fltp, 384 kb/s
     Stream #0:2[0x3fe](qaa): Audio: mp2 ([3][0][0][0] / 0x0003), 48000 Hz,
 stereo, s16p, 192 kb/s
 [libx264 @ 0x22d0040] using SAR=32/27
 [libx264 @ 0x22d0040] using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2
 AVX AVX2 FMA3 LZCNT BMI2
 [libx264 @ 0x22d0040] profile Constrained Baseline, level 1.3
 Output #0, mpegts, to '/dev/null':
   Metadata:
     encoder         : Lavf55.21.102
     Stream #0:0: Video: h264 (libx264), yuv420p, 144x96 [SAR 32:27 DAR
 16:9], q=-1--1, 200 kb/s, 90k tbn, 25 tbc
 Stream mapping:
   Stream #0:0 -> #0:0 (h264 -> libx264)
 Press [q] to stop, [?] for help
 [h264 @ 0x36b2d60] reference picture missing during reorder
 [h264 @ 0x36b2d60] Missing reference picture, default is 2147483647
 [h264 @ 0x3766840] mmco: unref short failure
 [h264 @ 0x398fa40] reference picture missing during reorder
 [h264 @ 0x398fa40] Missing reference picture, default is 65516
 [h264 @ 0x39fe440] mmco: unref short failure
 [h264 @ 0x36f7ec0] mmco: unref short failure
 [h264 @ 0x398fa40] mmco: unref short failure

 <<< need to Ctrl-C twice to kill ffmpeg from here >>>
 }}}

--
Ticket URL: <https://trac.ffmpeg.org/ticket/3176>
FFmpeg <http://ffmpeg.org>
FFmpeg issue tracker


More information about the FFmpeg-trac mailing list