問題タブ [gstreamer]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - スクリプトの先頭に「gobject.threads_init()」がないとPython gstreamerがクラッシュするのはなぜですか?
gstreamer(pygstおよびgstモジュール)を使用してリプレイゲインタグを計算するPythonスクリプトを作成しましたが、さまざまなgobjectエラーで一貫性のないクラッシュが発生していました。スクリプトの先頭に次の定型文を配置することで、これを修正できることがどこかで見つかりました。
試してみましたが、うまくいきました。なぜこれらの行が必要なのか、そしてなぜpygst自体がこれを行わないのかを誰かが説明できますか?
streaming - gtreamer を使用した RTP 経由の mp3 ストリーミング再生
私は gstreamer を使用しており、主に音楽再生機能をいじっています。
現在、RTP を使用して LAN 経由で mp3 ストリームを送信しようとしていますが、今のところ成功していません。
送信者側では、次のパイプラインを使用します。
gst-launch -v filesrc location=./my_music_file.mp3 ! ffdemux_mp3 ! rtpmpapay ! udpsink ポート=6969 ホスト=192.168.0.200
受信側では、次のパイプラインを使用します。
gst-launch -v udpsrc port=6969 caps="application/x-rtp, media=(string)audio, clock-rate=(int)90000, encoding-name=(string)MPA, payload=(int)96, ssrc=(guint)1951256090、clock-base=(guint)1711290778、seqnum-base=(guint)24773" ! rtpmpadepay ! flmp3dec ! パルスシンク
受信側からの出力は次のとおりであるため、明らかにエラーはありません。
パイプラインを一時停止に設定しています...
パイプラインはライブであり、PREROLL は必要ありません ...
パイプラインを PLAYING に設定しています ...
新しいクロック: GstSystemClock
...しかし、音は奇妙に聞こえます。まるで速く弾きすぎたかのようです。
mp3 ファイルをローカルで再生して、オーディオが機能することをテストしました。また、wav/µLaw ファイルをストリーミングして rtp をテストしました。これはすべてうまくいきます。
他の方法でも問題に直面しようとしました。たとえば、次のパイプラインを使用しました。これは、audiotestsrc/amrnb コーデックでうまく機能します。
gst-launch gstrtpbin name=rtpbin audiotestsrc ! アムンベンク!rtpamrpay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink ホスト=192.168.0.200 ポート=5002 rtpbin.send_rtcp_src_0 ! udpsink port=5003 host=192.168.0.200 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_1
しかし、ラメで同じパイプラインを使用すると、受信側でもエラーは発生しませんが、「速すぎる」出力があります。
送信者: gst-launch gstrtpbin name=rtpbin audiotestsrc ! lamemp3enc ! rtpmpapay ! rtpbin.send_rtp_sink_0 rtpbin.send_rtp_src_0 ! udpsink ホスト=192.168.0.200 ポート=5002 rtpbin.send_rtcp_src_0 ! udpsink port=5003 host=192.168.0.200 sync=false async=false udpsrc port=5005 ! rtpbin.recv_rtcp_sink_1
受信者: gst-launch -v udpsrc port=5002 caps="application/x-rtp, media=(string)audio, clock-rate=(int)90000, encoding-name=(string)MPA, payload=(int) 96" ! rtpmpadepay ! flmp3dec ! パルスシンク
私のパイプラインの何が問題なのか、誰にもわかりませんか?
ご支援ありがとうございました、
ホルヘ
html - HTML5 ライブ動画「ハック」
過去 2 か月間、私はサファリを「だまして」サーバー上のファイルを見ていると思わせようとしました。実際には、カメラからのライブ ビデオ ストリームであり、要求に応じて Gstreamer を使用してサポートされている形式にエンコードおよび多重化されています。ブラウザによって。HTML5 はプログレッシブ ビデオ ダウンロードをサポートしているため、少なくとも理論上は可能です。
私の結論は、ブラウザが HTML5 でビデオ ファイルをダウンロードするときに、主にシークのために部分的なコンテンツ リクエストを行うことを考えると、これは非常に複雑になるということです。サーバーがこの機能をサポートしていない場合、ファイルが完全にダウンロードされるまでビデオは再生されません。
他の誰かがこのアプローチを試してより成功しましたか? それとも、あきらめて、RTSP のような真のライブ ビデオ サポートがブラウザに統合されるのを待つべきでしょうか。
乾杯。
python - 外出先での GStreamer パイプラインへの/からのオーディオ ソースの追加と削除
Adder
プラグインを使用して 2 つのソース ストリームを混合する小さな Python スクリプトを作成しました。
audiotestsrc
プログラムを開始すると、プラグインによって生成された 1kHz のトーンが聞こえます。Enter を押すと、別の 500Hz テスト トーンが に接続され、Adder
一緒に聞こえます。(ちなみに、ミックスを聞くためにパイプラインを再び再生状態に設定する必要がある理由がよくわかりません。パイプラインを再起動せずに新しいソースをプラグインする方法はありますか?)
Enter をもう一度押すと、1kHz トーンがミックスから削除され、500Hz トーンが再生され続けるはずですが、代わりに何も聞こえなくなります。pulse pulsesink.c:528:gst_pulsering_stream_underflow_cb:<pulseaudio_output> Got underflow
デバッグ出力の最後の行に aが表示されます。次に何を試せばいいのかわからない。
完全なソースコードは次のとおりです。
java - gstreamer高速トランスコード
編集 Updated code with solution
amrをmp3にトランスコードする必要があるので、gstreamer-javaでgstreamerパイプラインを作成しました。次のようになります。
(もちろん、実際にはJava APIで構築されています)、私はトランスコードを次のように開始します
所要時間がオーディオの長さに等しいことを除いて、正常に動作します。これは許容できません。同等のもの
マシン速度でトランスコードします。
では、マシン速度のトランスコーディングを取得するには、パイプラインをどのように設定する必要がありますか?
clojureに堪能な人々のための完全な情報源はここにあります
video - 2 つのビデオを作成 (ピップ) する gstreamer コマンド
2 つの 320x240 ビデオを 1 つの 640x240 サイド バイ サイド ビデオに合成するには、gstreamer でどのコマンドを実行する必要がありますか?
video1.avi と video2.avi があるとしましょう
c - Gstreamerの画像スライドショー
xmlファイルを受け取るGStreamerアプリケーションに、画像のURL、重み、画面に表示される期間などの情報を提供するコンテンツを処理させたいと思います。
xmlファイルは、libxmlを使用してCで明確に処理できます。しかし、GStreamerライブラリを使用して画像のスライドショーを作成するにはどうすればよいですか。使用しているハードウェアとSDKがGStreamerのネイティブサポートを提供しているため、GStreamerを使用したいと思います。
同じことをするGStreamerプラグインはありますか?または、他にどのように行うことができますか。私はGStreamerの基本を知っており、GStreamerアプリケーション用のコードをCで記述できます。
queue - 機能していた gstreamer パイプラインが多数のキュー コンポーネントを必要とするのはなぜですか?
ビデオとオーディオを v4l2 ソースから flv 形式に記録する C プログラムがあります。このプログラムは、新しいバージョンの ubuntu では動作しないことに気付きました。gst-launch で問題のあるパイプラインを実行して、問題を再現する最も単純なパイプラインを見つけようとしました。ビデオ側に焦点を当てるだけで、以下に表示されるものに縮小しました.
だから私は働いていたgstreamerパイプラインを持っています:
xvimagesink の前に一連のキューを次々に追加してこれを行う場合にのみ機能します。これは機能しますが、パイプラインが機能し始める前に 2 秒の遅延が発生し、次のメッセージも表示されます。
上記の 2 番目のパイプラインは機能しますが、パイプラインが実行を開始する前に一時停止があり、メッセージが表示されます (このシステムは 2 遅いとは思いません。大量の RAM を搭載したコア i7 です)。
ここで何が起こっているのか説明できる人はいますか? 私は何を間違っていますか?
python - Python でのウェブカメラのキャプチャに関するこの例を参照してください
このスクリプトを自分のマシン ( ubuntu 10.04 32 bit ) で実行すると:
http://pygstdocs.berlios.de/pygst-tutorial/webcam-viewer.html
「開始」ボタンをクリックすると、次のエラーが表示されます。
なんで ?
java - Javaでのrtspストリーミング
gstreamerを使用してJavaでRTSPストリーミングサーバーを実装する方法のチュートリアルを教えてください。