[FFmpeg-trac] #5763(ffmpeg:new): copy via HTTP with no transcode very slow for MOV vs. MP4

FFmpeg trac at avcodec.org
Wed Aug 10 01:47:13 EEST 2016


#5763: copy via HTTP with no transcode very slow for MOV vs. MP4
-------------------------------------+-------------------------------------
             Reporter:               |                     Type:  defect
  dheidebrecht                       |                 Priority:  normal
               Status:  new          |                  Version:
            Component:  ffmpeg       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Summary of the bug: Copying a section from an MOV file with no transcoding
 via HTTP is very slow compared to the same operation on an MP4 file. In
 the example below - MOV elapsed time is 11 minutes, MP4 elapsed time is ~
 8 seconds.

 How to reproduce: The original test file is an 85Mb MOV file, the MP4
 comparison file was created by converting the MOV file to MP4:

 {{{
 ffmpeg -i test.mov -c copy test-copy.mp4
 }}}

 The MOV and MP4 files are both publicly available on S3:

 https://s3.amazonaws.com/unclipvideo-test/test.mov
 https://s3.amazonaws.com/unclipvideo-test/test-copy.mp4

 MOV and MP4 example test output:

 MOV test
 {{{
 time ./ffmpeg -ss 5 -i https://s3.amazonaws.com/unclipvideo-test/test.mov
 -t 15 -c copy test-s3.mov
 ffmpeg version N-81504-g1fb8f6b-tessus Copyright (c) 2000-2016 the FFmpeg
 developers
   built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM
 3.5svn)
   configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm
 --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm
 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora
 --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-
 libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-
 libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-
 ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
   libavutil      55. 28.100 / 55. 28.100
   libavcodec     57. 51.100 / 57. 51.100
   libavformat    57. 46.100 / 57. 46.100
   libavdevice    57.  0.102 / 57.  0.102
   libavfilter     6. 49.100 /  6. 49.100
   libswscale      4.  1.100 /  4.  1.100
   libswresample   2.  1.100 /  2.  1.100
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3.amazonaws.com
 /unclipvideo-test/test.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     creation_time   : 2016-07-31 22:04:54
     com.apple.quicktime.location.ISO6709: +41.3207-071.9074-000.385/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.3.3
     com.apple.quicktime.creationdate: 2016-07-31T18:04:54-0400
   Duration: 00:00:40.80, start: 0.000000, bitrate: 17134 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709), 1920x1080, 17042 kb/s, 29.98 fps, 29.97 tbr, 600 tbn, 1200 tbc
 (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
       encoder         : H.264
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono,
 fltp, 82 kb/s (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
     Stream #0:2(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
     Stream #0:3(und): Data: none (mebx / 0x7862656D), 0 kb/s (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
 [mov @ 0x7fe6f3002e00] Using AVStream.codec to pass codec parameters to
 muxers is deprecated, use AVStream.codecpar instead.
     Last message repeated 1 times
 Output #0, mov, to 'test-s3.mov':
   Metadata:
     major_brand     : qt
     minor_version   : 0
     compatible_brands: qt
     com.apple.quicktime.creationdate: 2016-07-31T18:04:54-0400
     com.apple.quicktime.location.ISO6709: +41.3207-071.9074-000.385/
     com.apple.quicktime.make: Apple
     com.apple.quicktime.model: iPhone 6s
     com.apple.quicktime.software: 9.3.3
     encoder         : Lavf57.46.100
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709), 1920x1080, q=2-31, 17042 kb/s, 29.98 fps, 29.97 tbr, 19200 tbn,
 600 tbc (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
       encoder         : H.264
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono,
 82 kb/s (default)
     Metadata:
       creation_time   : 2016-07-31 22:04:54
       handler_name    : Core Media Data Handler
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 frame=  480 fps=0.7 q=-1.0 Lsize=   33291kB time=00:00:15.01
 bitrate=18162.3kbits/s speed=0.0227x
 video:33113kB audio:163kB subtitle:0kB other streams:0kB global
 headers:0kB muxing overhead: 0.044288%

 real    11m5.040s
 user    0m3.638s
 sys     0m1.768s
 }}}

 MP4 test:
 {{{
 time ./ffmpeg -ss 5 -i https://s3.amazonaws.com/unclipvideo-test/test-
 copy.mp4 -t 15 -c copy test-s3.mp4
 ffmpeg version N-81504-g1fb8f6b-tessus Copyright (c) 2000-2016 the FFmpeg
 developers
   built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM
 3.5svn)
   configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --as=yasm
 --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl
 --enable-libass --enable-libbluray --enable-libfreetype --enable-libgsm
 --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb
 --enable-libopencore-amrwb --enable-libopus --enable-libschroedinger
 --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora
 --enable-libvidstab --enable-libvo-amrwbenc --enable-libvorbis --enable-
 libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-
 libxavs --enable-libxvid --enable-libzmq --enable-version3 --disable-
 ffplay --disable-indev=qtkit --disable-indev=x11grab_xcb
   libavutil      55. 28.100 / 55. 28.100
   libavcodec     57. 51.100 / 57. 51.100
   libavformat    57. 46.100 / 57. 46.100
   libavdevice    57.  0.102 / 57.  0.102
   libavfilter     6. 49.100 /  6. 49.100
   libswscale      4.  1.100 /  4.  1.100
   libswresample   2.  1.100 /  2.  1.100
   libpostproc    54.  0.100 / 54.  0.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'https://s3.amazonaws.com
 /unclipvideo-test/test-copy.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.25.100
   Duration: 00:00:40.87, start: 0.000000, bitrate: 17102 kb/s
     Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709), 1920x1080, 17042 kb/s, 29.98 fps, 29.97 tbr, 19200 tbn, 38400 tbc
 (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, mono,
 fltp, 82 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
 [mp4 @ 0x7fcc5901ac00] Using AVStream.codec to pass codec parameters to
 muxers is deprecated, use AVStream.codecpar instead.
     Last message repeated 1 times
 Output #0, mp4, to 'test-s3.mp4':
   Metadata:
     major_brand     : isom
     minor_version   : 512
     compatible_brands: isomiso2avc1mp41
     encoder         : Lavf57.46.100
     Stream #0:0(und): Video: h264 (High) ([33][0][0][0] / 0x0021),
 yuv420p(tv, bt709), 1920x1080, q=2-31, 17042 kb/s, 29.98 fps, 29.97 tbr,
 19200 tbn, 19200 tbc (default)
     Metadata:
       handler_name    : VideoHandler
     Stream #0:1(und): Audio: aac (LC) ([64][0][0][0] / 0x0040), 44100 Hz,
 mono, 82 kb/s (default)
     Metadata:
       handler_name    : SoundHandler
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
   Stream #0:1 -> #0:1 (copy)
 Press [q] to stop, [?] for help
 frame=  480 fps=104 q=-1.0 Lsize=   33291kB time=00:00:15.01
 bitrate=18162.2kbits/s speed=3.25x
 video:33113kB audio:163kB subtitle:0kB other streams:0kB global
 headers:0kB muxing overhead: 0.044021%

 real    0m7.502s
 user    0m0.290s
 sys     0m0.203s
 }}}

 ffmpeg version:
 {{{
 ffmpeg version N-81504-g1fb8f6b-tessus Copyright (c) 2000-2016 the FFmpeg
 developers
 built with Apple LLVM version 6.0 (clang-600.0.57) (based on LLVM 3.5svn)
 }}}

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


More information about the FFmpeg-trac mailing list