C# C从WMV中提取特定帧
几乎正是我需要的。。。除了saveFrameFromVideo采用百分比而不是帧数之外 如何使用此选项从WMV文件中提取帧XC# C从WMV中提取特定帧,c#,video-processing,C#,Video Processing,几乎正是我需要的。。。除了saveFrameFromVideo采用百分比而不是帧数之外 如何使用此选项从WMV文件中提取帧X 我也试过。。。但是没有任何可下载的版本,我也无法获得构建的源代码…神奇之处在于这一行: mediaDet.WriteBitmapBits(streamLength * percentagePosition, target.Width, target.Height, outputBitmapFile); 它根据流的百分比和长度计算
我也试过。。。但是没有任何可下载的版本,我也无法获得构建的源代码…神奇之处在于这一行:
mediaDet.WriteBitmapBits(streamLength * percentagePosition,
target.Width, target.Height, outputBitmapFile);
它根据流的百分比和长度计算帧数。既然你已经知道了帧号,那就用它来代替吧。魔术就在这一行:
mediaDet.WriteBitmapBits(streamLength * percentagePosition,
target.Width, target.Height, outputBitmapFile);
它根据流的百分比和长度计算帧数。由于您已经知道帧号,请改用它。您也可以尝试执行此任务,它允许您按时间偏移提取图像:
Bitmap bitmap = AsfImage.FromFile(videoFileName)
.AtOffset(17.34);
在内部,媒体SDK和一些自定义流操作用于获得帧精度高达100毫秒的静态帧,因此,如果您知道媒体文件的帧速率,即25,则可以计算最近帧的时间偏移:
int frameX = 400; //get 400th frame
double frameRate = 25.0;
double timeOffset = frameX / frameRate;
Bitmap bitmap = AsfImage.FromFile(videoFileName)
.AtOffset(timeOffset);
您也可以尝试执行此任务,它允许您按时间偏移提取图像:
Bitmap bitmap = AsfImage.FromFile(videoFileName)
.AtOffset(17.34);
在内部,媒体SDK和一些自定义流操作用于获得帧精度高达100毫秒的静态帧,因此,如果您知道媒体文件的帧速率,即25,则可以计算最近帧的时间偏移:
int frameX = 400; //get 400th frame
double frameRate = 25.0;
double timeOffset = frameX / frameRate;
Bitmap bitmap = AsfImage.FromFile(videoFileName)
.AtOffset(timeOffset);
我一直在致力于从网络摄像头视频和视频文件中提取帧-对于这两种情况,我使用了AForge库-您需要添加对AForge.video、AForge.Imaging、AForge.video.Directshow和AForge.video.FFMPEG的引用。对于实时视频,我添加了一个videoSourcePlayer\u NewFrameobject发送器ref Bitmap image来获取帧-位图图像包含位图类型中所需的帧。这基本上就是我在windows窗体中添加的videosource播放器的事件处理程序。 对于文件中的视频,我使用了: videoSource=新文件VideoSoourceFileName; 视频源。开始; videoSource.NewFrame+=新的arge.Video.NewFrameEventHandlervideoSource\u NewFrame
videoSource\u NewFrame是事件处理程序,以防出现新帧。我一直在努力从网络摄像头视频和视频文件中提取帧-对于这两种情况,我都使用了AForge库-您需要添加对AForge.video、AForge.Imaging、AForge.video.Directshow和AForge.video.FFMPEG的引用。对于实时视频,我添加了一个videoSourcePlayer\u NewFrameobject发送器ref Bitmap image来获取帧-位图图像包含位图类型中所需的帧。这基本上就是我在windows窗体中添加的videosource播放器的事件处理程序。 对于文件中的视频,我使用了: videoSource=新文件VideoSoourceFileName; 视频源。开始; videoSource.NewFrame+=新的arge.Video.NewFrameEventHandlervideoSource\u NewFrame
videoSource\u NewFrame是事件处理程序,以防出现新帧。这太棒了!“有没有办法让它在DRM保护的视频上工作?”@阿达姆加斯金斯:不幸的是,除非你使用的是AsfMojo目前不在的媒体基础,否则我无法从C中提取DRM保护视频的图像,这里给出了问题的概要:ASFMOJO可以解析AVI文件吗?不只是ASF文件,主要是WMV和WMA文件这太棒了!“有没有办法让它在DRM保护的视频上工作?”@阿达姆加斯金斯:不幸的是,除非你使用的是AsfMojo目前不在的媒体基础,否则我无法从C中提取DRM保护视频的图像,这里给出了问题的概要:ASFMOJO可以解析AVI文件吗?不只是ASF文件,主要是WMV和WMA文件