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)
follow-up: 2 comment:1 by , 2 weeks ago
comment:2 by , 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.
Hi Paul, did you find a workaround for this?