c++ - ffmpeg 问题

标签 c++ mfc ffmpeg streaming rtsp

我对 ffmpeg 有疑问,不知道如何继续。我有两台电脑:

客户:

  • 运行 Ubuntu 14.04
  • 已安装 FFmpeg
  • 使用c++语言
  • 特点:使用ffmpeg从客户端笔记本电脑的网络摄像头编码h264视频数据,然后实时流式传输到服务器

  • 服务器:
  • 运行 Windows 7
  • 已安装 FFmpeg
  • 使用c++语言(MFC)
  • 特点: 从客户端获取实时数据并在屏幕上显示。

  • 我刚刚将客户端连接到服务器,他们可以一起聊天文本数据,我不知道如何制作实时视频。

    我的问题是:
  • [客户端] 如何从笔记本电脑上的网络摄像头获取视频(使用 ffmpeg 代码),将其保存到缓冲区(原始数据),对其进行编码并发送到服务器?

    我使用 ffmpeg 从 wc 获取视频,但它保存到文件。我真的不想要。代码是:
    ffmpeg -f v4l2 -framerate 25 -video_size 640x480 -i /dev/video0 output.mkv
    
  • [客户端] 如何从客户端获取原始数据,解码并播放?

    我有一个想法通过在 MFC 中使用 directshow 来播放它。
  • 最佳答案

    如果必须,您可以使用 FFmpeg 在 C++ 中实现自己的播放器。图书馆或 libav图书馆。这使您可以支持各种编解码器和格式。

    在 Windows 上,您可以使用 c++ Windows Media Player Control ,但它只支持几种格式,并且不支持 H.264。

    您在源服务器(您的 Linux 机器)上有以下选项:

  • vlc转码

  • WMP 似乎接受了 ASF 中带有 MP3 的 DivX3:
    cvlc input.mp4 --sout="#transcode{vcodec=DIV3,scale=Auto,acodec=mp3,ab=128,channels=2,samplerate=44100}:http{mux=asf,dst=:8080/}" --sout-keep
    

    在客户端,您可以使用 http://server_address:8080 检索流。 .
  • ffmpegffserver

  • 阅读 ffserver DocumentationStreaming media with ffserver为了设置它。

    对于 WMP,您将再次使用 ASF:
    # ASF compatible
    
    <Stream test.asf>
    Feed feed1.ffm
    Format asf
    VideoFrameRate 15
    VideoSize 352x240
    VideoBitRate 256
    VideoBufferSize 40
    VideoGopSize 30
    AudioBitRate 64
    StartSendOnKey
    </Stream>
    

    Source .

    您可以使用 http://ffserver_address:port/stream_name.asf 检索流.

    关于c++ - ffmpeg 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29753003/

    相关文章:

    c++ - 如何在树结构中获取ansestor的属性?

    当涉及 std::function 或 lambda 函数时,C++11 不推断类型

    c++ - 继承类的内存布局

    c++ - 文本居中对齐的列表框控件?

    c++ - 如何避免控制台输出有关不支持的操作? (IWebBrowser2,DISP_E_MEMBERNOTFOUND)

    ffmpeg - 使用输入流(或 url)时 ffmpeg 可以搜索吗?

    c++ - 如何在 Linux 上的 Flutter 插件中使用 CMake 正确链接 ffmpeg?

    c++ - 使用 glMultMatrixf 进行 Opengl 翻译

    c++ - MFC:捕获调整大小

    FFmpeg:图像滚动,绿色背景?