0

gst-launch を使用して mp3 オーディオを tcp 経由でストリーミングしようとしていますが、これが私が試みていることです:

$ gst-launch-0.10 filesrc location="/path/to/file.mp3" ! tcpserversink host=0.0.0.0 port=3000

しかし、それは機能しません。出力は次のとおりです。

Setting pipeline to PAUSED ...
Pipeline is PREROLLING ...
Pipeline is PREROLLED ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0: Internal GStreamer error: negotiation problem.  Please file a bug at http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstmultifdsink.c(2700): gst_multi_fd_sink_render (): /GstPipeline:pipeline0/GstTCPServerSink:tcpserversink0:
Received first buffer without caps set
Execution ended after 94657 ns.
Setting pipeline to PAUSED ...
Setting pipeline to READY ...
Setting pipeline to NULL ...
Freeing pipeline ..

私が間違っている問題は何ですか?

インターネットで多くの検索を行いましたが、gst-launch を適切に使用する方法に関する適切なドキュメントが見つかりませんでした。誰かが私に正しいドキュメントを教えてくれるか、それを使用する方法を教えてください。

4

1 に答える 1

1

tcpserversinkは、シンク パッドにキャップがないことを訴えています。

Received first buffer without caps set

これは、tcpserversink が送信内容を知りたいためです。
それを伝える 1 つの方法は、ストリームを手動でデコードして再エンコードすることです。

gst-launch-0.10 filesrc location="/path/to/file.mp3" ! mad ! audioconvert ! lame ! tcpserversink host=0.0.0.0 port=3000

しかし、それは単に CPU パワーの浪費です。(他のいくつかのものとは別に)mpegストリームの詳細を把握し、それに応じて出力キャップを設定する
という要素があります。mpegaudioparseyourfilesrcと the の間に配置するだけtcpserversinkで、パイプラインが機能することになります。

$ gst-launch-0.10 filesrc location="/path/to/file.mp3" ! mpegaudioparse ! tcpserversink host=0.0.0.0 port=3000
于 2012-12-13T02:54:59.640 に答える