1

I am writing an application which is a kinda video streamer.The client is receiving a video stream using udp socket.Now as I am receiving the stream I want to play it simultaneous.It is different from playing local video file lying in your hard disk in which case it can be as simple as running the file using system("vlc filename").But here many issues are involved like there can be delay in receiving and player will have to wait for the incoming data.I have come to know about using vlc to run a video stream.Can you please elaborate the step for playing the stream using vlc.I am implementing my application in c++.

EDIT: Can somebody give me some idea regarding VLC API which can be used to stream a given video to particular destination and receive that stream at other end play it.

with regards, Mawia

4

2 回答 2

2

好吧,您可以随时查看VideoLan 自己的主页 除此之外,流式传输非常简单:

  1. 决定支持流式传输的视频编解码器。(好吧,很明显,可能已经完成了)
  2. 选择适当的数据包大小。
  3. 选择合适的视频质量。
  4. 在客户端:预缓冲至少 2 秒的视频和音频。

数字 2 和 3 听起来很奇怪,但值得思考:

如果您有宽带连接,则可以将大数据包发送到客户端。注意:这里的数据包是指客户端完全解码下一位视频所需的一致数据单元。如果您发送大数据包,例如 4 秒的视频,您可能会因为等待完整的数据单元(好吧,整整 4 秒)而出现延迟,而 0.5 秒的小数据包会让您延迟但仍然可以识别且相对流畅的视频联系。

质量也是如此。像素化和伪影缠身的视频很糟糕,口吃视频/声音不同步的视频更糟糕。而是切换到较低质量/较高压缩设置。

如果您的问题纯粹是关于完成部分,那么第 1 点和第 4 点应该适合您。

你可能会问:“如果我想做实时视频?” 上述所有建议仍然适用,但所有这些都必须更聪明地完成。首先要做的事情是:您无法在连接不良的情况下进行实时操作。这是现实的事情。如果您的连接足够宽,您几乎可以实时访问,只需将每个图像和一个小的声音样本抽出,而无需太多处理或任何缓冲。有可能从中获得良好的客户体验,但这样的连接极不可能。这里的技巧通常是,传输的视频质量略低于理论上允许的连接,并且仍然在那里摆动缓存和数据包重新排序......玩得开心。很难。

于 2010-05-30T21:21:36.577 回答
0

不幸的是,真正唯一的 API vlc 是命令行或命令行的等效项(您可以启动播放器实例,基本上将它们传递给您在命令行上拥有的东西)。如果您需要多个实例或回调,您可以使用 libvlc,但它仍然非常不透明......

于 2010-08-01T02:41:00.720 回答