[FFmpeg-trac] #5800(undetermined:new): ffmpeg-git: Slow Start Transcode vs ffmpeg-2.8.7: Fast Start Transcode

FFmpeg trac at avcodec.org
Fri Aug 26 04:12:19 EEST 2016


#5800: ffmpeg-git: Slow Start Transcode vs ffmpeg-2.8.7: Fast Start Transcode
-------------------------------------+-------------------------------------
             Reporter:  barhom       |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 The Problem:

 In ffmpeg 2.8.7 we have noticed that there are a couple of videos that
 start up really quickly whilst when we tried 3.0.2, 3.1.2 and git the
 startup time for the transcode is incredibly slow.

 Try the command below to understand the issue in ffmpeg 2.8.7 and >3.0.2
 or git.

 This command:

 {{{
 ffmpeg -analyzeduration 1000000 -i http://www.netsat.se/channel.ts \
 -map 0:0 -map 0:1 -c:v libx264 -preset superfast -g 25 -b:v 900k \
 -maxrate 900k -bufsize 2000k -filter:v yadif -c:a libfdk_aac -b:a 64k \
 -f mpegts -metadata chan_id=300 -metadata timeshift=0 \
 "udp://239.240.127.64:3301?buffer_size=1316&pkt_size=1316" -loglevel 48
 }}}

 In FFmpeg-git this transcode-command starts in about 5 seconds.
 In FFmpeg-2.8.7 this transcode-command starts in about 1 second.


 Logs:

 ffmpeg-git (5s start time because of all the "probing stream 1 pp:")


 {{{
 ffmpeg -analyzeduration 1000000 -i http://www.netsat.se/channel.ts -map
 0:0 -map 0:1 -c:v libx264 -preset superfast -g 25 -b:v 900k -maxrate 900k
 -bufsize 2000k -filter:v yadif -c:a libfdk_aac -b:a 64k -f mpegts
 -metadata chan_id=300 -metadata timeshift=0
 "udp://239.240.127.64:3301?buffer_size=1316&pkt_size=1316" -loglevel 48
 ffmpeg version N-80789-gc5566f0 Copyright (c) 2000-2016 the FFmpeg
 developers
   built with gcc 4.9.2 (Debian 4.9.2-10)
   configuration: --prefix=/home/company/company_packages/ffmpeg_build
 --pkg-config-flags=--static --extra-
 cflags=-I/home/company/company_packages/ffmpeg_build/include --extra-
 ldflags=-L/home/company/company_packages/ffmpeg_build/lib
 --bindir=/home/company/company_packages/bin --enable-gpl --enable-libass
 --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-
 libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-
 nonfree --enable-libzvbi
   libavutil      55. 27.100 / 55. 27.100
   libavcodec     57. 48.101 / 57. 48.101
   libavformat    57. 40.101 / 57. 40.101
   libavdevice    57.  0.102 / 57.  0.102
   libavfilter     6. 46.102 /  6. 46.102
   libswscale      4.  1.100 /  4.  1.100
   libswresample   2.  1.100 /  2.  1.100
   libpostproc    54.  0.100 / 54.  0.100
 Splitting the commandline.
 Reading option '-analyzeduration' ... matched as AVOption
 'analyzeduration' with argument '1000000'.
 Reading option '-i' ... matched as input file with argument
 'http://www.netsat.se/channel.ts'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:0'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:1'.
 Reading option '-c:v' ... matched as option 'c' (codec name) with argument
 'libx264'.
 Reading option '-preset' ... matched as AVOption 'preset' with argument
 'superfast'.
 Reading option '-g' ... matched as AVOption 'g' with argument '25'.
 Reading option '-b:v' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '900k'.
 Reading option '-maxrate' ... matched as AVOption 'maxrate' with argument
 '900k'.
 Reading option '-bufsize' ... matched as AVOption 'bufsize' with argument
 '2000k'.
 Reading option '-filter:v' ... matched as option 'filter' (set stream
 filtergraph) with argument 'yadif'.
 Reading option '-c:a' ... matched as option 'c' (codec name) with argument
 'libfdk_aac'.
 Reading option '-b:a' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '64k'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'mpegts'.
 Reading option '-metadata' ... matched as option 'metadata' (add metadata)
 with argument 'chan_id=300'.
 Reading option '-metadata' ... matched as option 'metadata' (add metadata)
 with argument 'timeshift=0'.
 Reading option 'udp://239.240.127.64:3301?buffer_size=1316&pkt_size=1316'
 ... matched as output file.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument '48'.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument 48.
 Successfully parsed a group of options.
 Parsing a group of options: input file http://www.netsat.se/channel.ts.
 Successfully parsed a group of options.
 Opening an input file: http://www.netsat.se/channel.ts.
 [http @ 0x3f2ce60] Setting default whitelist
 'http,https,tls,rtp,tcp,udp,crypto,httpproxy'
 [http @ 0x3f2ce60] request: GET /channel.ts HTTP/1.1
 User-Agent: Lavf/57.40.101
 Accept: */*
 Range: bytes=0-
 Connection: close
 Host: www.netsat.se
 Icy-MetaData: 1


 [mpegts @ 0x3f2c7a0] Format mpegts probed with size=2048 and score=50
 [mpegts @ 0x3f2c7a0] stream=0 stream_type=2 pid=83f prog_reg_desc=
 [mpegts @ 0x3f2c7a0] stream=1 stream_type=4 pid=8a3 prog_reg_desc=
 [mpegts @ 0x3f2c7a0] Before avformat_find_stream_info() pos: 0 bytes
 read:49026 seeks:0 nb_streams:2
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2500
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2499
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2498
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2497
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2496
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2495
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2494
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2493
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2492
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2491
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2490
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2489
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2488
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2487
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2486
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2485
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2484
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2483
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2482
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2481
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2480
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2479
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2478
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2477
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2476
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2475
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2474
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2473
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2472
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2471
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2470
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2469
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2468
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2467
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2466
 [mpegts @ 0x3f2c7a0] probing stream 1 pp:2465
 [mpegts @ 0x3f2c7a0] Probe with size=102480, packets=2500 detected mp3
 with score=50
 [mpegts @ 0x3f2c7a0] probed stream 1
 [mp2 @ 0x3f3d9e0] Header missing
 [mpegts @ 0x3f2c7a0] max_analyze_duration 1000000 reached at 1008000
 microseconds st:1
 [mpegts @ 0x3f2c7a0] After avformat_find_stream_info() pos: 2787288 bytes
 read:2789244 seeks:0 frames:67
 Input #0, mpegts, from 'http://www.netsat.se/channel.ts':
   Duration: N/A, start: 22346.331678, bitrate: N/A
   Program 1811
     Metadata:
       service_name    : Syrian Drama TV
       service_provider: JMC
     Stream #0:0[0x83f], 23, 1/90000: Video: mpeg2video (Main), 1 reference
 frame ([2][0][0][0] / 0x0002), yuv420p(tv, left), 720x576 [SAR 16:15 DAR
 4:3], 0/1, 25 fps, 25 tbr, 90k tbn, 50 tbc
     Stream #0:1[0x8a3](ara), 44, 1/90000: Audio: mp2 ([4][0][0][0] /
 0x0004), 48000 Hz, stereo, s16p, 160 kb/s
 }}}


 vs

 ffmpeg-2.8.7 (1s start time - I dont see any  "probing stream 1 pp:")


 {{{
 ffmpeg -analyzeduration 1000000 -i http://www.netsat.se/channel.ts -map
 0:0 -map 0:1 -c:v libx264 -preset superfast -g 25 -b:v 900k -maxrate 900k
 -bufsize 2000k -filter:v yadif -c:a libfdk_aac -b:a 64k -f mpegts
 -metadata chan_id=300 -metadata timeshift=0
 "udp://239.240.127.64:3301?buffer_size=1316&pkt_size=1316" -loglevel 48
 ffmpeg version 2.8.7 Copyright (c) 2000-2016 the FFmpeg developers
   built with gcc 4.9.2 (Debian 4.9.2-10)
   configuration: --prefix=/home/company/company_packages/ffmpeg_build
 --pkg-config-flags=--static --extra-
 cflags=-I/home/company/company_packages/ffmpeg_build/include --extra-
 ldflags=-L/home/company/company_packages/ffmpeg_build/lib
 --bindir=/home/company/company_packages/bin --enable-gpl --enable-libass
 --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-
 libtheora --enable-libvorbis --enable-libx264 --enable-libx265 --enable-
 nonfree --enable-libzvbi
   libavutil      54. 31.100 / 54. 31.100
   libavcodec     56. 60.100 / 56. 60.100
   libavformat    56. 40.101 / 56. 40.101
   libavdevice    56.  4.100 / 56.  4.100
   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
 Splitting the commandline.
 Reading option '-analyzeduration' ... matched as AVOption
 'analyzeduration' with argument '1000000'.
 Reading option '-i' ... matched as input file with argument
 'http://www.netsat.se/channel.ts'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:0'.
 Reading option '-map' ... matched as option 'map' (set input stream
 mapping) with argument '0:1'.
 Reading option '-c:v' ... matched as option 'c' (codec name) with argument
 'libx264'.
 Reading option '-preset' ... matched as AVOption 'preset' with argument
 'superfast'.
 Reading option '-g' ... matched as AVOption 'g' with argument '25'.
 Reading option '-b:v' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '900k'.
 Reading option '-maxrate' ... matched as AVOption 'maxrate' with argument
 '900k'.
 Reading option '-bufsize' ... matched as AVOption 'bufsize' with argument
 '2000k'.
 Reading option '-filter:v' ... matched as option 'filter' (set stream
 filtergraph) with argument 'yadif'.
 Reading option '-c:a' ... matched as option 'c' (codec name) with argument
 'libfdk_aac'.
 Reading option '-b:a' ... matched as option 'b' (video bitrate (please use
 -b:v)) with argument '64k'.
 Reading option '-f' ... matched as option 'f' (force format) with argument
 'mpegts'.
 Reading option '-metadata' ... matched as option 'metadata' (add metadata)
 with argument 'chan_id=300'.
 Reading option '-metadata' ... matched as option 'metadata' (add metadata)
 with argument 'timeshift=0'.
 Reading option 'udp://239.240.127.64:3301?buffer_size=1316&pkt_size=1316'
 ... matched as output file.
 Reading option '-loglevel' ... matched as option 'loglevel' (set logging
 level) with argument '48'.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option loglevel (set logging level) with argument 48.
 Successfully parsed a group of options.
 Parsing a group of options: input file http://www.netsat.se/channel.ts.
 Successfully parsed a group of options.
 Opening an input file: http://www.netsat.se/channel.ts.
 [http @ 0x3fcd0e0] request: GET /channel.ts HTTP/1.1
 User-Agent: Lavf/56.40.101
 Accept: */*
 Range: bytes=0-
 Connection: close
 Host: www.netsat.se
 Icy-MetaData: 1


 [mpegts @ 0x3fcc7a0] Format mpegts probed with size=2048 and score=100
 [mpegts @ 0x3fcc7a0] stream=0 stream_type=2 pid=83f prog_reg_desc=
 [mpegts @ 0x3fcc7a0] stream=1 stream_type=4 pid=8a3 prog_reg_desc=
 [mpegts @ 0x3fcc7a0] Before avformat_find_stream_info() pos: 0 bytes
 read:109508 seeks:0
 [mp3 @ 0x3fdcb40] Header missing
 [mpegts @ 0x3fcc7a0] max_analyze_duration 1000000 reached at 1008000
 microseconds st:1
 [mpegts @ 0x3fcc7a0] After avformat_find_stream_info() pos: 692404 bytes
 read:696186 seeks:0 frames:67
 Input #0, mpegts, from 'http://www.netsat.se/channel.ts':
   Duration: N/A, start: 22572.219678, bitrate: N/A
   Program 1811
     Metadata:
       service_name    : Syrian Drama TV
       service_provider: JMC
     Stream #0:0[0x83f], 23, 1/90000: Video: mpeg2video (Main), 1 reference
 frame ([2][0][0][0] / 0x0002), yuv420p(tv, left), 720x576 [SAR 16:15 DAR
 4:3], 1/50, max. 15000 kb/s, 25 fps, 25 tbr, 90k tbn, 50 tbc
     Stream #0:1[0x8a3](ara), 44, 1/90000: Audio: mp2 ([4][0][0][0] /
 0x0004), 48000 Hz, stereo, s16p, 160 kb/s
 }}}



 (Side note: I know the logs above show ffmpeg "N-80789-gc5566f0" which is
 not latest git  - but I have tried this on latest git as well so we know
 the issue is there)


 Does anyone know why this command is slow-starting in ffmpeg newer than
 2.8.7 ?

 Thanks

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


More information about the FFmpeg-trac mailing list