【问题标题】:Display Video on Linux [closed]在 Linux 上显示视频 [关闭]
【发布时间】:2012-01-15 00:07:34
【问题描述】:

我需要编写一个可以显示视频的小软件。 我对 C 的图形一无所知。

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

谢谢, 那鸿

【问题讨论】:

  • 我认为您正在寻找库,而不是类!

标签: c linux video


【解决方案1】:

另一个用于显示视频的simple libraryOpenCV(跨平台):

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。

【讨论】:

  • 谢谢。如何使用 OpenCV 逐帧显示(我使用 UDP 接收)?
  • 你想做什么?显示视频文件,显示来自网络上的摄像机的视频,或显示某种video stream coming from your network?但第一步是从此连接中检索数据流并将其转换为有用的 OpenCV 数据 (IplImage)。
【解决方案2】:

我对 C 的图形一无所知

我强烈建议您先学习这一点,否则您将很难做到。

无论如何:编写一个性能良好的视频播放器并非易事。幸运的是,Linux 有现成可用的多媒体包:

  • libxine
  • ffmpeg 库(libavformat、libavdevice、libavcodec 和 libswscale)——mplayer 使用
  • VLC
  • GStreamer

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

【讨论】:

    【解决方案3】:

    对于仅显示具有固定时间间隔的视频帧,您最简单的选择可能是使用像Qt 这样的漂亮图形工具包。这将为您提供设置计时器、在屏幕上绘制视频等所需的工具。

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

    【讨论】:

      猜你喜欢
      • 2010-09-10
      • 2011-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-10-31
      • 1970-01-01
      • 2012-11-01
      • 1970-01-01
      相关资源
      最近更新 更多