कैमरा और माइक्रोफ़ोन से GStreamer का उपयोग करके ऑडियो और वीडियो दोनों को एक फ़ाइल में सहेजें


0

मुझे अपने कैमरे से वीडियो रिकॉर्ड करने और अपने माइक से एक साथ ऑडियो रिकॉर्ड करने का एक तरीका चाहिए, जैसे कि वे एक फ़ाइल में सहेजे जाते हैं।

वर्तमान में, मैं अब वीडियो रिकॉर्ड करने का तरीका ...

gst-launch-1.0 -e autovideosrc ! videoconvert ! matroskamux ! filesink location=recording.mkv

और ऑडियो ...

gst-launch-1.0 -e autoaudiosrc ! audioconvert ! wavenc ! filesink location=recording.wav

...अलग से।

मुझे जो चाहिए वह फाइल है जिसमें वीडियो से recording.mkvऔर ऑडियो से है recording.wav


मुझे कुछ ऐसा मिला है जो थोड़ा संभलकर काम कर सकता है।

gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

यह वीडियो रिकॉर्ड करता है, लेकिन ऑडियो नहीं, हालांकि, जैसा कि मैंने कहा, मुझे लगता है कि ऑडियो को रिकॉर्ड करने के लिए इसे थोड़ा छोटा करने की जरूरत है।



@ music2myer तो मुझे वीडियो और ऑडियो को अलग से रिकॉर्ड करना होगा और फिर उन्हें संक्षिप्त करना होगा? क्या मैं उन्हें एक ही फ़ाइल में एक बार (रिकॉर्डिंग करते समय) नहीं बचा सकता?
Hanlon

मैं gstreamer की विशेषताओं को नहीं जानता, लेकिन मैंने जो सवाल gst-launch पर प्रलेखन को पढ़ने के लिए सुझाया है, उसके लिए जो उत्तर दिया गया है, जो कि कॉनैट फीचर्स की पेशकश करते हुए, मुझे लगता है कि यह वास्तविक समय के ऑडियो और वीडियो कैप्चर भी कर सकता है, जैसा कि सुझाव के अनुसार दिया गया है। जवाब आप नीचे पता लगा। खुशी है कि आप इसे काम करने में सक्षम थे।
संगीत 2

जवाबों:


1

यह रहा:

gst-launch-1.0 -e autovideosrc ! queue ! videoconvert ! mkv. autoaudiosrc ! queue ! audioconvert ! mkv. matroskamux name=mkv ! filesink location=test.mkv sync=false

यह इस तरह काम करता है:

  1. हमें वेबकेम से वीडियो फीड का उपयोग करना है autovideosrc
  2. इसके बाद, हम उस आउटपुट को स्वयं थ्रेड में रखते हैं और इसे आउटपुट करते हैं queue
  3. वीडियो फ़ीड उस स्थान पर queueजाती है videoconvertजहां इसे कनवर्ट किया गया है (मुझे यकीन नहीं है कि यह आवश्यक कदम है)।
  4. अंत में, वीडियो फीड नाम के तत्व में जाता है mkv, जो कि प्रकार का होता है matroskamux। यह तत्व वीडियो फ़ीड को मैट्रोस्का में परिवर्तित करता है।
  5. उसके बाद हमें ऑडियो फीड का उपयोग करना है autoaudiosrc
  6. हम autoaudiosrcदूसरे धागे से फ़ीड का उपयोग करते हैं queue
  7. queueऑडियो से audioconvertयह परिवर्तित हो जाता है (जहाँ ज़रूरी नहीं है) भी।
  8. परिवर्तित ऑडियो उसी matroskamuxतत्व में जाता है mkv। यहां ऑडियो फीड को मटरोस्का में बदल दिया गया है।
  9. चूंकि ऑडियो और वीडियो फ़ीड दोनों एक ही तत्व पर जाते हैं, इसलिए उन्हें एक मट्रोस्का फ़ीड में मिला दिया जाता है।
  10. अंत में, उस Matroska फ़ीड का उपयोग करके फ़ाइल में सहेजा जाता है filesinksync=falseयदि आपका कंप्यूटर जानवर नहीं है तो आपको शायद सेट करना पड़ेगा ।

बस। इसके अलावा, अगर किसी की सोच कि मैंने सवाल में क्यों लिखा है कि यह कमांड ऑडियो रिकॉर्ड नहीं करता है, यह इसलिए है क्योंकि मैं माइक चालू करना भूल गया था।


नमस्ते। मैं python gstreammer के अंदर आपकी कमांड का उपयोग कर रहा हूं, लेकिन जब मैं कुछ ऑडियो / वीडियो src को पाइपलाइन insteqad autovideosrc पर प्लग करता हूं तो यह काम नहीं कर रहा है। क्या आपने इसके लिए कभी अजगर का इस्तेमाल किया है?
DGoiko

@DGoiko नमस्कार! मैंने इसे पायथन का उपयोग करने की कोशिश नहीं की, लेकिन मैंने इसे सी में आज़माया और यह काम किया।
Hanlon

मैंने इसे एक appsrc से जोड़ा है (इसके समान टमाटर: github.com/streamlink/streamlink/blob/master/examples/… , लेकिन playbin और कुछ कस्टम डिब्बे के बजाय uridecodebin का उपयोग करके, एक को रिकॉर्ड करने के लिए अपनी पाइपलाइन में शामिल किया गया है) ) और यह भीख माँगना बंद कर देता है। खिलाड़ी स्वयं ठीक है: अगर मैं ऑडियो और वीडियो टीज़ को कतारों के साथ autoaudiosrc + autovideosrc + flac ऑडियो रिकॉर्डिंग से जोड़ता हूं तो सब कुछ ठीक है, लेकिन अगर मैं वीडियो कतार लगाता हूं तो यह शुरुआत में ही जमा देता है। डिबग 3 कुछ भी नहीं दिखाता ... अजीब है।
DGoiko

क्या आप कुछ कोड पोस्ट कर सकते हैं? अधिमानतः आप एक नया प्रश्न खोल सकते हैं, लेकिन पेस्टेबिन को कोड कॉपी करना भी ठीक है। बस मुझे यहाँ लिंक देना सुनिश्चित करें।
हनलन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.