我正在使用Nreco Video converter来制作视频缩略图。这是我正在使用的C#代码。
(new NReco.VideoConverter.FFMpegConverter()).GetVideoThumbnail(fileSource, thumbNailPath, (float)0.1);
它只是工作正常。唯一的问题是方向。我正在尝试创建缩略图的视频会记录在移动应用上。因此,无论视频是纵向模式还是横向模式,生成的缩略图都是纵向或横向模式。
是否有人知道如何以特定模式(横向或纵向)创建视频缩略图。
答案 0 :(得分:0)
视频文件中有一个旋转参数,您可以使用其他各种ffmpeg包装器库来读取这些参数。许多玩家使用它来实际旋转屏幕。见here。由于NReco不直接支持此功能,您必须使用其他库读取此值并使用它来旋转流中的jpeg。
我建议使用ffmpeg包装器,你可以直接调用ffmpeg进程实例,因为ffmpeg能够从文件中读取各种属性。
答案 1 :(得分:0)
您可以使用ffmpeg从视频元数据中获取旋转,并在缩略图提取期间应用适当的旋转滤镜。由于NReco VideoConverter是一个.NET ffmpeg包装器,它也可用于执行此操作:
(内部GetVideoThumbnail使用ConvertMedia方法):
var thumbSettings = new ConvertSettings() {
VideoFrameCount = 1,
VideoFrameRate = 1,
MaxDuration = 1, // extract exactly 1 frame
Seek = 0, // frame seek position
CustomOutputArgs = String.Format(" -vf \"{0}\"", rotateFilter ) // rotation filter parameters
};
ffMpegConverter.ConvertMedia(inputFile1, null, thumbJpegOutputStream, "mjpeg", thumbSettings);
结果,您将根据视频方向元数据旋转视频。可以在VideoConverter包中找到实现所有步骤的完整代码(旋转示例)。