[FFmpeg-trac] #7911(undetermined:new): Try to change the speed of a video without transcoding

FFmpeg trac at avcodec.org
Sun May 19 17:44:02 EEST 2019


#7911: Try to change the speed of a video without transcoding
-------------------------------------+-------------------------------------
             Reporter:  flaf         |                     Type:  defect
               Status:  new          |                 Priority:  normal
            Component:               |                  Version:
  undetermined                       |  unspecified
             Keywords:               |               Blocked By:
             Blocking:               |  Reproduced by developer:  0
Analyzed by developer:  0            |
-------------------------------------+-------------------------------------
 Hi,

 Warning, I'm a noob in videos, ffmpeg etc. I want to change the speed of a
 video and keep the same quality (just change the speed when the video is
 read by a player. NB: I don't care about the sound here). After some helps
 in a forum, here what I have tryied on my Ubuntu 18.04:

 {{{
 cd /tmp
 git clone https://github.com/FFmpeg/FFmpeg.git && cd FFmpeg

 mkdir /tmp/ffmpeg # the prefix
 ./configure --prefix=/tmp/ffmpeg --disable-x86asm && make && make install

 cd /tmp/ffmpeg
 mv ~/myvideo.mp4 .



 $ ./bin/ffmpeg -report -r 10 -i myvideo.mp4 -an -c copy myvideo-slow.mp4
 ffmpeg started on 2019-05-19 at 16:38:21
 Report written to "ffmpeg-20190519-163821.log"
 ffmpeg version N-93886-gfbdb3aa179 Copyright (c) 2000-2019 the FFmpeg
 developers
   built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04)
   configuration: --prefix=/tmp/ffmpeg --disable-x86asm
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.101 / 58. 52.101
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 53.101 /  7. 53.101
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'myvideo.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: isommp42
     creation_time   : 2019-05-19T14:25:04.000000Z
     location        : +48.7278+002.2696/
     location-eng    : +48.7278+002.2696/
     com.android.version: 9
     com.android.capture.fps: 240.000000
   Duration: 00:00:03.59, start: 0.000000, bitrate: 72359 kb/s
     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709/bt709/smpte170m), 1920x1080, 72552 kb/s, SAR 1:1 DAR 16:9, 239.64
 fps, 240 tbr, 90k tbn, 180k tbc (default)
     Metadata:
       rotate          : 90
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : VideoHandle
     Side data:
       displaymatrix: rotation of -90.00 degrees
     Stream #0:1(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo,
 fltp, 256 kb/s (default)
     Metadata:
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : SoundHandle
 Output #0, mp4, to 'myvideo-slow.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: isommp42
     com.android.capture.fps: 240.000000
     location        : +48.7278+002.2696/
     location-eng    : +48.7278+002.2696/
     com.android.version: 9
     encoder         : Lavf58.27.103
     Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv,
 bt709/bt709/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31, 72552 kb/s,
 239.64 fps, 240 tbr, 10240 tbn, 10 tbc (default)
     Metadata:
       rotate          : 90
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : VideoHandle
     Side data:
       displaymatrix: rotation of -90.00 degrees
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 frame=  854 fps=0.0 q=-1.0 Lsize=   31571kB time=00:00:03.55
 bitrate=72657.5kbits/s speed= 193x
 video:31561kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.030221%



 $ cat ffmpeg-20190519-163821.log
 ffmpeg started on 2019-05-19 at 16:38:21
 Report written to "ffmpeg-20190519-163821.log"
 Command line:
 ./bin/ffmpeg -report -r 10 -i myvideo.mp4 -an -c copy myvideo-slow.mp4
 ffmpeg version N-93886-gfbdb3aa179 Copyright (c) 2000-2019 the FFmpeg
 developers
   built with gcc 7 (Ubuntu 7.4.0-1ubuntu1~18.04)
   configuration: --prefix=/tmp/ffmpeg --disable-x86asm
   libavutil      56. 28.100 / 56. 28.100
   libavcodec     58. 52.101 / 58. 52.101
   libavformat    58. 27.103 / 58. 27.103
   libavdevice    58.  7.100 / 58.  7.100
   libavfilter     7. 53.101 /  7. 53.101
   libswscale      5.  4.101 /  5.  4.101
   libswresample   3.  4.100 /  3.  4.100
 Splitting the commandline.
 Reading option '-report' ... matched as option 'report' (generate a
 report) with argument '1'.
 Reading option '-r' ... matched as option 'r' (set frame rate (Hz value,
 fraction or abbreviation)) with argument '10'.
 Reading option '-i' ... matched as input url with argument 'myvideo.mp4'.
 Reading option '-an' ... matched as option 'an' (disable audio) with
 argument '1'.
 Reading option '-c' ... matched as option 'c' (codec name) with argument
 'copy'.
 Reading option 'myvideo-slow.mp4' ... matched as output url.
 Finished splitting the commandline.
 Parsing a group of options: global .
 Applying option report (generate a report) with argument 1.
 Successfully parsed a group of options.
 Parsing a group of options: input url myvideo.mp4.
 Applying option r (set frame rate (Hz value, fraction or abbreviation))
 with argument 10.
 Successfully parsed a group of options.
 Opening an input file: myvideo.mp4.
 [NULL @ 0x55f03efa4ac0] Opening 'myvideo.mp4' for reading
 [file @ 0x55f03efa6e00] Setting default whitelist 'file,crypto'
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] Format mov,mp4,m4a,3gp,3g2,mj2
 probed with size=2048 and score=100
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] ISO: File Type Major Brand:
 mp42
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] Unknown dref type 0x206c7275
 size 12
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] Unknown dref type 0x206c7275
 size 12
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] rfps: 240.000000 0.000580
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] rfps: 240.000000 0.018833
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] Before
 avformat_find_stream_info() pos: 32444092 bytes read:43140 seeks:1
 nb_streams:2
 [h264 @ 0x55f03efa8840] nal_unit_type: 7(SPS), nal_ref_idc: 3
 [h264 @ 0x55f03efa8840] nal_unit_type: 8(PPS), nal_ref_idc: 3
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 3
 [h264 @ 0x55f03efa8840] nal_unit_type: 5(IDR), nal_ref_idc: 3
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (34 bits)
 [h264 @ 0x55f03efa8840] Format yuv420p chosen by get_format().
 [h264 @ 0x55f03efa8840] Reinit context to 1920x1088, pix_fmt: yuv420p
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (31 bits)
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (34 bits)
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (31 bits)
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (34 bits)
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 0
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (31 bits)
 [h264 @ 0x55f03efa8840] nal_unit_type: 14(Prefix), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] nal_unit_type: 1(Coded slice of a non-IDR
 picture), nal_ref_idc: 1
 [h264 @ 0x55f03efa8840] Unknown NAL code: 14 (34 bits)
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] Probe buffer size limit of
 5000000 bytes reached
 [mov,mp4,m4a,3gp,3g2,mj2 @ 0x55f03efa4ac0] After
 avformat_find_stream_info() pos: 5025103 bytes read:5099880 seeks:2
 frames:128
 Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'myvideo.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: isommp42
     creation_time   : 2019-05-19T14:25:04.000000Z
     location        : +48.7278+002.2696/
     location-eng    : +48.7278+002.2696/
     com.android.version: 9
     com.android.capture.fps: 240.000000
   Duration: 00:00:03.59, start: 0.000000, bitrate: 72359 kb/s
     Stream #0:0(eng), 128, 1/90000: Video: h264 (High) (avc1 /
 0x31637661), yuv420p(tv, bt709/bt709/smpte170m), 1920x1080, 72552 kb/s,
 SAR 1:1 DAR 16:9, 239.64 fps, 240 tbr, 90k tbn, 180k tbc (default)
     Metadata:
       rotate          : 90
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : VideoHandle
     Side data:
       displaymatrix: rotation of -90.00 degrees
     Stream #0:1(eng), 0, 1/48000: Audio: aac (mp4a / 0x6134706D), 48000
 Hz, stereo, fltp, 256 kb/s (default)
     Metadata:
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : SoundHandle
 Successfully opened the file.
 Parsing a group of options: output url myvideo-slow.mp4.
 Applying option an (disable audio) with argument 1.
 Applying option c (codec name) with argument copy.
 Successfully parsed a group of options.
 Opening an output file: myvideo-slow.mp4.
 [file @ 0x55f03efea400] Setting default whitelist 'file,crypto'
 Successfully opened the file.
 Output #0, mp4, to 'myvideo-slow.mp4':
   Metadata:
     major_brand     : mp42
     minor_version   : 0
     compatible_brands: isommp42
     com.android.capture.fps: 240.000000
     location        : +48.7278+002.2696/
     location-eng    : +48.7278+002.2696/
     com.android.version: 9
     encoder         : Lavf58.27.103
     Stream #0:0(eng), 0, 1/10240: Video: h264 (High) (avc1 / 0x31637661),
 yuv420p(tv, bt709/bt709/smpte170m), 1920x1080 [SAR 1:1 DAR 16:9], q=2-31,
 72552 kb/s, 239.64 fps, 240 tbr, 10240 tbn, 10 tbc (default)
     Metadata:
       rotate          : 90
       creation_time   : 2019-05-19T14:25:04.000000Z
       handler_name    : VideoHandle
     Side data:
       displaymatrix: rotation of -90.00 degrees
 Stream mapping:
   Stream #0:0 -> #0:0 (copy)
 Press [q] to stop, [?] for help
 cur_dts is invalid st:0 (0) [init:1 i_done:0 finish:0] (this is harmless
 if it occurs once at the start per stream)
 No more output streams to write to, finishing.
 frame=  854 fps=0.0 q=-1.0 Lsize=   31571kB time=00:00:03.55
 bitrate=72657.5kbits/s speed= 193x
 video:31561kB audio:0kB subtitle:0kB other streams:0kB global headers:0kB
 muxing overhead: 0.030221%
 Input file #0 (myvideo.mp4):
   Input stream #0:0 (video): 854 packets read (32318908 bytes);
   Input stream #0:1 (audio): 0 packets read (0 bytes);
   Total: 854 packets (32318908 bytes) demuxed
 Output file #0 (myvideo-slow.mp4):
   Output stream #0:0 (video): 854 packets muxed (32318908 bytes);
   Total: 854 packets (32318908 bytes) muxed
 0 frames successfully decoded, 0 decoding errors
 [AVIOContext @ 0x55f03efaa900] Statistics: 2 seeks, 127 writeouts
 [AVIOContext @ 0x55f03efaf280] Statistics: 32407367 bytes read, 4 seeks
 }}}

 After this, the speed of the new video is unchanged.
 Thanks for your help.

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


More information about the FFmpeg-trac mailing list