我正在尝试提取/转换 mov 视频文件中包含的所有 png 文件。为此,我正在使用此批处理脚本,该脚本可以正常工作...
pushd %1
if not exist newfiles\ (
mkdir newfiles
)
if not exist newfiles2\ (
mkdir newfiles2
)
:start
for %%F in (*.mov) do (
md "%%~nF"
echo "%%~nF"
ffmpeg -i %%F -r 1 -f image2 -qscale:v 2 "%%~nF\%%~nF_image-%%3d.png"
copy "%%~nF\%%~nF_image-001.png" ".\newfiles"
)
popd
但是的问题是此命令应该存在一些错误:
ffmpeg -i %%F -r 1 -f image2 -qscale:v 2 "%%~nF\%%~nF_image-%%3d.png"
copy "%%~nF\%%~nF_image-001.png" ".\newfiles"
因为它仅提取 4 个图像。相反,我使用 virtualdub 进行了相同的操作,这次提取的 png 图片为 48 。那么,错误在哪里呢?谢谢。
答案 0 :(得分:0)
命令应为
ffmpeg -i %%F -f image2 -vsync 0 "%%~nF\%%~nF_image-%%3d.png"
-r 1
要求ffmpeg从输入的每秒中选择1帧。 qscale
与PNG无关。需要-vsync 0
才能阻止ffmpeg丢弃或复制帧。