我正在尝试转换视频 (.ts) 并从另一个视频 (.mp4) 中捕获快照 (.jpeg)。转换对它们都有效,但是快照名称snap%.jpeg
不会像snap1.jpeg, snap2.jpeg
在ffmpeg 文档:image2
命令:
ffmpeg -loglevel 99 -i "C:\path\original.mp4" -an -sn -c:v libx264 -preset slow -crf 22 -r 25 -f segment -segment_format ts -segment_time 10 -strftime 1 "C:\path\result\output-%H-%M-%S.ts" -vf fps=5 -q:v 1 -f image2 -updatefirst 1 "C:\path\result\snap%d.jpeg"
即使日志级别很高,我也没有任何错误。我也尝试删除引号,或者放置%03d
其他引号,但没有变化。
我正在使用 Windows 8.1。
ffmpeg 版本:
ffmpeg version 3.4 Copyright (c) 2000-2017 the FFmpeg developers
built with gcc 7.2.0 (GCC)
configuration: --enable-gpl --enable-version3 --enable-sdl2 --enable-bzlib --enable-fontconfig --enable-gnutls --enabl
e-iconv --enable-libass --enable-libbluray --enable-libfreetype --enable-libmp3lame --enable-libopenjpeg --enable-libopu
s --enable-libshine --enable-libsnappy --enable-libsoxr --enable-libtheora --enable-libtwolame --enable-libvpx --enable-
libwavpack --enable-libwebp --enable-libx264 --enable-libx265 --enable-libxml2 --enable-libzimg --enable-lzma --enable-z
lib --enable-gmp --enable-libvidstab --enable-libvorbis --enable-cuda --enable-cuvid --enable-d3d11va --enable-nvenc --e
nable-dxva2 --enable-avisynth --enable-libmfx
libavutil 55. 78.100 / 55. 78.100
libavcodec 57.107.100 / 57.107.100
libavformat 57. 83.100 / 57. 83.100
libavdevice 57. 10.100 / 57. 10.100
libavfilter 6.107.100 / 6.107.100
libswscale 4. 8.100 / 4. 8.100
libswresample 2. 9.100 / 2. 9.100
libpostproc 54. 7.100 / 54. 7.100
如果我之前没有在互联网上搜索过很长时间,我永远不会向社区询问,所以,我真的需要你的帮助。谢谢。
答案1
两件事情:
1) 使用-updatefirst 1
,仅创建和更新一个映像文件。将其删除。
2)snap%.jpeg
没有指定模式,因为没有扩展变量。应该是snap%d.jpeg
(此外,如果段格式设置为mkv
,那也应该是扩展)。
ffmpeg -loglevel 99 -i "C:\path\original.mp4" -an -sn -c:v libx264 -preset slow -crf 22 -r 25 -f segment -segment_format mkv -segment_time 10 -strftime 1 "C:\path\result\output-%H-%M-%S.mkv" -vf fps=5 -q:v 1 -f image2 "C:\path\result\snap%d.jpeg"