प्रौद्योगिकी साझेदारी

ffmpeg इत्यनेन कोडेकं कोडेकं च सन्दर्भं ज्ञात्वा विशिष्टं कोडेकं कथं आरभते? aac आरम्भप्रक्रिया मोटेन निम्नलिखितरूपेण भवति

2024-07-12

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

1. एन्कोडरं अन्वेष्टुं avcodec_find_encoder_by_name इत्यस्य उपयोगं कुर्वन्,
const AVCodec * aacencoder = avcodec_नाम_द्वारा_एन्कोडर_खोज ("libx264");

एन्कोडरमूल्यानि सन्ति : १.
id एवी_कोडेक_आईडी_एच264 (27)
long_name libx264 H.264 / एवीसी / एमपीईजी-4 एवीसी / एमपीईजी-4 भाग 10
नाम libx264
pix_fmts AV_PIX_FMT_YUV420P (0) 1।

प्रकार AVMEDIA_TYPE_VIDEO (0) 1.1.


2. AVCodecContext कॉल करने के बाद * aacencodercontext = avcodec_alloc_context3 (aacencoder);.
एन्कोडरः उपरिष्टाद् एव अस्ति, परिवर्तनं नास्ति


एन्कोडरसन्दर्भे सामग्री अस्ति : १.
एन्कोडर सन्दर्भे codec_id तथा codec_type इत्येतयोः मूल्यानि सन्ति, अन्ये च स्वस्य पूर्वनिर्धारितमूल्येषु पुनः नियुक्ताः भवन्ति ।
कोडेक_आईडी एवी_कोडेक_आईडी_एच264 (27)
कोडेक_प्रकार AVMEDIA_TYPE_VIDEO (0) 1.1.
पूर्वनिर्धारितमूल्यानि निम्नलिखितरूपेण सन्ति ।

s-> समय_आधार = (AVRrational) {0,1};
s-> framerate = (AVRational){ 0, 1 };
s-> pkt_timebase = (AVRrational){ 0, 1 };


3. यदा avcodec_open2(encoderAVCodecContext, encoderAVCodec, NULL) मेथड् आह्वयते तदा बहवः पैरामीटर्स् सेट् भविष्यन्ति ।

वयं कल्पयितुं शक्नुमः यत् एन्कोडरं AAC इति कल्पयित्वा के के पैरामीटर्स् सेट् भविष्यन्ति?
प्रथमं तु अस्ति यत् एकस्य avframe इत्यस्य कियन्तः sample frames सन्ति ।

3.1 आरम्भे avcodec_find_encoder अथवा avcodec_find_decoder इत्यनेन आरभत ।
विधिः D:Ctoolyinshipinffmpeg-6.0sourcelibavcodecallcodecs.c इति सञ्चिकायां अस्ति ।


const AVCodec * avcodec_find_encoder (enum AVCodecID आईडी)
{
return find_codec (id, av_codec_is_encoder);
}

const AVCodec * avcodec_find_decoder (enum AVCodecID आईडी)
{
return find_codec (आईडी, av_codec_is_decoder);
}


3.2 find_codec मेथड् इत्यस्य मूलं av_codec_iterate मेथड् अस्ति

स्थिर const AVCodec * find_codec (enum AVCodecID आईडी, int (* एक्स) (const AVCodec *))
{
const AVCodec * पी, * प्रयोगात्मक = NULL;
शून्य * i = 0;

आईडी = remap_deprecated_codec_id (आईडी);

while ((p = av_codec_iterate(&i))) {
यदि (!x(p))
अनुवर्तते;
यदि (प->इड == इद) {
if (p-> क्षमताएँ & AV_CODEC_CAP_EXPERIMENTAL && !प्रयोगात्मक) {
प्रयोगात्मक = प;
} उत
return p;
        }
    }

प्रयोगात्मकं प्रत्यागच्छतु;
}

3.3 av_codec_iterate विधिः वास्तवतः codec_list तः तत्सम्बद्धं कोडेकं अन्वेषयति एषा सूची अतीव दीर्घा अस्ति, यत्र ffmepg इत्यस्य अन्तः सर्वेषां एन्कोडर्-डिकोडर-नामानि सन्ति ।
const AVCodec * av_codec_iterate (शून्य ** अपारदर्शी)
{
uintptr_t मैं = (uintptr_t) * अपारदर्शी;
const FFCodec * c = कोडेक_सूची [मैं];

ff_thread_once (& av_codec_स्थिर_प्रारंभ, av_codec_init_स्थिर);

यदि (ग) { .
* अपारदर्शक = (शून्य *) (मैं + 1);
return &c->p;
    }
return NULL;
}


वयं द्रष्टुं शक्नुमः यत् codec_list इत्यस्य अनुरूपाः बहुविधाः aacs सन्ति, तथा च वयं दृष्टान्तरूपेण ff_aac_encoder इत्यस्य उपयोगं कुर्मः ।
कोड् अन्वेष्टुं मया ज्ञातं यत् ff_aac_encoder इत्यस्य परिभाषा aacence.c इत्यस्मिन् अस्ति, यस्मिन् समाविष्टम् अस्ति


निम्नलिखित सूचना D:Ctoolyinshipinffmpeg-6.0sourcelibavcodecaacenc.c, 2019 इत्यस्मात् द्रष्टुं शक्यते।
Field.init = aac_encode_init, एकं फ़ंक्शनं भवितुमर्हति,
यथा भवान् aac_encode_init फंक्शन् तः द्रष्टुं शक्नोति, frame_size 1024 अस्ति
avctx-> फ्रेम_आकार = 1024;


const FFCodec ff_aac_एन्कोडर = {
.प.नाम = "aac", .
CODEC_LONG_NAME("AAC (उन्नत श्रव्य कोडिंग)"),
.p.type = एवमीडिया_प्रकार_श्रव्य, .
.p.id = एवी_कोडेक_आईडी_एएसी, .
.p.capabilities = एवी_कोडेक_कैप_डीआर1 | AV_CODEC_CAP_DELAY |
AV_CODEC_CAP_छोटे_अंतिम_फ्रेम, 1।
.priv_data_size = आकारके (AACEncContext), .
.init = aac_encode_init, .
FF_CODEC_ENCODE_CB (aac_एन्कोड_फ्रेम), 1।
.close = aac_encode_end, .
.defaults = aac_encode_defaults, .
.p.supported_samplerates = ff_mpeg4श्रव्य_नमूना_दर, .
.caps_internal = एफएफ_कोडेक_कैप_इनिट_सफाई, .
.p.sample_fmts = (const enum AVSampleFormat []){ एवी_नमूना_एफएमटी_एफएलटीपी,
AV_SAMPLE_FMT_NONE }, 1999 .
.p.priv_class = &aacenc_वर्ग, .
};

अस्मिन् क्षणे अद्यापि एकः प्रश्नः अस्ति यत् ff_aac_encoder कदा आरम्भः अभवत्?
वस्तुतः, ret = avcodec_open2 (avcodecContext, nullptr, nullptr) एतत् आन्तरिकरूपेण करोति;
मूलसङ्केतः मध्ये अस्ति

यदि (codec2->init) {
        
वस्तुतः तस्य उच्यते- १.
स्थिर av_cold int aac_encode_init (AVCodecContext * avctx)