[FFmpeg-user] setts difficulty

Mark Filipak markfilipak.noreply at gmail.com
Tue Feb 8 04:51:00 EET 2022


Help!

Command: ffmpeg -report
          -i 24'fps[24pps].vob
          -filter_complex "[0:a]asetpts=expr=N/TB*1001/24000[a]"
          -bsf setts=pts=N/TB*1001/24000:dts=N/TB*1001/24000
          -target ntsc-dvd -map 0:v -map "[a]"
          -codec:v copy -codec:a ac3 -dn
          -r 24000/1001 foo.vob

24'fps[24pps].vob, the source video, is soft telecined.
foo.vob, the target, freezes within the 1st second. The audio plays to the end.
I'm trying to fix the PTSs & DTSs via 'setts'.
I have evidence, below.

Issue: Since 24'fps[24pps].vob is soft telecined, the metadata says 29.970fps but we all know that 
the pictures in those frames are actually 24pps (i.e. it's not hard telecined).

Any clue how to proceed?
The FFmpeg LOG is below, and an FFprobe is at the end.


Clue: What are these 3 FFmpeg LOG lines about? Any ideas?
-----
  Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 0, only the 
last option '-c:v copy' will be used.

  Multiple -r options specified for stream 0, only the last option '-r 24000/1001' will be used.

  Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 1, only the 
last option '-c:a ac3' will be used.
-----
I DID NOT have multiple '-c' & '-r' directives. Did FFmpeg add some internal settings without 
notifying me?


Clue: The following FFprobe output showing the target's 1st 2 key frames. Note that the PTSs are screwy.
-----
frames.frame.0.key_frame=1
frames.frame.0.pts=45000       <= should be zero
frames.frame.0.pkt_dts=45000
:
frames.frame.12.key_frame=1
frames.frame.12.pts=45012      <= should be 3753
frames.frame.12.pkt_dts=45012
-----
That deltaPTS implies 90000 FPS !!
Comment: It's stuff like this that impels me to use 'settb=expr=1001/24000,setpts=expr=N' (which 
always works) but 'settb' & 'setpts' mandate transcoding. I'm trying to avoid transcoding.

Thanks for your patience and help,
Mark Filipak.


===== Begin FFmpeg LOG:

ffmpeg -report -i 24'fps[24pps].vob -filter_complex "[0:a]asetpts=expr=N/TB*1001/24000[a]" -bsf 
setts=pts=N/TB*1001/24000:dts=N/TB*1001/24000 -target ntsc-dvd -map 0:v -codec:v copy -map "[a]" 
-codec:a ac3 -dn -r 24000/1001 foo.vob

ffmpeg started on 2022-02-07 at 17:57:06
Report written to "ffmpeg-20220207-175706.log"
Log level: 48
ffmpeg version 2022-02-03-git-e1a14479a8-full_build-www.gyan.dev Copyright (c) 2000-2022 the FFmpeg 
developers
   built with gcc 11.2.0 (Rev7, Built by MSYS2 project)
   configuration: --enable-gpl --enable-version3 --enable-static --disable-w32threads 
--disable-autodetect --enable-fontconfig --enable-iconv --enable-gnutls --enable-libxml2 
--enable-gmp --enable-bzlib --enable-lzma --enable-libsnappy --enable-zlib --enable-librist 
--enable-libsrt --enable-libssh --enable-libzmq --enable-avisynth --enable-libbluray 
--enable-libcaca --enable-sdl2 --enable-libdav1d --enable-libdavs2 --enable-libuavs3d 
--enable-libzvbi --enable-librav1e --enable-libsvtav1 --enable-libwebp --enable-libx264 
--enable-libx265 --enable-libxavs2 --enable-libxvid --enable-libaom --enable-libopenjpeg 
--enable-libvpx --enable-mediafoundation --enable-libass --enable-frei0r --enable-libfreetype 
--enable-libfribidi --enable-libvidstab --enable-libvmaf --enable-libzimg --enable-amf 
--enable-cuda-llvm --enable-cuvid --enable-ffnvcodec --enable-nvdec --enable-nvenc --enable-d3d11va 
--enable-dxva2 --enable-libmfx --enable-libshaderc --enable-vulkan --enable-libplacebo 
--enable-opencl --enable-libcdio --enable-libgme --enable-libmodplug --enable-libopenmpt 
--enable-libopencore-amrwb --enable-libmp3lame --enable-libshine --enable-libtheora 
--enable-libtwolame --enable-libvo-amrwbenc --enable-libilbc --enable-libgsm 
--enable-libopencore-amrnb --enable-libopus --enable-libspeex --enable-libvorbis --enable-ladspa 
--enable-libbs2b --enable-libflite --enable-libmysofa --enable-librubberband --enable-libsoxr 
--enable-chromaprint
   libavutil      57. 19.100 / 57. 19.100
   libavcodec     59. 20.100 / 59. 20.100
   libavformat    59. 17.101 / 59. 17.101
   libavdevice    59.  5.100 / 59.  5.100
   libavfilter     8. 26.101 /  8. 26.101
   libswscale      6.  5.100 /  6.  5.100
   libswresample   4.  4.100 /  4.  4.100
   libpostproc    56.  4.100 / 56.  4.100
Input #0, mpeg, from '24'fps[24pps].vob':
   Duration: 00:00:09.98, start: 0.500000, bitrate: 43021 kb/s
   Stream #0:0[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x480 [SAR 32:27 DAR 
16:9], Closed Captions, 29.97 fps, 59.94 tbr, 90k tbn
     Side data:
       cpb: bitrate max/min/avg: 8401600/0/0 buffer size: 1835008 vbv_delay: N/A
   Stream #0:1[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 384 kb/s
Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 0, only the 
last option '-c:v copy' will be used.
Multiple -r options specified for stream 0, only the last option '-r 24000/1001' will be used.
Multiple -c, -codec, -acodec, -vcodec, -scodec or -dcodec options specified for stream 1, only the 
last option '-c:a ac3' will be used.
Stream mapping:
   Stream #0:1 (ac3) -> asetpts:default
   Stream #0:0 -> #0:0 (copy)
   asetpts:default -> Stream #0:1 (ac3)
Press [q] to stop, [?] for help
Output #0, dvd, to 'foo.vob':
   Metadata:
     encoder         : Lavf59.17.101
   Stream #0:0: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x480 [SAR 32:27 DAR 16:9], 
q=2-31, 6000 kb/s, 29.97 fps, 59.94 tbr, 90k tbn
     Side data:
       cpb: bitrate max/min/avg: 8401600/0/0 buffer size: 1835008 vbv_delay: N/A
   Stream #0:1: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
     Metadata:
       encoder         : Lavc59.20.100 ac3
[dvd @ 000001c8b5094900] buffer underflow st=0 bufi=13621 size=21760   0.0kbits/s speed=1.37x
[dvd @ 000001c8b5094900] buffer underflow st=0 bufi=15645 size=21760
[dvd @ 000001c8b5094900] buffer underflow st=0 bufi=17669 size=21760

et cetera


===== Begin FFprobe LOG:

Showing the 1st 2 key frames. Note that the PTSs are wrong.


ffprobe version 2022-02-03-git-e1a14479a8-full_build-www.gyan.dev Copyright (c) 2007-2022 the FFmpeg 
developers
[mpeg @ 0000023e3f669900] start time for stream 0 is not set in estimate_timings_from_pts
[mpeg @ 0000023e3f669900] stream 1 : no PTS found at end of file, duration not set
Input #0, mpeg, from 'D:\D\Setup\Video\ffmpeg\HowTo ffmpeg, vapoursynth\24'fps[24pps]24fps & 
48KHz[x0.999]48KHz\foo.vob':
   Duration: 00:00:55.53, start: 0.500000, bitrate: 7823 kb/s
   Stream #0:0[0x1bf]: Data: dvd_nav_packet
   Stream #0:1[0x1e0]: Video: mpeg2video (Main), yuv420p(tv, progressive), 720x480 [SAR 32:27 DAR 
16:9], Closed Captions, 29.97 fps, 29.97 tbr, 90k tbn
     Side data:
       cpb: bitrate max/min/avg: 8401600/0/0 buffer size: 1835008 vbv_delay: N/A
   Stream #0:2[0x80]: Audio: ac3, 48000 Hz, 5.1(side), fltp, 448 kb/s
Unsupported codec with id 98312 for input stream 0
frames.frame.0.key_frame=1
frames.frame.0.pts=45000       <= should be zero
frames.frame.0.pkt_dts=45000
:
frames.frame.12.key_frame=1
frames.frame.12.pts=45012      <= should be 3753
frames.frame.12.pkt_dts=45012


More information about the ffmpeg-user mailing list