Я разрабатываю видеопроигрыватель WPF C# с MediaElement.
Некоторые видео содержат черные полосы вверху и внизу. Я хочу изменить размер изображения, например, до 120 %, чтобы при воспроизведении этих видео не отображались черные полосы.
Теперь вопрос в том, как измерить размер черных полос. Если, например, видео имеет высоту 800 пикселей, я хочу измерить высоту черных полос. Если 50 пикселей черного цвета вверху и 50 пикселей внизу, я посчитаю, что мне нужно изменить размер изображения, т.е. до 112%.
Думаю, я мог бы сделать скриншот видео, а затем проанализировать это изображение, чтобы узнать, сколько черных пикселей находится сверху и снизу (не знаю, насколько это сложно). Но я думаю и надеюсь, что есть более простой способ сделать это. Любые идеи?
Размер черных полос на видео?
Ответы (1)
Это начало моего ответа: я только что написал быстрое и грязное решение со снимком экрана.
Я использовал RenderTargetBitmap для создания снимка экрана с высотой видео, но шириной всего в 1 пиксель. Затем я использовал метод BitmapSource.CopyPixels для извлечения отдельных пикселей, а затем перебирал пиксели сверху вниз. Это работает, и для меня это работает достаточно быстро (‹30 мс для всей процедуры).
Я опубликую полный код, когда это будет сделано.
Мне все еще интересно, есть ли более простой способ сделать это. Мой собственный ответ - всего лишь один ответ, но я рад принять что-то лучшее в качестве «ответа».
person
Edgar
schedule
01.03.2015
MediaElement
. Вы пытались воспроизвести эти видео с помощью стандартных медиаплееров, например. грамм. Windows Media, VLC или MPC? - person dymanoid   schedule 01.03.2015MediaElement
WPF. Вы можете захватывать кадры один за другим, используя, например.RenderTargetBitmap
, но это займет много времени, я полагаю. И пользователь сначала увидит немасштабированное видео во время поиска. Возможно, вам следует рассмотреть DirectShow или Media Foundation для этой задачи. - person dymanoid   schedule 01.03.2015