Opened 7 weeks ago

Last modified 2 weeks ago

#11338 new defect

Error transcoding from dv source - fps 60000 is too large

Reported by: Paul Londino Owned by:
Priority: normal Component: ffmpeg
Version: 6.1.1 Keywords: quicktime dv 60000
Cc: Blocked By:
Blocking: Reproduced by developer: no
Analyzed by developer: no

Description

Summary of the bug:

I am trying to rewrap a DV in a QuickTime container but getting an error "fps 60000 is too large" (preceded by a log message "Using non-standard frame rate 60000/1"). The files appear to be 30000/1001 in a few tools I checked (QuickTime, VLC, MediaInfo, AtomBox). The files transcode without issue in FFMPEG 6.0.1 but not in 6.1. The issue persist in the latest build I tested (N-118022-gca889b1328-tessus).

How to reproduce:

% ffmpeg -i input.dv -map 0 -c copy output.mov 
ffmpeg version N-118022-gca889b1328-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.4)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libharfbuzz --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      59. 49.100 / 59. 49.100
  libavcodec     61. 26.100 / 61. 26.100
  libavformat    61.  9.100 / 61.  9.100
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  6.101 / 10.  6.101
  libswscale      8. 12.100 /  8. 12.100
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100
[dv @ 0x7fb360904f80] Estimating duration from bitrate, this may be inaccurate
Input #0, dv, from 'input.dv':
  Metadata:
    timecode        : 00:02:14;12
  Duration: 00:00:49.52, start: 0.000000, bitrate: 28771 kb/s
  Stream #0:0: Video: dvvideo, yuv411p, 720x480 [SAR 8:9 DAR 4:3], 28771 kb/s, 60k fps, 29.97 tbr, 60k tbn
  Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
[mov @ 0x7fb360906b00] Using non-standard frame rate 60000/1
    Last message repeated 1 times
Output #0, mov, to 'output.mov':
  Metadata:
    timecode        : 00:02:14;12
    encoder         : Lavf61.9.100
  Stream #0:0: Video: dvvideo (dvcp / 0x70637664), yuv411p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 28771 kb/s, 60k fps, 29.97 tbr, 60k tbn
  Stream #0:1: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
