我尝试这项工作已经有一段时间了,我想我只是在某些方面缺乏知识。
我基本上是试图将一个60fps的视频转换成30fps,同时在时间码中刻录。
到目前为止,我已经
ffmpeg -y -r 60 -i IN.mov -pix_fmt yuv420p -timecode 10:03:13:27 -filter:v fps=30 -vf "[in]drawtext=fontfile='C\:/Windows/Fonts/arial.ttf': timecode='10\:03\:13\:27':timecode_rate=30:x=((w-text_w)/2)/3:y=((h-text_h)-h)+text_h:fontsize=24:fontcolor=white:box=1:boxcolor=black:boxborderw=5[out]" -r 30 OUT.mov
我手动将60 fps的tc转换为30的一些值(最终将其转换为python)
这一切似乎都很好,直到你看一看烧伤,其中似乎是30,但计数在2。我可以告诉它与60/30的转换,因为很明显,我们正在减半的帧。我真的在努力避免多个调用和‘临时’文件。
如果有人能告诉我我做错了什么,并教我一点,那就太好了。
提前谢谢伙计们
发布于 2021-07-23 13:16:24
llogan为我提供的答案只需对输入视频进行一两次编辑即可。
ffmpeg -i input.mov -timecode 10:03:13:27 -vf "fps=30,drawtext=fontfile='C\:/Windows/Fonts/arial.ttf':timecode='10\:03\:13\:27':timecode_rate=30:x=(w-text_w)/2:y=h-th-10:fontsize=24:fontcolor=white:box=1:boxcolor=black:boxborderw=5,format=yuv420p" output.mov
不完全确定这里的魔法是如何工作的,但它是有效的!
发布于 2021-07-22 05:45:54
因为-r 60必须是30
ffmpeg -y -r 30 -i IN.mov -pix_fmt yuv420p -timecode 10:03:13:27 -filter:v fps=30 -vf "[in]drawtext=fontfile='C\:/Windows/Fonts/arial.ttf': timecode='10\:03\:13\:27':timecode_rate=30:x=((w-text_w)/2)/3:y=((h-text_h)-h)+text_h:fontsize=24:fontcolor=white:box=1:boxcolor=black:boxborderw=5[out]" out30fps.mp4
https://stackoverflow.com/questions/68475806
复制相似问题