Streaming 采用h.264编码的流图像

Streaming 采用h.264编码的流图像,streaming,gstreamer,h.264,Streaming,Gstreamer,H.264,我正在从相机中提取帧,并对提取的帧进行处理。处理完成后,我想将这些帧以h.264编码流式传输到其他系统。我如何才能做到这一点?您通常会希望将h.264放入MP4或AVI等视频容器中 例如,在线视频从原始帧到流协议的包装可能是: 原始像素位图 编码的原始像素(例如h.264编码) 编码视频流打包到包含音频流、字幕等的容器中(例如mp4容器) 容器分为“块”或流段(在iOS上使用HLS流格式) 另一种常见的方法是,摄像机将内容流式传输到专用流式服务器,然后服务器使用诸如HLS或MPEG-DASH

我正在从相机中提取帧,并对提取的帧进行处理。处理完成后,我想将这些帧以h.264编码流式传输到其他系统。我如何才能做到这一点?

您通常会希望将h.264放入MP4或AVI等视频容器中

例如,在线视频从原始帧到流协议的包装可能是:

  • 原始像素位图
  • 编码的原始像素(例如h.264编码)
  • 编码视频流打包到包含音频流、字幕等的容器中(例如mp4容器)
  • 容器分为“块”或流段(在iOS上使用HLS流格式)
另一种常见的方法是,摄像机将内容流式传输到专用流式服务器,然后服务器使用诸如HLS或MPEG-DASH之类的流式协议向终端设备提供流。下面是一个示例(在撰写本文时,该示例似乎一直在更新),其中显示了使用RTSP从摄像头到服务器的流,以及从服务器到HLS或MPEG DASH的流:

如果您的用例很简单,您可能不想使用分段ABR流协议,如HLS或MPEG-DASH,因此您可以从常规HTTP服务器流式传输mp4文件

一种方法是在Python中使用openCV,这将允许您在其他示例的基础上进行构建—您可以在本问答中看到一个示例,该示例介绍如何将视频帧写入AVI或MP4容器:

创建MP4文件后,您可以将其放入文件夹中,并使用常规HTTP服务器使其可供用户下载或流式传输

请注意,如果您希望将帧流式传输为实时流,也就是说,当您一个接一个地创建帧时,那么这将更加复杂,因为您不需要简单地流式传输完整的MP4文件。如果您确实想这样做,那么利用现有的实现将是一个很好的起点-这是一个基于点对点web socket的实时流的示例,我是开源和基于Python的:


您通常希望将H.264放入MP4或AVI等视频容器中

例如,在线视频从原始帧到流协议的包装可能是:

  • 原始像素位图
  • 编码的原始像素(例如h.264编码)
  • 编码视频流打包到包含音频流、字幕等的容器中(例如mp4容器)
  • 容器分为“块”或流段(在iOS上使用HLS流格式)
另一种常见的方法是,摄像机将内容流式传输到专用流式服务器,然后服务器使用诸如HLS或MPEG-DASH之类的流式协议向终端设备提供流。下面是一个示例(在撰写本文时,该示例似乎一直在更新),其中显示了使用RTSP从摄像头到服务器的流,以及从服务器到HLS或MPEG DASH的流:

如果您的用例很简单,您可能不想使用分段ABR流协议,如HLS或MPEG-DASH,因此您可以从常规HTTP服务器流式传输mp4文件

一种方法是在Python中使用openCV,这将允许您在其他示例的基础上进行构建—您可以在本问答中看到一个示例,该示例介绍如何将视频帧写入AVI或MP4容器:

创建MP4文件后,您可以将其放入文件夹中,并使用常规HTTP服务器使其可供用户下载或流式传输

请注意,如果您希望将帧流式传输为实时流,也就是说,当您一个接一个地创建帧时,那么这将更加复杂,因为您不需要简单地流式传输完整的MP4文件。如果您确实想这样做,那么利用现有的实现将是一个很好的起点-这是一个基于点对点web socket的实时流的示例,我是开源和基于Python的:


如果要通过UDP套接字流式传输数据,请使用RTP协议进行流式传输

请仔细阅读

用于处理相机数据的媒体线路:

摄像头原始数据(RGB/YUV/NV12)->H.264编码器->NALU数据包RTP打包->套接字通信


您可以使用ffmpeg python接口来实现此目标。

如果您希望通过UDP套接字流式传输数据,请使用RTP协议进行流式传输

请仔细阅读

用于处理相机数据的媒体线路:

摄像头原始数据(RGB/YUV/NV12)->H.264编码器->NALU数据包RTP打包->套接字通信


您可以使用ffmpeg python接口来实现这一目标。

这个问题太宽泛了,无法回答。您至少需要提供您需要使用的平台或语言。如果你在谷歌上搜索这个,你可以找到很多资源。谢谢你的回复。我正在使用python语言和jetson nano进行处理。我可以在处理后使用套接字连接流式传输帧。但是我需要用h.264格式编码。我在谷歌上查过,但没有找到我正在寻找的解决方案。这个问题太广泛,无法回答。您至少需要提供您需要使用的平台或语言。如果你在谷歌上搜索这个,你可以找到很多资源。谢谢你的回复。我正在使用python语言和jetson nano进行处理。我可以在处理后使用套接字连接流式传输帧。但是我需要以h.264格式编码。我在谷歌上查过,但没有找到我正在寻找的解决方案。谢谢你的回复。我需要编写帧到一个容器然后流?这就是你的意思吗?谢谢你的回复。我需要把帧写到一个容器然后流?这就是你的意思吗?