Press [q] to stop, [?] for help
fps 60000 is too large
[out#0/mov @ 0x7fb360905c40] Error writing trailer: Invalid argument
[out#0/mov @ 0x7fb360905c40] video:173906KiB audio:9284KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: 0.013578%
frame= 1484 fps=0.0 q=-1.0 Lsize=  183215KiB time=00:00:49.51 bitrate=30311.3kbits/s speed= 947x    
Conversion failed!

Using ffmpeg 6.0.1:

ffmpeg-6.0.1 -i input.dv -map 0 -c copy output.mov

ffmpeg version 6.0.1-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2023 the FFmpeg developers
  built with Apple clang version 11.0.0 (clang-1100.0.33.17)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      58.  2.100 / 58.  2.100
  libavcodec     60.  3.100 / 60.  3.100
  libavformat    60.  3.100 / 60.  3.100
  libavdevice    60.  1.100 / 60.  1.100
  libavfilter     9.  3.100 /  9.  3.100
  libswscale      7.  1.100 /  7.  1.100
  libswresample   4. 10.100 /  4. 10.100
  libpostproc    57.  1.100 / 57.  1.100
[dv @ 0x7faa2a805380] Estimating duration from bitrate, this may be inaccurate
Input #0, dv, from 'input.dv':
  Metadata:
    timecode        : 00:02:14;12
  Duration: 00:00:49.52, start: 0.000000, bitrate: 28771 kb/s
  Stream #0:0: Video: dvvideo, yuv411p, 720x480 [SAR 8:9 DAR 4:3], 25000 kb/s, 29.97 fps, 29.97 tbr, 29.97 tbn
  Stream #0:1: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Output #0, mov, to 'output.mov':
  Metadata:
    timecode        : 00:02:14;12
    encoder         : Lavf60.3.100
  Stream #0:0: Video: dvvideo (dvcp / 0x70637664), yuv411p, 720x480 [SAR 8:9 DAR 4:3], q=2-31, 25000 kb/s, 29.97 fps, 29.97 tbr, 30k tbn
  Stream #0:1: Audio: pcm_s16le (sowt / 0x74776F73), 48000 Hz, stereo, s16, 1536 kb/s
Stream mapping:
  Stream #0:0 -> #0:0 (copy)
  Stream #0:1 -> #0:1 (copy)
Press [q] to stop, [?] for help
frame= 1484 fps=0.0 q=-1.0 Lsize=  183216kB time=00:00:49.48 bitrate=30331.8kbits/s speed= 806x    
video:173906kB audio:9284kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.013663%

The sources are dv files I used FFMPEG to capture via Firewire. I also used FFMPEG to create dv files from other sources, but those have the same issue in modern (>6.0.1) versions.

Full output of input file:

ffmpeg -v 9 -loglevel 99 -i input.dv
ffmpeg version N-118022-gca889b1328-tessus  https://evermeet.cx/ffmpeg/  Copyright (c) 2000-2024 the FFmpeg developers
  built with Apple clang version 16.0.0 (clang-1600.0.26.4)
  configuration: --cc=/usr/bin/clang --prefix=/opt/ffmpeg --extra-version=tessus --enable-avisynth --enable-fontconfig --enable-gpl --enable-libaom --enable-libass --enable-libbluray --enable-libdav1d --enable-libfreetype --enable-libgsm --enable-libharfbuzz --enable-libmodplug --enable-libmp3lame --enable-libmysofa --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenh264 --enable-libopenjpeg --enable-libopus --enable-librubberband --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvmaf --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxml2 --enable-libxvid --enable-libzimg --enable-libzmq --enable-libzvbi --enable-version3 --pkg-config-flags=--static --disable-ffplay
  libavutil      59. 49.100 / 59. 49.100
  libavcodec     61. 26.100 / 61. 26.100
  libavformat    61.  9.100 / 61.  9.100
  libavdevice    61.  4.100 / 61.  4.100
  libavfilter    10.  6.101 / 10.  6.101
  libswscale      8. 12.100 /  8. 12.100
  libswresample   5.  4.100 /  5.  4.100
  libpostproc    58.  4.100 / 58.  4.100
Splitting the commandline.
Reading option '-v' ... matched as option 'v' (set logging level) with argument '9'.
Reading option '-loglevel' ... matched as option 'loglevel' (set logging level) with argument '99'.
Reading option '-i' ... matched as input url with argument 'input.dv'.
Finished splitting the commandline.
Parsing a group of options: global .
Applying option v (set logging level) with argument 9.
Successfully parsed a group of options.
Parsing a group of options: input url input.dv.
Successfully parsed a group of options.
Opening an input file: input.dv.
[AVFormatContext @ 0x7f90808057c0] Opening 'input.dv' for reading
[file @ 0x7f9080805c00] Setting default whitelist 'file,crypto,data'
Probing dv score:75 size:2048
Probing mp3 score:1 size:2048
[dv @ 0x7f90808057c0] Format dv probed with size=2048 and score=75
[dv @ 0x7f90808057c0] Before avformat_find_stream_info() pos: 0 bytes read:32768 seeks:0 nb_streams:1
[dv @ 0x7f90808057c0] Probe buffer size limit of 5000000 bytes reached
[dv @ 0x7f90808057c0] Estimating duration from bitrate, this may be inaccurate
[dv @ 0x7f90808057c0] stream 0: start_time: 0 duration: 49.516133
[dv @ 0x7f90808057c0] stream 1: start_time: 0 duration: 49.516133
[dv @ 0x7f90808057c0] format: start_time: 0 duration: 49.516133 (estimate from bit rate) bitrate=28771 kb/s
[dv @ 0x7f90808057c0] After avformat_find_stream_info() pos: 4800000 bytes read:4800000 seeks:0 frames:79
Input #0, dv, from 'input.dv':
  Metadata:
    timecode        : 00:02:14;12
  Duration: 00:00:49.52, start: 0.000000, bitrate: 28771 kb/s
  Stream #0:0, 40, 1/60000: Video: dvvideo, 1 reference frame, yuv411p(topleft), 720x480 [SAR 8:9 DAR 4:3], 0/1, 28771 kb/s, 60k fps, 29.97 tbr, 60k tbn
  Stream #0:1, 39, 1/14112000: Audio: pcm_s16le, 48000 Hz, stereo, s16, 1536 kb/s
Successfully opened the file.
At least one output file must be specified
[AVIOContext @ 0x7f9080805d80] Statistics: 4800000 bytes read, 0 seeks

Change History (2)

comment:1 by dave rice, 2 weeks ago

Hi Paul, did you find a workaround for this?

in reply to:  1 comment:2 by Paul Londino, 2 weeks ago

Replying to dave rice:

Hi Paul, did you find a workaround for this?

The main workaround is just to use an older version of FFMPEG for wrapping DV in QuickTime. I did figure out that Final Cut can import these DV files, and if you export them using Original settings and explicitly choose DV as the output codec, it exports in a QuickTime wrapper without re-encoding the DV video (and these files can be transcoded by modern FFMPEG). This was a good option for me since I need to cut/trim the DV captures anyway.

Last edited 2 weeks ago by Paul Londino (previous) (diff)
Note: See TracTickets for help on using tickets.