Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/263.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 视频中黑条的大小?_C#_Wpf_Video_Mediaelement - Fatal编程技术网

C# 视频中黑条的大小?

C# 视频中黑条的大小?,c#,wpf,video,mediaelement,C#,Wpf,Video,Mediaelement,我正在用MediaElement开发WPF C#视频播放器。 有些视频的顶部和底部都有黑色的条。我想将图片大小调整为120%,以便播放这些视频时不会显示黑色条。 现在的问题是如何测量黑条的大小。如果视频的高度为800像素,我想测量黑条的高度。如果顶部有50个黑色像素,底部有50个像素,那么我将计算必须调整图片大小,即调整到112%。 我想我可以做一个视频截图,然后分析图片,找出顶部和底部有多少黑色像素(我不知道这有多复杂)。但我想并希望有一个更简单的方法来做到这一点。有什么想法吗?这是我回答的开

我正在用MediaElement开发WPF C#视频播放器。
有些视频的顶部和底部都有黑色的条。我想将图片大小调整为120%,以便播放这些视频时不会显示黑色条。
现在的问题是如何测量黑条的大小。如果视频的高度为800像素,我想测量黑条的高度。如果顶部有50个黑色像素,底部有50个像素,那么我将计算必须调整图片大小,即调整到112%。

我想我可以做一个视频截图,然后分析图片,找出顶部和底部有多少黑色像素(我不知道这有多复杂)。但我想并希望有一个更简单的方法来做到这一点。有什么想法吗?

这是我回答的开始:我刚刚用截图写了一个快速而肮脏的解决方案。

我使用RenderTargetBitmap创建了一个屏幕截图,视频的高度只有1像素宽。然后我使用BitmapSource.CopyPixels方法提取单个像素,然后从上到下循环遍历像素。它工作正常,对我来说速度足够快(你确定这些黑条就是视频内容吗?在我看来,这是关于纵横比和自动视频内容在
MediaElement
容器中的匹配。你试过用“标准”播放这些视频吗媒体播放器,例如Windows media、VLC或MPC?@dymanoid:我肯定是视频。我理解你的评论,在某些情况下,由于纵横比的原因,屏幕的某些部分显然没有被视频填满。但是有些视频包含黑条。嗯,这将是一项艰巨的工作。首先,你必须找到一个n在视频中的黑色帧上,它可能是第一帧或第100帧。仅使用WPF的
MediaElement
,这并不容易。您可以使用例如
RenderTargetBitmap
,一个接一个地抓取帧,但我想这将花费很多时间。而且用户在搜索时会首先看到未缩放的视频。也许您应该这样做考虑DirectShow或媒体基金会来完成这项任务。