【发布时间】: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