【发布时间】:2017-11-13 20:03:03
【问题描述】:
如果我有一个视频文件,它定义了一个 6144 像素长 (x) x 64 像素高 (y) 的视频图像,并且我想显示该视频,以便它在监视器的末端环绕。换句话说,我想在显示器上从位置 0,0 开始显示视频的前 1024 个像素,然后从位置 0,64 开始显示视频像素 1024 到 2047,并重复此操作,直到显示器上显示所有 6144 个像素。这意味着视频需要在 1024x768 显示器上环绕 6 次。
最好的方法是什么? DirectX、DirectShow、Media Foundation 或 Windows Media Player ActiveX 控件能否自动为您处理这种包装?我需要最好在 C# 中执行此操作,但不反对使用 C++ 本机。还是这样做的唯一方法是将视频分成6个单独的部分并在单独的窗口中播放?如果将它们分成 6 个单独的视频并在 6 个单独的窗口中播放是唯一合理的方式,那么您如何确保它们同时开始以便同步?
只要考虑下面每条评论的内容,ffmpeg 和/或 C# 就可以将这个 6144 x 64 像素的视频文件转换成如下内容:
6144 x 64 ---> 0-1023 x 64
1024-2047 x 64
2048-3071 x 64
3072-4095 x 64
4096-5119 x 64
5120-6143 x 64
换句话说,它看起来像被包装但实际上只是一个 1024 x 384 的视频??
【问题讨论】:
-
您也可以使用 avisynth 及其较新的亲戚如 vapoursynth,而不是在您的代码中执行此类工作。使用 avisynth 时,请使用源插件 ffmpegsource (ffms2),不要忘记在脚本的最后使用 converttoyuy2()
标签: c# video media-player directshow directx-12