2014-10-03 60 views
4

我一直在研究一個應用程序,我使用rtspsrc將音頻和視頻從一臺網絡攝像機收集到另一臺。但是我無法觀看相機中的流,從而無法驗證流是否按預期工作。要驗證該數據流是否正確,我想將它記錄在SD卡上,然後在計算機上播放該文件。問題是,我希望攝像頭儘可能多地進行解析,解碼,depayloading,因爲這是應用程序的目的。如何從rtspsrc解複用音頻和視頻,然後使用matroska mux保存到文件?

因此,我必須通過分路器分離音頻和視頻流,並進行解析,解碼等操作,然後將它們複用回matroska文件。

視頻解碼器已被省略,因爲尚未完成此相機。

解複用活播放接收器(作品)

gst-launch-0.10 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?resolution=1280x720&audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 name=d d. ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! autoaudiosink d. ! rtph264depay ! ffdec_h264 ! queue ! ffmpegcolorspace ! autovideosink 

多rtspsrc到的Matroska(作品)

gst-launch-1.0 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! queue ! matroskamux name=mux ! filesink location=/var/spool/storage/SD_DISK/testmovie.mkv rtspsrc location="rtsp://root:[email protected]/axis-media/media.amp?resolution=1280x720" latency=0 ! rtph264depay ! h264parse ! mux. 

單rtspsrc到的Matroska(失敗)

gst-launch-1.0 -v rtspsrc location="rtsp://host:[email protected]/XXX/XXXX?resolution=1280x720&audio=1&audiocodec=g711&audiosamplerate=8000&audiobitrate=64000" latency=0 name=d d. ! queue ! rtppcmudepay ! mulawdec ! audioresample ! audioconvert ! queue ! matroskamux name=mux d. ! queue ! rtph264depay ! h264parse ! queue ! mux. ! filesink location=/var/spool/storage/SD_DISK/testmoviesinglertsp.mkv 

最後一個例子失敗並顯示錯誤訊息

WARNING: erroneous pipeline: link without source element 

我是否誤解了matroska mux的用法,爲什麼上面的兩個例子可以工作,但不是最後一個?

回答

1

的問題是在這裏:

queue ! mux. ! filesink 

你需要做的

queue ! mux. mux. ! filesink 

MUX。意味着gst-launch應該從多路複用器中自動選擇一個pad。並鏈接它。你也可以手動指定一個名字,比如mux.src。因此在語法上你錯過了另一個元素/ pad來鏈接到另一個元素。

相關問題