我想要做的是发送由h264编码为gstreamer的实时相机流。我已经看到很多使用rtp和mpeg-ts通过网络发送的例子。但问题是,所有这些例子都假设输入将由固定文件或实时流提供服务,该文件或流已经在传输协议中进行了代码转换,如下所示。如何处理通过网络发送的活的原始h264流
client: gst-launch-1.0 videotestsrc horizontal-speed = 5! x264enc tune =“zerolatency”threads = 1! mpegtsmux! tcpserversink host = 192.168.0.211 port = 8554
server:gst-launch-1.0 tcpclientsrc port = 8554 host = 192.168.0.211! tsdemux! h264parse! avdec_h264! xvimagesink
但是,我的相机提供了下面的界面(用java编写的,实际上适用于adnroid)。该界面只提供原始的h264块。
mReceivedVideoDataCallBack=newDJIReceivedVideoDataCallBack(){
@Override
public void onResult(byte[] videoBuffer, int size)
{
}
我可以创建tcp会话来发送那些数据块。但是,我怎样才能使那些未包含在传输协议中的数据转换为gstreamer tcpclient不可信的格式呢? 在摄像机端以ts格式转码原始流可能是一个解决方案。但我不知道从非文件和非传输格式的数据进行转码。我已经搜索了gstreamer和ffmpeg,但是现在我无法使用受支持的接口派生出一种处理h264块流的方法。 或者,有什么办法让gstreamer直接接受那些简单的原始h264块?