我尝试使用Nreco.videoconverter ffmpeg包装器从一系列.jpg文件制作视频。我在这个论坛和主题上搜索答案几乎对我有帮助
http://stackoverflow.com/questions/15280199/how-to-make-a-video-file-from-images
如果您已有图像文件,最好的方法是使用特殊文件 "图像2" format(FFMpeg demuxer)和FFMPeg将直接读取文件 用于制作视频 视频可以通过VideoConverter支持的实时流转换实时生成。在这种情况下" rawvideo"应该 指定为输入格式,C#应用程序应通过RAW位图 字节(如问题中所述)作为直播流的输入 转换器。
我尝试使用此代码,但我总是获得1帧视频(数组中的第一个):
NReco.VideoConverter.FFMpegConverter c = new FFMpegConverter();
ConcatSettings set = new ConcatSettings();
set.VideoFrameRate = 5;
set.VideoFrameCount = 10;
set.ConcatVideoStream = true;
set.ConcatAudioStream = false;
set.SetVideoFrameSize(704, 576);
string[] _fileNames = new string[25];
_fileNames[0] = "g:\\Storage\\001.jpg";
_fileNames[1] = "g:\\Storage\\002.jpg";
_fileNames[2] = "g:\\Storage\\003.jpg";
_fileNames[3] = "g:\\Storage\\004.jpg";
_fileNames[4] = "g:\\Storage\\005.jpg";
_fileNames[5] = "g:\\Storage\\006.jpg";
_fileNames[6] = "g:\\Storage\\007.jpg";
_fileNames[7] = "g:\\Storage\\008.jpg";
_fileNames[8] = "g:\\Storage\\009.jpg";
_fileNames[9] = "g:\\Storage\\010.jpg";
c.ConcatMedia(_fileNames, "g:\\Storage\\test2.mp4", Format.mp4, set);
我也尝试使用ConvertMedia()方法代替ConcatMedia,但结果相同。
有没有办法告诉转换器这是一系列图像?
还有其他FFMPEG绞线器或方法吗?
我发现AForge类很好但只适用于.NET 3.5
TNX!
答案 0 :(得分:1)
FFMpegConverter.ConcatMedia使用concat过滤器合并多个视频文件,不应用于对图像中的视频进行编码。
使用ffmpeg图像分离器的ConvertMedia方法的正确方法:
var videoConv = new FFMpegConverter();
videoConv.ConvertMedia(
@"g:\Storage\%03d.jpg", null,
"test.mp4", null,
new ConvertSettings() {
CustomInputArgs = " -framerate 5 ",
// specify any additional ffmpeg parameters for output here
CustomOutputArgs = " -profile:v high "
});