बदलता हूं तो मुझे हाल ही में एक अजीब समस्या है। विंडोज़ (स्टीरियो/क्वाड/5.1) में मेरी ऑडियो कॉन्फ़िगरेशन कैसे सेट अप किया गया है, इस पर निर्भर करता है कि avcodec_open2() के लिए ffmpeg कॉल त्रुटि -22 या बस काम करता है। उस त्रुटि के बारे में ज्यादा जानकारी नहीं मिल रही है, मैंने सोचा कि मुझे इसके बारे में यहां पूछना चाहिए। मुख्य प्रवाह इस प्रकार है:ffmpeg avcodec_open2 रिटर्न -22 अगर मैं अपना स्पीकर कॉन्फ़िगरेशन
c = st->codec;
avformat_alloc_output_context2(&oc, NULL, NULL, "video.mpeg");
oc->fmt->audio_codec = AV_CODEC_ID_MP2;
AVDictionary* dict = NULL;
ret = av_dict_set(&dict, "ac", "2", 0);
c->request_channels = 2;
ret = avcodec_open2(c, codec, &dict); //HERE IT FAILS WITH -22 if speaker configuration is not stereo
कोडेक संदर्भ 'सी' एक धारा में इस तरह की स्थापना की है: इसमें से अधिकांश muxing उदाहरण के उनके एक पाया से नकल है
st = avformat_new_stream(oc, *codec);
c = st->codec;
c->channels = 2;
c->channel_layout = AV_CH_LAYOUT_STEREO;
c->sample_fmt = AV_SAMPLE_FMT_S16;
c->codec_id = codec_id;
दस्तावेज में। सब कुछ अपेक्षित काम करता है अगर विंडोज़ में मैंने आउटपुट को स्टीरियो में सेट किया है।
यदि मैं अपनी स्पीकर कॉन्फ़िगरेशन 5.1 (6 चैनल) पर सेट करता हूं, तो avcodec_open2 त्रुटि -22 के साथ विफल रहता है।
तो मुझे समझ में मुश्किल है कि मैं क्या गलत कर रहा हूं। आम तौर पर यह मेरे स्पीकर कॉन्फ़िगरेशन और avcodec_open2 के परिणाम के बीच कोई संबंध नहीं होना चाहिए।
क्या कुछ अन्य पैरामीटर हैं जिन्हें मुझे सेट करने की आवश्यकता है?
बस अतिरिक्त स्पष्ट होना, खिड़कियां वक्ता विन्यास स्टीरियो करने के लिए सेट है, तो सब कुछ उम्मीद के रूप में काम करता है। – Alex
मैंने गुगल किया और मैंने पाया कि आपको कुछ avvlog_set_level (AV_LOG_VERBOSE) जैसे कुछ प्रयास करना चाहिए; त्रुटि को और अधिक विस्तृत समझने के लिए। फिर 'my_log_callback शून्य करें (शून्य * पीआरटी, int स्तर, कॉन्स char * fmt, va_list vargs) {printf (" \ n% s ", fmt);}' फिर 'av_log_set_callback (my_log_callback);' – SSpoke
लेकिन त्रुटि '-22 'वास्तव में त्रुटि' 22' है क्योंकि किसी भी संभावित संख्या का मतलब है कि कितना बाइट इसे वापस करना चाहिए .. त्रुटि 22 '# परिभाषित करें EINVAL 22/* अमान्य तर्क */'जिसका अर्थ है कि तर्क अमान्य है। – SSpoke