【问题标题】:how to deal with live raw h264 stream to send over network如何处理通过网络发送的实时原始 h264 流
【发布时间】:2016-02-03 05:25:52
【问题描述】:

我想要做的是将由 h264 编码的实时摄像机流发送到 gstreamer。我已经看过很多使用 rtp 和 mpeg-ts 通过网络发送的示例。但问题是所有这些示例都假设输入将由已在传输端口中转码的固定文件或实时流提供服务,如下所示。

客户: gst-launch-1.0 videotestsrc 水平速度=5 ! x264enc tune="zerolatency" 线程=1 ! mpegtsmux! tcpserversink 主机=192.168.0.211 端口=8554

服务器:gst-launch-1.0 tcpclientsrc 端口=8554 主机=192.168.0.211 ! tsdemux ! h264解析! avdec_h264 ! xvimagesink

但是,我的相机提供以下接口(用 java 编写,实际上在 adnroid 上工作)。该界面仅提供实时的原始 h264 块。

mReceivedVideoDataCallBack=newDJIReceivedVideoDataCallBack(){
    @Override
    public void onResult(byte[] videoBuffer, int size)
    {
}

我可以创建 tcp 会话来发送这些数据块。但是,我怎样才能将那些未打包在传输协议中的数据转换为 gstreamer tcpclient 不稳定的格式? 在相机端将原始码流转码为ts格式可以是一个解决方案。但我不知道从非文件和非传输格式数据进行转码。我已经搜索了 gstreamer 和 ffmpeg,但是我现在无法使用支持的接口 unitl 获得处理 h264 块流的方法。 或者,有什么方法可以让 gstreamer 直接接受那些简单的原始 h264 块?

【问题讨论】:

    标签: ffmpeg video-streaming gstreamer


    【解决方案1】:

    我认为最好的解决方案是为您的视频源创建自己的元素,然后使用您的元素和mpegtsmux 构建管道。

    但是,您可以使用 appsrc + mpegtsmux 并通过 JNI 将您从回调中获得的缓冲区提供给您的 appsrc。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2020-08-12
      • 2012-05-20
      • 1970-01-01
      • 2018-08-17
      • 2015-11-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多