2014-09-15 8 views
6

मुझे अपने कैमरे से आरटीएसपी के माध्यम से एक वीडियो स्ट्रीम प्राप्त करने और फ़ाइल में सहेजने की आवश्यकता है। यह सब gstreamer के माध्यम से किया जाना चाहिए।gstreamer के माध्यम से एमपी 4 फ़ाइल में आरटीएसपी वीडियो धारा को कैसे सहेजना है?

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! avdec_h264 ! mp4mux ! filesink location=result3.mp4 

लेकिन यह त्रुटि देता है: "गलत पाइपलाइन: mp4mux0 को avdec_h264-0 लिंक नहीं कर सके"

gst-launch-1.0 rtspsrc location=rtsp://192.168.1.184/live2.sdp ! queue ! rtph264depay ! h264parse ! mp4mux ! filesink location=result3.mp4 

यह शुरू होता है

कुछ गूगल खोज के बाद, मैं निम्नलिखित की कोशिश की काम कर रहा है, लेकिन परिणाम फ़ाइल वीएलसी के माध्यम से बजाने योग्य नहीं है।

करने का सही आदेश क्या है? और यदि आप h264parse और avdec_h264 के बीच चुनते हैं, तो क्या आप कृपया बता सकते हैं क्यों?

+2

@downvote: मुझे शीर्षक के अलावा इस प्रश्न के साथ कुछ भी गलत नहीं लगता है। @ जस्टर: 1) आप इसे 'h264parse' के बिना भी आजमा सकते हैं। 2) क्या धारा बिल्कुल खेलती है? –

उत्तर

6

दूसरा आदेश सही दिखता है। कच्चे एच 264 वीडियो डेटा थोड़ा मुश्किल है क्योंकि इसमें दो विशेषताएं हैं - "संरेखण" और "स्ट्रीम-प्रारूप", जो भिन्न हो सकते हैं। h264parse h264 डेटा को विभिन्न h264 से संबंधित GStreamer तत्वों के लिए आवश्यक रूप में रूपांतरित कर सकता है।

avdec_h264 एक डिकोडर तत्व है। आप डेटा को डीकोड नहीं करना चाहते हैं क्योंकि आप स्पष्ट रूप से इसे प्रदर्शित नहीं कर रहे हैं। आप एक आरटीएसपी स्ट्रीम से एन्कोडेड एच 264 डेटा को एक एमपी 4 कंटेनर फ़ाइल में डाल रहे हैं।

फ़ाइल नहीं है, तो आप जांच करनी चाहिए कि धारा अच्छा है, या मीडिया प्लेयर के लिए प्रयास करें और देखें कि क्या वे काम करते हैं (एम प्लेयर, मीडिया प्लेयर, क्विकटाइम, जो कुछ भी)।

आप "matroskamux" तत्व का उपयोग कर एक matroska कंटेनर फ़ाइल में muxing भी कोशिश कर सकते हैं।

+0

मैंने मैट्रोस्का और tsmux की कोशिश की, वे – Juster

10

आपको फ्लैग (स्ट्रीम का अंत) जोड़ने की आवश्यकता है ताकि mp4mux फ़ाइल को अंतिम रूप दे सके या अन्यथा आप दूषित गैर प्लेयबल फ़ाइल प्राप्त कर सकें।

gst-launch -e rtspsrc location=url ! decodebin ! x264enc ! mp4mux ! filesink location=file.mp4 
+0

काम करते हैं मेरे मामले में इस आदेश ने प्ले करने योग्य फ़ाइल बनाई लेकिन सभी फ्रेम पहले फ्रेम की तरह दिखते हैं। जैसे कि वीडियो जमा हो गया है। – alexolut

+0

लगता है यह में एक बग [वीएलसी] (https://trac.videolan.org/vlc/ticket/17528) है। – alexolut

संबंधित मुद्दे