求助:NReco VideoConverter中图片序列路径的正则写法
解决NReco VideoConverter(FFmpeg)图片序列转视频的路径格式问题
我来帮你搞定这个FFmpeg序列路径的问题!先梳理下核心问题:你的图片命名规则和FFmpeg要求的序列格式不匹配,还有几个小细节需要调整。
首先看你的图片保存代码,先提个小优化:你现在的保存逻辑没指定.bmp扩展名,虽然Bitmap.Save会自动根据格式加,但为了避免意外(比如如果Bitmap是其他格式,扩展名会变),最好手动明确扩展名,同时用Path.Combine来拼接路径更安全:
foreach (Bitmap printscreen in printscreeny) { printscreen.Save(Path.Combine(Path.GetTempPath(), $"{guid}_{i}.bmp")); i++; }
接下来是ConvertMedia的路径问题——你写的guid_*%d.bmp是错的,FFmpeg的图片序列语法不需要*通配符,直接用%d来匹配递增的数字即可。正确的写法应该是把路径拼接成{临时目录}/{guid}_%d.bmp,同样用Path.Combine来避免路径分隔符的问题:
var inputSequencePattern = Path.Combine(Path.GetTempPath(), $"{guid}_%d.bmp"); videoConverter.ConvertMedia(inputSequencePattern, null, "test.mp4", null, convertSettings);
关键说明:
- NReco VideoConverter底层依赖FFmpeg,所以必须遵循FFmpeg的图片序列规则:
%d会匹配连续的整数(比如0、1、2...),和你生成的guid_0.bmp、guid_1.bmp完全对应。 - 要确保你的
i是连续递增的(不能跳号,比如0、1、3这样缺了2),否则FFmpeg可能会中断转换或者只处理到缺失的位置。 - 如果你的数字需要固定位数(比如0001、0002),可以用
%04d这样的格式,但你的代码里是直接用i的原始数值,所以%d就足够了。
内容的提问来源于stack exchange,提问作者Vít Hněvkovský
相关产品推荐
相关产品推荐

