ffmpeg - 使用 ffmpeg 从服务器流式传输视频帧

标签 ffmpeg video-streaming

我正在通过 RMTP 流向我的服务器发送 JPEG 图像形式的视频帧。在服务器端,我想将流(ip + 端口)连接到 ffmpeg,以便它可以从流中抓取图像并从中创建视频流。

实际上,我的服务器正在监听传入帧的 IP 和端口。这部分完成了。我卡住的地方是如何使用 ffmpeg 将这些帧转换为视频流。谁能告诉我如何实现这一目标?我知道image2pipe是我应该使用的,但我没有在 Google 上找到它的语法和文档。

最佳答案

在服务器端 ,您可以调用命令行应用程序ffmpeg为您和stream the data 做繁重的工作.

客户端 ,我想讨论两种方法:

方法 1 : 使用 ffplay在 iPhone 上连接到服务器并显示视频流。

优点 : 这是最简单和最快的解决方案!

FFmpeg was ported to the iPhone很久以前的一些人,所以你可以调用 ffplay从 iPhone,告诉它连接到服务器,工作就完成了!查看Streaming a simple RTP audio stream from FFmpeg举个简单的例子。

缺点 : 好像there are legal issues involved on this matter ,所以有些人不建议使用 FFmpeg 分发您的应用程序。

方法二 : 写一个类似于 ffplay 的应用程序为 iPhone。

优点 :您可以使用自定义编码/解码程序来保护正在播放的数据,并让世界上的其他人使用您的播放器观看流媒体。

如果您正在流式传输真正的 JPEG(带有标题和所有内容,就像普通的 JPEG 文件一样),您需要的第一件事是使用 networking library允许您的应用程序连接到服务器并检索数据。

我建议,对于您的服务器接收到的每个新连接,它都会发送一个自定义 header (几个字节),通知客户端正在发送的每个帧的大小(因此客户端知道每个帧的大小)。

之后,应用程序将需要使用另一个库将传入数据解释为 JPEG 帧/文件。我现在可以想到 OpenCV,但我相信你可以找到更小的库。也许iOS为此提供了一个框架,但我真的不知道。

一旦您的应用程序可以访问每个帧携带的所有有用信息(即图像尺寸和像素),您的应用程序将创建一个 UIImage with this information对于从网络到达的每一帧,能够display them on the screen .

缺点 :您将不得不从头开始创建一个应用程序,并且可能会在此过程中学习一些新的 API。

关于ffmpeg - 使用 ffmpeg 从服务器流式传输视频帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20464956/

相关文章:

amazon-web-services - AWS lambda上的ffmpeg错误

linux - FFMPEG + V4L2 选项

windows-phone-8 - 为什么YouTube Player可以在Windows Phone的IE上播放?

objective-c - 将点播视频从 IIS7 流式传输到 iOS 设备

video-streaming - 如何使用vlcj减少在Java中播放rtsp实时视频流的延迟

python - 使用 FFmpegPCMAudio 在 Discord py 中播放多个音频文件

ffmpeg - 多次写入同一帧?

video - ffmpeg 缩放 4k 视频并添加字幕

video - 如何生成具有高性能(最少 I/O)的 "moov before mdat"MP4 视频文件?

bash - 合并多个 MPG 文件