我使用 ffmpeg 从一个视频文件中生成 10 个 .jpeg 缩略图。大多数情况下,它工作正常,但对于某些文件(例如 55 秒的 .mp4),我只能获取 10 个捕获中的前 4 个,其余的我收到此错误:
输出文件为空,未编码任何内容(如果使用,请检查 -ss / -t / -frames 参数)
我用来转换的命令是这个,
ffmpeg -ss 16 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb4.jpg
其中 -ss 值是 4 的倍数,并且从 20 开始它停止工作。
命令行完整输出:
`# ffmpeg -ss 77 -i /path/source.mp4 -y -f image2 -t 0.001 -s 320*240 /path/thumb7.jpg
ffmpeg version git-2013-02-25-b8f6912 Copyright (c) 2000-2013 the FFmpeg developers
built on Feb 25 2013 15:18:21 with gcc 4.4.5 (Debian 4.4.5-8)
configuration: --enable-shared --enable-libx264 --enable-gpl
libavutil 52. 17.103 / 52. 17.103
libavcodec 54. 92.100 / 54. 92.100
libavformat 54. 63.100 / 54. 63.100
libavdevice 54. 3.103 / 54. 3.103
libavfilter 3. 41.100 / 3. 41.100
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/path/source.mp4':
Metadata:
major_brand : mp42
minor_version : 19529845
compatible_brands: mp42isom
creation_time : 2013-03-20 21:45:43
Duration: 00:02:04.62, start: 0.000000, bitrate: 605 kb/s
Stream #0:0(eng): Audio: aac (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 64 kb/s
Metadata:
creation_time : 2013-03-20 21:45:43
handler_name : Sound Media Handler
Stream #0:1(eng): Video: h264 (Baseline) (avc1 / 0x31637661), yuv420p, 720x480 [SAR 40:33 DAR 20:11], 983 kb/s, 29.97 fps, 29.97 tbr, 30k tbn, 59.94 tbc
Metadata:
creation_time : 2013-03-20 21:45:43
handler_name : Video Media Handler
Output #0, image2, to '/path/thumb7.jpg':
Metadata:
major_brand : mp42
minor_version : 19529845
compatible_brands: mp42isom
encoder : Lavf54.63.100
Stream #0:0(eng): Video: mjpeg, yuvj420p, 320x240 [SAR 15:11 DAR 20:11], q=2-31, 200 kb/s, 90k tbn, 29.97 tbc
Metadata:
creation_time : 2013-03-20 21:45:43
handler_name : Video Media Handler
Stream mapping:
Stream #0:1 -> #0:0 (h264 -> mjpeg)
Press [q] to stop, [?] for help
frame= 0 fps=0.0 q=0.0 Lsize=N/A time=00:00:00.00 bitrate=N/A
video:0kB audio:0kB subtitle:0 global headers:0kB muxing overhead -inf%
Output file is empty, nothing was encoded (check -ss / -t / -frames parameters if used)`
答案1
当您指定时,-t 0.001
您可能最终什么都不会导出。这不是表示您只需要一帧的正确方式。该-t
选项采用秒或时间戳格式HH:MM:SS.mmm
。
以下是应该做的事情:
ffmpeg -ss 16 -i /path/source.mp4 -frames:v 1 -s 320x240 /path/thumb4.jpg
-f image2
请注意,不需要该选项,因为无论如何都会选择正确的输出格式。