我想要做的是發送由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塊?