gpt4 book ai didi

ffmpeg - 如何处理实时原始 h264 流以通过网络发送

转载 作者:行者123 更新时间:2023-12-02 01:22:42 29 4
gpt4 key购买 nike

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

客户:gst-launch-1.0 videotestsrc 水平速度=5 ! x264enc 调整=“零延迟”线程= 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上工作)。该接口(interface)仅提供实时原始 h264 block 。

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

我可以创建 tcp session 来发送这些数据 block 。但是,如何将那些未打包在传输协议(protocol)中的数据转换为 gstreamer tcpclient 不稳定的格式?在相机端将原始流转码为ts格式可以是一个解决方案。但我不知道如何从非文件和非传输格式数据进行转码。我已经搜索了 gstreamer 和 ffmpeg,但我现在无法使用支持的接口(interface),unitl 导出处理 h264 block 流的方法。或者,有没有办法让 gstreamer 直接接受那些简单的原始 h264 block ?

最佳答案

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

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

关于ffmpeg - 如何处理实时原始 h264 流以通过网络发送,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33492695/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com