【发布时间】:2012-01-15 00:07:34
【问题描述】:
我需要编写一个可以显示视频的小软件。 我对 C 的图形一无所知。
有哪些课程? 请指点我的起点。
谢谢, 那鸿
【问题讨论】:
-
我认为您正在寻找库,而不是类!
我需要编写一个可以显示视频的小软件。 我对 C 的图形一无所知。
有哪些课程? 请指点我的起点。
谢谢, 那鸿
【问题讨论】:
另一个用于显示视频的simple library 是OpenCV(跨平台):
int main(int argc, char** argv)
{
cvNamedWindow("xsample", CV_WINDOW_AUTOSIZE);
CvCapture* capture = cvCreateFileCapture("movie.avi");
if (!capture)
{
printf("!!! cvCreateFileCapture didn't found the file !!!\n");
return -1;
}
IplImage* frame;
while(1)
{
frame = cvQueryFrame( capture );
if (!frame)
break;
cvShowImage( "xsample", frame );
char c = cvWaitKey(33);
if (c == 27)
break; // ESC was pressed
}
cvReleaseCapture(&capture);
cvDestroyWindow("xsample");
return 0;
}
就是这样。但是,您将无法使用 OpenCV 播放声音,只能播放视频。但是,如果您正在寻找解决方法,here is a little something I wrote 前段时间使用 OpenCV 和 FFmpeg。
【讨论】:
IplImage)。
我对 C 的图形一无所知
我强烈建议您先学习这一点,否则您将很难做到。
无论如何:编写一个性能良好的视频播放器并非易事。幸运的是,Linux 有现成可用的多媒体包:
所有这些都可以嵌入到您自己的程序中。我个人推荐 libxine 或 ffmpeg 库,因为它们是恕我直言的最可靠和最直接使用的库。 GStreamer 在纸面上看起来不错,但在稳定性方面存在问题(根据我的经验)。
【讨论】:
对于仅显示具有固定时间间隔的视频帧,您最简单的选择可能是使用像Qt 这样的漂亮图形工具包。这将为您提供设置计时器、在屏幕上绘制视频等所需的工具。
如果您打算解码 H.264、MPEG-2 等压缩视频源,您需要查看Qt Phonon multimedia framework,直接使用 GStreamer,或者可能使用 ffmpeg 库来解压缩视频流然后使用播放器的框架将它们绘制到屏幕上。
【讨论】: