在Linux上显示视频

时间:2011-12-07 13:23:37

标签: c linux video

我需要编写一个能够显示视频的小软件。 我不知道有关C图形的任何事情。

有哪些课程? 请指出我的起点。

谢谢, 内厄姆

3 个答案:

答案 0 :(得分:2)

  

我对C

的图形知之甚少

我强烈建议你先学习这个,否则你会很难做到这一点。

无论如何:写一个表现很好的视频播放器并不是一件容易的事。幸运的是,Linux有很多可用的多媒体软件包:

  • libxine
  • ffmpeg libraries(libavformat,libavdevice,libavcodec和libswscale) - 由mplayer使用
  • VLC
  • 的GStreamer

所有这些都可以嵌入到您自己的程序中。我个人推荐使用libxine或ffmpeg库,因为这些是最实用和最直接的恕我直言。 GStreamer在纸上看起来不错,但在稳定性方面存在问题(根据我的经验)。

答案 1 :(得分:2)

对于仅具有固定时间间隔的视频帧的显示,最简单的方法是使用像Qt这样的漂亮图形工具包。这将为您提供定时器,将视频绘制到屏幕等所需的工具。

如果您计划解码压缩视频源(如H.264,MPEG-2等),您需要查看Qt Phonon multimedia framework,直接使用GStreamer,或者可能使用ffmpeg库来解压缩视频流然后用你的播放器框架将它们绘制到屏幕上。

答案 2 :(得分:2)

用于显示视频的另一个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。