This has to be combined with -vsync cfr and -filter:a aresample=async=1:min_comp=0.001:min_hard_comp=0.1:first_pts=0 to signal constant frame rate and synchronize audio with any changes. For instance, setting -r 30 by itself will not necessarily remove variable frame rate from cell phone footage. If you don’t hate your media player, you won’t hate dropping a 25fps video directly onto a 30fps Shotcut timeline any worse.įor sake of clarity to the OP, you provided ffmpeg command lines that were probably meant to be templates and not complete commands. This is what every media player does anyway when showing a 24fps movie on a 60 Hz computer screen. Secondly, and this goes without saying… these algorithms are slooooooow at a level that words cannot express.įor the very minor conversion of 25fps to 30fps, frame duplication is totally fine. Frame duplication almost always looks better and cleaner if the fps change is small. But if the frames are filled with motion blur from fast-moving objects, there are no edges to positively correlate, so the algorithm often guesses wrong and creates interpolated frames that look like smeary mush. Motion vectors are generated by finding common edges between video frames then shifting those edges to create in-between frames. Here is an example:įfmpeg -i Input.mp4 -filter:v minterpolate=fps=120:mi_mode=mci:mc_mode=aobmc:me_mode=bidir:me=epzs:vsbmc=1 Output.mp4īut there are lots of problems with these algorithms. To convert frame rate with more sophistication than dropping or duplicating, there has to be a motion vector tracker combined with a morph algorithm such as optical flow. The command line given only does frame dropping or duplicating. "modification_date": "T10:39:42.I mean really converted, not just some frames dropped | doubled. "format_long_name": "MXF (Material eXchange Format)", "codec_long_name": "PCM signed 24-bit little-endian", I'm running ffprobe -i "IMX 10bit.mxf" -print_format json -show_streams -show_format and getting the following: ffprobe version 3.2 Copyright (c) 2007-2016 the FFmpeg developersĬonfiguration: -enable-gpl -enable-version3 -disable-w32threads -enable-dxva2 -enable-libmfx -enable-nvenc -enable-avisynth -enable-bzlib -enable-libebur128 -enable-fontconfig -enable-frei0r -enable-gnutls -enable-iconv -enable-libass -enable-libbluray -enable-libbs2b -enable-libcaca -enable-libfreetype -enable-libgme -enable-libgsm -enable-libilbc -enable-libmodplug -enable-libmp3lame -enable-libopencore-amrnb -enable-libopencore-amrwb -enable-libopenh264 -enable-libopenjpeg -enable-libopus -enable-librtmp -enable-libschroedinger -enable-libsnappy -enable-libsoxr -enable-libspeex -enable-libtheora -enable-libtwolame -enable-libvidstab -enable-libvo-amrwbenc -enable-libvorbis -enable-libvpx -enable-libwavpack -enable-libwebp -enable-libx264 -enable-libx265 -enable-libxavs -enable-libxvid -enable-libzimg -enable-lzma -enable-decklink -enable-zlib I'm getting the error Drop frame is only allowed with 30000/1001 or 60000/1001 FPS. ![]() I'm using ffprobe to get timecode from an mxf which has DF timecode but with a non DF frame rate.
0 Comments
Leave a Reply. |