u_suda
2018年11月28日 10時51分
お世話になります。
gstreamerを使用しています。
Armadillo-840m 1台にカメラとLCDを接続したときは、ストリーミングデータの表示と保存が出来ました。
Armadillo-840m 2台をWiFi接続してストリーミングデータの受け渡しを行いたいと考えています。
表示ができることは確認しましたが、保存ができません。
WiFi経由したときのストリーミングデータの保存方法を教えてください。
そもそもWiFi経由したときに表示と保存の両立が可能でしょうか。
ご存知の方いましたらご教授願います。
送信側:
Armadillo-840m
Armadillo-810 カメラモジュールセット01(B コネクタ用)
Armadillo-WLAN(AWL13)
受信側:
Armadillo-840m
Armadillo-840 拡張ボード 01(C コネクタ用)
Armadillo-WLAN(AWL13)
共通環境:
カーネル :linux-3.4-at26
atmark-dist:atmark-dist-20180330
以上、よろしくお願いいたします。
コメント
u_suda
ご指摘ありがとうございます。
> 差し支えなければ、送信側と受信側でどんなパイプラインを作っているのか教えていただけますか?
初歩的なことを忘れており申し訳ございません。
現在、使用しているパイプラインおよび受信側のエラーログを添付します。
送信側パイプライン:
Sender.sh
受信側パイプラインおよびエラーログ:
errorlog1.txt
> rtspsrc ! h264parse ! acmh264dec ! acmfbdevsink
> のようなパイプラインを作っていると思うのですが、
> acmh264dec以降を filesinkで置き換えて
>
> rtspsrc ! h264parse ! h264parse ! filesink
> としたら、ファイルに保存できないでしょうか?
また、受信側のパイプラインをご指摘の通りに変更しましたが、未だ保存することができませんでした。
変更後のパイプラインとエラーログは下記の様に添付します。
errorlog2.txt
以上、よろしくお願い致します。
ファイル | ファイルの説明 |
---|---|
Sender.sh | 送信側パイプライン |
errorlog1.txt | 受信側パイプラインおよびエラーログ |
errorlog2.txt | 変更後の受信側パイプラインおよびエラーログ |
at_kojiro.yamada
u_suda
> root/以下はストリーミングデータに対して十分な容量を持っていないのではないでしょうか?
仰る通りでした。
保存先をUSBメモリにし、rtpbin以下を下記にしたところ、"Ctrl+c"を押すまで正常に動作し、60MB程の保存ファイルが作成されました。
rtpbin. ! queue max-size-buffers=20000 ! rtph264depay ! h264parse ! h264parse ! queue max-size-buffers=20000 ! filesink location=/mnt/test.mp4
しかし、保存ファイルをArmadillo上で再生しようとした際に下記のようなエラーが出現しました。
また、保存ファイルはPC上でも再生できず、コーデック情報も全く表示されませんでした。
保存する拡張子名が間違っているのか、それともパイプラインに必要な要素が抜けてしまっているのかご教授願います。
gst-launch-1.0 filesrc location=/mnt/test.mp4 ! qtdemux name=demux0 \ demux0.video_0 ! queue ! acmh264dec stride=800 ! acmfbdevsink device=/dev/fb0 Setting pipeline to PAUSED ... Pipeline is PREROLLING ... ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux0: This file is invalid and cannot be played. Additional debug info: qtdemux.c(597): gst_qtdemux_pull_atom (): /GstPipeline:pipeline0/GstQTDemux:demux0: atom has bogus size 151933980 ERROR: pipeline doesn't want to preroll. Setting pipeline to NULL ... Freeing pipeline ...
以上、よろしくお願い致します。
at_kojiro.yamada
> > root/以下はストリーミングデータに対して十分な容量を持っていないのではないでしょうか?
> 仰る通りでした。
> 保存先をUSBメモリにし、rtpbin以下を下記にしたところ、"Ctrl+c"を押すまで正常に動作し、60MB程の保存ファイルが作成されました。
>
>
> rtpbin. ! queue max-size-buffers=20000 ! rtph264depay ! h264parse ! h264parse ! queue max-size-buffers=20000 ! filesink location=/mnt/test.mp4 >
h264parseが2つありますが、フォーラムに投稿する際に打ち間違えたのでしょうか?
送信側で Ctrl+C を押下するとどうなるでしょうか?
>
> しかし、保存ファイルをArmadillo上で再生しようとした際に下記のようなエラーが出現しました。
> また、保存ファイルはPC上でも再生できず、コーデック情報も全く表示されませんでした。
>
> 保存する拡張子名が間違っているのか、それともパイプラインに必要な要素が抜けてしまっているのかご教授願います。
>
>
>
> gst-launch-1.0 filesrc location=/mnt/test.mp4 ! qtdemux name=demux0 \ demux0.video_0 ! queue ! acmh264dec stride=800 ! acmfbdevsink device=/dev/fb0 > > Setting pipeline to PAUSED ... > Pipeline is PREROLLING ... > ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux0: This file is invalid and cannot be played. > Additional debug info: > qtdemux.c(597): gst_qtdemux_pull_atom (): /GstPipeline:pipeline0/GstQTDemux:demux0: > atom has bogus size 151933980 > ERROR: pipeline doesn't want to preroll. > Setting pipeline to NULL ... > Freeing pipeline ... >
>
>
> 以上、よろしくお願い致します。
u_suda
ご回答ありがとうございます。
> >
> > rtpbin. ! queue max-size-buffers=20000 ! rtph264depay ! h264parse ! h264parse ! queue max-size-buffers=20000 ! filesink location=/mnt/test.mp4 > >
>
> h264parseが2つありますが、フォーラムに投稿する際に打ち間違えたのでしょうか?
以前回答して頂いた際にh264parseを2つ記載されていましたので2つ記載しました。
また、h26parseを1つにした際の結果は2つつけていた際の結果と変化はなく、作成した保存ファイルは再生できませんでした。
>
> 送信側で Ctrl+C を押下するとどうなるでしょうか?
送信側で Ctrl+C を押下した際には送信側のGstreamerのプラグインは終了しましたが、受信側のプラグインは起動したままでした。
そのため、受信側でも Ctrl+C を押してプラグインを終了させて保存ファイルを作成しました。
また、保存ファイルの内容としては変化はなく、ファイルサイズが十分あるのに再生することができませんでした。
以上、よろしくお願い致します。
at_ohsawa
gst-launch-1.0 filesrc location=/mnt/test.mp4 ! qtdemux name=demux0 (略)
qtdemuxは入力されるバッファがquicktime形式であることを期待しますが、
保存するときに、生のh.264をそのままfilesinkに書き出しているので、
データの形式が一致していません。
保存する時のパイプラインのfilesinkの前にqtmuxを追加してください。
(略) queue max-size-buffers=20000 ! !filesink location=/mnt/test.mp4
参照)Armadillo-840製品マニュアル 15.7.1. コンテナの扱い
https://manual.atmark-techno.com/armadillo-840/armadillo-840_product_ma…
at_ohsawa
u_suda
at_kojiro.yamada
2018年12月3日 14時02分
> Armadillo-840m 2台をWiFi接続してストリーミングデータの受け渡しを行いたいと考えています。
> 表示ができることは確認しましたが、保存ができません。
差し支えなければ、送信側と受信側でどんなパイプラインを作っているのか教えていただけますか?
rtspsrc ! h264parse ! acmh264dec ! acmfbdevsink
のようなパイプラインを作っていると思うのですが、
acmh264dec以降を filesinkで置き換えて
rtspsrc ! h264parse ! h264parse ! filesink
としたら、ファイルに保存できないでしょうか?