Mediastreamer2 VoIP ಎಂಜಿನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ. ಭಾಗ 1

ಲೇಖನದ ವಸ್ತುವನ್ನು ನನ್ನಿಂದ ತೆಗೆದುಕೊಳ್ಳಲಾಗಿದೆ ಝೆನ್ ಚಾನೆಲ್.

ಪರಿಚಯ

ಈ ಲೇಖನವು Mediastreamer2 ಎಂಜಿನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ನೈಜ-ಸಮಯದ ಮಾಧ್ಯಮ ಸಂಸ್ಕರಣೆಯ ಲೇಖನಗಳ ಸರಣಿಯ ಆರಂಭವಾಗಿದೆ. ಪ್ರಸ್ತುತಿಯು ಲಿನಕ್ಸ್ ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಕೆಲಸ ಮಾಡುವ ಕನಿಷ್ಠ ಕೌಶಲ್ಯ ಮತ್ತು ಸಿ ಭಾಷೆಯಲ್ಲಿ ಪ್ರೋಗ್ರಾಮಿಂಗ್ ಅನ್ನು ಒಳಗೊಂಡಿರುತ್ತದೆ.

Mediastreamer2 ಎಂಬುದು ಜನಪ್ರಿಯ ಮುಕ್ತ-ಮೂಲ ಸಾಫ್ಟ್‌ವೇರ್ voip ಫೋನ್ ಯೋಜನೆಯ ಹಿಂದೆ VoIP ಎಂಜಿನ್ ಆಗಿದೆ. ಲಿನ್‌ಫೋನ್. Linphone Mediastreamer2 ನಲ್ಲಿ ಧ್ವನಿ ಮತ್ತು ವೀಡಿಯೊಗೆ ಸಂಬಂಧಿಸಿದ ಎಲ್ಲಾ ಕಾರ್ಯಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸುತ್ತದೆ. ಈ ಮೀಡಿಯಾಸ್ಟ್ರೀಮರ್ ಪುಟದಲ್ಲಿ ಎಂಜಿನ್ ವೈಶಿಷ್ಟ್ಯಗಳ ವಿವರವಾದ ಪಟ್ಟಿಯನ್ನು ನೋಡಬಹುದು. ಮೂಲ ಕೋಡ್ ಇಲ್ಲಿದೆ: ಗಿಟ್ಲಾಬ್.

ಪಠ್ಯದಲ್ಲಿ, ಅನುಕೂಲಕ್ಕಾಗಿ, ಮೀಡಿಯಾಸ್ಟ್ರೀಮರ್ 2 ಪದದ ಬದಲಿಗೆ ನಾವು ಅದರ ರಷ್ಯನ್ ಸಂಕೇತವನ್ನು ಬಳಸುತ್ತೇವೆ: "ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್".

ಅದರ ರಚನೆಯ ಇತಿಹಾಸವು ಸಂಪೂರ್ಣವಾಗಿ ಸ್ಪಷ್ಟವಾಗಿಲ್ಲ, ಆದರೆ ಅದರ ಮೂಲ ಕೋಡ್ ಮೂಲಕ ನಿರ್ಣಯಿಸುವುದು, ಇದು ಹಿಂದೆ ಗ್ರಂಥಾಲಯವನ್ನು ಬಳಸಿದೆ ಗ್ಲಿಬ್, ಅದು ಇದ್ದಂತೆ, ಸಂಭವನೀಯ ದೂರದ ಸಂಬಂಧವನ್ನು ಸೂಚಿಸುತ್ತದೆ ಜಿಸ್ಟ್ರೀಮರ್. ಇದಕ್ಕೆ ಹೋಲಿಸಿದರೆ ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಹೆಚ್ಚು ಹಗುರವಾಗಿ ಕಾಣುತ್ತದೆ. ಲಿನ್‌ಫೋನ್‌ನ ಮೊದಲ ಆವೃತ್ತಿಯು 2001 ರಲ್ಲಿ ಕಾಣಿಸಿಕೊಂಡಿತು, ಆದ್ದರಿಂದ ಈ ಸಮಯದಲ್ಲಿ ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಅಸ್ತಿತ್ವದಲ್ಲಿದೆ ಮತ್ತು ಸುಮಾರು 20 ವರ್ಷಗಳವರೆಗೆ ಅಭಿವೃದ್ಧಿಗೊಳ್ಳುತ್ತದೆ.

ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್‌ನ ಹೃದಯಭಾಗದಲ್ಲಿ "ಡೇಟಾ ಫ್ಲೋ" (ಡೇಟಾ ಫ್ಲೋ) ಎಂಬ ಆರ್ಕಿಟೆಕ್ಚರ್ ಇದೆ. ಅಂತಹ ವಾಸ್ತುಶಿಲ್ಪದ ಉದಾಹರಣೆಯನ್ನು ಕೆಳಗಿನ ಚಿತ್ರದಲ್ಲಿ ತೋರಿಸಲಾಗಿದೆ.

Mediastreamer2 VoIP ಎಂಜಿನ್ ಅನ್ನು ಅನ್ವೇಷಿಸಲಾಗುತ್ತಿದೆ. ಭಾಗ 1

ಈ ಆರ್ಕಿಟೆಕ್ಚರ್‌ನಲ್ಲಿ, ಡೇಟಾ ಸಂಸ್ಕರಣಾ ಅಲ್ಗಾರಿದಮ್ ಅನ್ನು ಪ್ರೋಗ್ರಾಂ ಕೋಡ್‌ನಿಂದ ಅಲ್ಲ, ಆದರೆ ಯಾವುದೇ ಕ್ರಮದಲ್ಲಿ ಜೋಡಿಸಬಹುದಾದ ಕಾರ್ಯಗಳನ್ನು ಸಂಪರ್ಕಿಸಲು ಸ್ಕೀಮ್ (ಗ್ರಾಫ್) ಮೂಲಕ ನಿರ್ದಿಷ್ಟಪಡಿಸಲಾಗಿದೆ. ಈ ಕಾರ್ಯಗಳನ್ನು ಫಿಲ್ಟರ್ ಎಂದು ಕರೆಯಲಾಗುತ್ತದೆ.

ಈ ಆರ್ಕಿಟೆಕ್ಚರ್ VoIP ಫೋನ್ RTP ಸಂಚಾರ ಪ್ರಕ್ರಿಯೆ ಮತ್ತು ಪ್ರಸರಣ ಯೋಜನೆಗೆ ಸಂಪರ್ಕಗೊಂಡಿರುವ ಫಿಲ್ಟರ್‌ಗಳ ರೂಪದಲ್ಲಿ ಮಾಧ್ಯಮ ಸಂಸ್ಕರಣಾ ಕಾರ್ಯವನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ಸಾಧ್ಯವಾಗಿಸುತ್ತದೆ.

ಫಿಲ್ಟರ್‌ಗಳನ್ನು ಅನಿಯಂತ್ರಿತ ಸ್ಕೀಮ್‌ಗಳಾಗಿ ಸಂಯೋಜಿಸುವ ಸಾಮರ್ಥ್ಯ, ಹೊಸ ಫಿಲ್ಟರ್‌ಗಳ ಸರಳ ಅಭಿವೃದ್ಧಿ, ಸ್ವತಂತ್ರ ಪ್ರತ್ಯೇಕ ಲೈಬ್ರರಿಯಾಗಿ ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್‌ನ ಅನುಷ್ಠಾನ, ಅದನ್ನು ಇತರ ಯೋಜನೆಗಳಲ್ಲಿ ಬಳಸಲು ಅನುಮತಿಸುತ್ತದೆ. ಇದಲ್ಲದೆ, ಯೋಜನೆಯು VoIP ಕ್ಷೇತ್ರದಲ್ಲಿರಬಹುದು, ಏಕೆಂದರೆ ಸ್ವತಃ ತಯಾರಿಸಿದ ಫಿಲ್ಟರ್ಗಳನ್ನು ಸೇರಿಸಲು ಸಾಧ್ಯವಿದೆ.

ಪೂರ್ವನಿಯೋಜಿತವಾಗಿ ಒದಗಿಸಲಾದ ಫಿಲ್ಟರ್ ಲೈಬ್ರರಿಯು ಸಾಕಷ್ಟು ಶ್ರೀಮಂತವಾಗಿದೆ ಮತ್ತು ಈಗಾಗಲೇ ಹೇಳಿದಂತೆ, ನಮ್ಮದೇ ವಿನ್ಯಾಸದ ಫಿಲ್ಟರ್‌ಗಳೊಂದಿಗೆ ವಿಸ್ತರಿಸಬಹುದು. ಆದರೆ ಮೊದಲು, ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್‌ನೊಂದಿಗೆ ಬರುವ ರೆಡಿಮೇಡ್ ಫಿಲ್ಟರ್‌ಗಳನ್ನು ವಿವರಿಸೋಣ. ಅವರ ಪಟ್ಟಿ ಇಲ್ಲಿದೆ:

ಧ್ವನಿ ಶೋಧಕಗಳು

ಆಡಿಯೋ ಕ್ಯಾಪ್ಚರ್ ಮತ್ತು ಪ್ಲೇಬ್ಯಾಕ್

  • ಅಲ್ಸಾ (ಲಿನಕ್ಸ್): MS_ALSA_WRITE, MS_ALSA_READ
  • Android ಸ್ಥಳೀಯ ಧ್ವನಿ (ಲಿಬ್ಮೀಡಿಯಾ): MS_ANDROID_SOUND_WRITE, MS_ANDROID_SOUND_READ
  • ಆಡಿಯೊ ಕ್ಯೂ ಸೇವೆ (Mac OS X): MS_AQ_WRITE, MS_AQ_READ
  • ಆಡಿಯೋ ಯುನಿಟ್ ಸೇವೆ (Mac OS X)
  • ಕಲೆಗಳು (ಲಿನಕ್ಸ್): MS_ARTS_WRITE, MS_ARTS_READ
  • ಡೈರೆಕ್ಟ್ ಸೌಂಡ್ (ವಿಂಡೋಸ್): MS_WINSNDDS_WRITE, MS_WINSNDDS_READ
  • ಫೈಲ್ ಪ್ಲೇಯರ್ (raw/wav/pcap ಫೈಲ್‌ಗಳು) (Linux): MS_FILE_PLAYER
  • ಫೈಲ್ ಪ್ಲೇಯರ್ (ಕಚ್ಚಾ/ವಾವ್ ಫೈಲ್‌ಗಳು) (ವಿಂಡೋಸ್): MS_WINSND_READ
  • ಫೈಲ್‌ಗೆ ಬರೆಯಿರಿ (wav ಫೈಲ್‌ಗಳು) (ಲಿನಕ್ಸ್): MS_FILE_REC
  • ಫೈಲ್‌ಗೆ ಬರೆಯಿರಿ (wav ಫೈಲ್‌ಗಳು) (ವಿಂಡೋಸ್): MS_WINSND_WRITE
  • ಮ್ಯಾಕ್ ಆಡಿಯೋ ಯೂನಿಟ್ (ಮ್ಯಾಕ್ ಓಎಸ್ ಎಕ್ಸ್)
  • MME (ವಿಂಡೋಸ್)
  • OSS (Linux): MS_OSS_WRITE, MS_OSS_READ
  • PortAudio (Mac OS X)
  • PulseAudio (Linux): MS_PULSE_WRITE, MS_PULSE_READ
  • ವಿಂಡೋಸ್ ಸೌಂಡ್ (ವಿಂಡೋಸ್)

ಆಡಿಯೋ ಎನ್ಕೋಡಿಂಗ್/ಡಿಕೋಡಿಂಗ್

  • G.711 a-law: MS_ALAW_DEC, MS_ALAW_ENC
  • G.711 µ-ಕಾನೂನು: MS_ULAW_DEC, MS_ULAW_ENC
  • G.722: MS_G722_DEC, MS_G722_ENC
  • G.726: MS_G726_32_ENC, MS_G726_24_ENC, MS_G726_16_ENC
  • GSM: MS_GSM_DEC, MS_GSM_ENC
  • ಲೀನಿಯರ್ PCM: MS_L16_ENC, MS_L16_DEC
  • ಸ್ಪೀಕ್ಸ್: MS_SPEEX_ENC, MS_SPEEX_DEC

ಧ್ವನಿ ಸಂಸ್ಕರಣೆ

  • ಚಾನಲ್ ಪರಿವರ್ತನೆ (ಮೊನೊ->ಸ್ಟಿರಿಯೊ, ಸ್ಟಿರಿಯೊ->ಮೊನೊ): MS_CHANNEL_ADAPTER
  • ಸಮ್ಮೇಳನ: MS_CONF
  • DTMF ಜನರೇಟರ್: MS_DTMF_GEN
  • ಎಕೋ ರದ್ದತಿ (ಸ್ಪೀಕ್ಸ್): MS_SPEEX_EC
  • ಈಕ್ವಲೈಜರ್: MS_EQUALIZER
  • ಮಿಕ್ಸರ್: MS_MIXER
  • ಪ್ಯಾಕೆಟ್ ನಷ್ಟ ಪರಿಹಾರಕ (PLC): MS_GENERIC_PLC
  • ಮರು ಮಾದರಿ: MS_RESAMPLE
  • ಟೋನ್ ಡಿಟೆಕ್ಟರ್: MS_TONE_DETECTOR
  • ವಾಲ್ಯೂಮ್ ಕಂಟ್ರೋಲ್ ಮತ್ತು ಸಿಗ್ನಲ್ ಮಟ್ಟದ ಮಾಪನ: MS_VOLUME

ವೀಡಿಯೊ ಫಿಲ್ಟರ್‌ಗಳು

ವೀಡಿಯೊ ಸೆರೆಹಿಡಿಯುವಿಕೆ ಮತ್ತು ಪ್ಲೇಬ್ಯಾಕ್

  • ಆಂಡ್ರಾಯ್ಡ್ ಕ್ಯಾಪ್ಚರ್
  • android ಪ್ಲೇಬ್ಯಾಕ್
  • AV ಫೌಂಡೇಶನ್ ಕ್ಯಾಪ್ಚರ್ (iOS)
  • AV ಫೌಂಡೇಶನ್ ಪ್ಲೇಬ್ಯಾಕ್ (iOS)
  • ಡೈರೆಕ್ಟ್ ಶೋ ಕ್ಯಾಪ್ಚರ್ (ವಿಂಡೋಸ್)
  • ಡ್ರಾಡಿಬ್ ಪ್ಲೇಬ್ಯಾಕ್ (ವಿಂಡೋಸ್)
  • ಬಾಹ್ಯ ಪ್ಲೇಬ್ಯಾಕ್ - ಮೇಲಿನ ಪದರಕ್ಕೆ ವೀಡಿಯೊವನ್ನು ಕಳುಹಿಸಲಾಗುತ್ತಿದೆ
  • GLX ಪ್ಲೇಬ್ಯಾಕ್ (Linux): MS_GLXVIDEO
  • ಮಿರೆ - ಸಂಶ್ಲೇಷಿತ ಚಲಿಸುವ ಚಿತ್ರ: MS_MIRE
  • OpenGL ಪ್ಲೇಬ್ಯಾಕ್ (Mac OS X)
  • OpenGL ES2 ಪ್ಲೇಬ್ಯಾಕ್ (ಆಂಡ್ರಾಯ್ಡ್)
  • ಕ್ವಿಕ್‌ಟೈಮ್ ಕ್ಯಾಪ್ಚರ್ (Mac OS X)
  • SDL ಪ್ಲೇಬ್ಯಾಕ್: MS_SDL_OUT
  • ಸ್ಥಿರ ಚಿತ್ರ ಔಟ್‌ಪುಟ್: MS_STATIC_IMAGE
  • Linux ಗಾಗಿ ವೀಡಿಯೊ (V4L) ಕ್ಯಾಪ್ಚರ್ (Linux): MS_V4L
  • Linux 2 (V4L2) ಗಾಗಿ ವೀಡಿಯೊ ಕ್ಯಾಪ್ಚರ್ (Linux): MS_V4L2_CAPTURE
  • Video4windows (DirectShow) ಕ್ಯಾಪ್ಚರ್ (Windows)
  • Video4windows (DirectShow) ಕ್ಯಾಪ್ಚರ್ (Windows CE)
  • ವಿಂಡೋಸ್‌ಗಾಗಿ ವೀಡಿಯೊ (vfw) ಕ್ಯಾಪ್ಚರ್ (ವಿಂಡೋಸ್)
  • XV ಪ್ಲೇಬ್ಯಾಕ್ (ಲಿನಕ್ಸ್)

ವೀಡಿಯೊ ಎನ್ಕೋಡಿಂಗ್/ಡಿಕೋಡಿಂಗ್

  • H.263, H.263-1998, MP4V-ES, JPEG, MJPEG, ಸ್ನೋ: MS_MJPEG_DEC, MS_H263_ENC, MS_H263_DEC
  • H.264 (ಡಿಕೋಡರ್ ಮಾತ್ರ): MS_H264_DEC
  • ಥಿಯೋರಾ: MS_THEORA_ENC, MS_THEORA_DEC
  • VP8: MS_VP8_ENC, MS_VP8_DEC

ವೀಡಿಯೊ ಪ್ರಕ್ರಿಯೆಗೊಳಿಸುವಿಕೆ

  • jpeg ಸ್ನ್ಯಾಪ್‌ಶಾಟ್
  • ಪಿಕ್ಸೆಲ್ ಫಾರ್ಮ್ಯಾಟ್ ಪರಿವರ್ತಕ: MS_PIX_CONV
  • ರೀಸೈಜರ್
  • ಇತರ ಫಿಲ್ಟರ್‌ಗಳು
  • ಥ್ರೆಡ್‌ಗಳ ನಡುವೆ ಡೇಟಾ ಬ್ಲಾಕ್‌ಗಳ ವಿನಿಮಯ: MS_ITC_SOURCE, MS_ITC_SINK
  • ಬಹು ಇನ್‌ಪುಟ್‌ಗಳಿಂದ ಒಂದೇ ಔಟ್‌ಪುಟ್‌ಗೆ ಡೇಟಾ ಬ್ಲಾಕ್‌ಗಳನ್ನು ಸಂಗ್ರಹಿಸುವುದು: MS_JOIN
  • RTP ಸ್ವೀಕರಿಸಿ/ರವಾನೆ: MS_RTP_SEND, MS_RTP_RECV
  • ಬಹು ಔಟ್‌ಪುಟ್‌ಗಳಿಗೆ ಇನ್‌ಪುಟ್ ಡೇಟಾವನ್ನು ನಕಲಿಸಲಾಗುತ್ತಿದೆ: MS_TEE
  • ಮುಕ್ತಾಯಗೊಂಡ ಲೋಡ್: MS_VOID_SINK
  • ಮೌನ ಮೂಲ: MS_VOID_SOURCE

ಪ್ಲಗಿನ್‌ಗಳು

ಧ್ವನಿ ಶೋಧಕಗಳು

  • AMR-NB ಎನ್‌ಕೋಡರ್/ಡಿಕೋಡರ್
  • G.729 ಎನ್‌ಕೋಡರ್/ಡಿಕೋಡರ್
  • iLBC ಎನ್‌ಕೋಡರ್/ಡಿಕೋಡರ್
  • ಸಿಲ್ಕ್ ಎನ್‌ಕೋಡರ್/ಡಿಕೋಡರ್

    ವೀಡಿಯೊ ಫಿಲ್ಟರ್‌ಗಳು

  • H.264 ಸಾಫ್ಟ್‌ವೇರ್ ಎನ್‌ಕೋಡರ್
  • H.264 V4L2 ಹಾರ್ಡ್‌ವೇರ್ ವೇಗವರ್ಧಿತ ಎನ್‌ಕೋಡರ್/ಡಿಕೋಡರ್

ಫಿಲ್ಟರ್‌ನ ಸಣ್ಣ ವಿವರಣೆಯ ನಂತರ, ಪ್ರಕಾರದ ಹೆಸರನ್ನು ತೋರಿಸಲಾಗುತ್ತದೆ, ಈ ಫಿಲ್ಟರ್‌ನ ಹೊಸ ನಿದರ್ಶನವನ್ನು ರಚಿಸುವಾಗ ಇದನ್ನು ಬಳಸಲಾಗುತ್ತದೆ. ಕೆಳಗಿನವುಗಳಲ್ಲಿ, ನಾವು ಈ ಪಟ್ಟಿಯನ್ನು ಉಲ್ಲೇಖಿಸುತ್ತೇವೆ.

ಲಿನಕ್ಸ್ ಉಬುಂಟು ಅಡಿಯಲ್ಲಿ ಅನುಸ್ಥಾಪನೆ

ಈಗ ನಾವು ಕಂಪ್ಯೂಟರ್‌ನಲ್ಲಿ ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್ ಅನ್ನು ಸ್ಥಾಪಿಸುತ್ತೇವೆ ಮತ್ತು ಅದರೊಂದಿಗೆ ನಮ್ಮ ಮೊದಲ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸುತ್ತೇವೆ.

ಉಬುಂಟು ಚಾಲನೆಯಲ್ಲಿರುವ ಕಂಪ್ಯೂಟರ್ ಅಥವಾ ವರ್ಚುವಲ್ ಗಣಕದಲ್ಲಿ Mediastremer2 ಅನ್ನು ಸ್ಥಾಪಿಸಲು ಯಾವುದೇ ವಿಶೇಷ ಕೌಶಲ್ಯಗಳ ಅಗತ್ಯವಿರುವುದಿಲ್ಲ. ಇಲ್ಲಿ ಮತ್ತು ಕೆಳಗೆ, "$" ಚಿಹ್ನೆಯು ಆಜ್ಞೆಗಳನ್ನು ನಮೂದಿಸಲು ಶೆಲ್ ಪ್ರಾಂಪ್ಟ್ ಅನ್ನು ಸೂಚಿಸುತ್ತದೆ. ಆ. ಪಟ್ಟಿಯಲ್ಲಿ ನೀವು ಈ ಚಿಹ್ನೆಯನ್ನು ರೇಖೆಯ ಆರಂಭದಲ್ಲಿ ನೋಡಿದರೆ, ಇದು ಟರ್ಮಿನಲ್‌ನಲ್ಲಿ ಆಜ್ಞೆಗಳನ್ನು ಕಾರ್ಯಗತಗೊಳಿಸಲು ತೋರಿಸಲಾದ ಸಾಲು.

ಈ ಲೇಖನದ ಹಂತಗಳಲ್ಲಿ, ನಿಮ್ಮ ಕಂಪ್ಯೂಟರ್ ಇಂಟರ್ನೆಟ್ಗೆ ಪ್ರವೇಶವನ್ನು ಹೊಂದಿದೆ ಎಂದು ಊಹಿಸಲಾಗಿದೆ.

libmediastremer-dev ಪ್ಯಾಕೇಜ್ ಅನ್ನು ಸ್ಥಾಪಿಸಲಾಗುತ್ತಿದೆ

ಟರ್ಮಿನಲ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸಿ ಮತ್ತು ಆಜ್ಞೆಯನ್ನು ಟೈಪ್ ಮಾಡಿ:

$ sudo apt-get update

ಬದಲಾವಣೆಗಳನ್ನು ಮಾಡಲು ಪಾಸ್‌ವರ್ಡ್‌ಗಾಗಿ ನಿಮ್ಮನ್ನು ಕೇಳಲಾಗುತ್ತದೆ, ಅದನ್ನು ನಮೂದಿಸಿ ಮತ್ತು ಪ್ಯಾಕೇಜ್ ಮ್ಯಾನೇಜರ್ ಅದರ ಡೇಟಾಬೇಸ್‌ಗಳನ್ನು ನವೀಕರಿಸುತ್ತದೆ. ಅದರ ನಂತರ, ನೀವು ಚಲಾಯಿಸಬೇಕಾಗಿದೆ:

$ sudo apt-get install libmediastreamer-dev

ಅಗತ್ಯ ಅವಲಂಬನೆ ಪ್ಯಾಕೇಜುಗಳು ಮತ್ತು ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಲೈಬ್ರರಿಯು ಸ್ವಯಂಚಾಲಿತವಾಗಿ ಡೌನ್‌ಲೋಡ್ ಆಗುತ್ತದೆ ಮತ್ತು ಸ್ಥಾಪಿಸಲ್ಪಡುತ್ತದೆ.

ಡೌನ್‌ಲೋಡ್ ಮಾಡಿದ ಅವಲಂಬನೆ ಡೆಬ್ ಪ್ಯಾಕೇಜ್‌ಗಳ ಒಟ್ಟು ಗಾತ್ರವು ಸರಿಸುಮಾರು 35 MB ಆಗಿರುತ್ತದೆ. ಅನುಸ್ಥಾಪಿಸಲಾದ ಪ್ಯಾಕೇಜ್ ಬಗ್ಗೆ ವಿವರಗಳನ್ನು ಆಜ್ಞೆಯೊಂದಿಗೆ ಕಾಣಬಹುದು:

$ dpkg -s libmediastreamer-dev

ಉತ್ತರ ಉದಾಹರಣೆ:

Package: libmediastreamer-dev
Status: install ok installed
Priority: optional
Section: libdevel
Installed-Size: 244
Maintainer: Ubuntu Developers <[email protected]>
Architecture: amd64
Source: linphone
Version: 3.6.1-2.5
Depends: libmediastreamer-base3 (= 3.6.1-2.5), libortp-dev
Description: Linphone web phone's media library - development files
Linphone is an audio and video internet phone using the SIP protocol. It
has a GTK+ and console interface, includes a large variety of audio and video
codecs, and provides IM features.
.
This package contains the development libraries for handling media operations.
Original-Maintainer: Debian VoIP Team <[email protected]>
Homepage: http://www.linphone.org/

ಅಭಿವೃದ್ಧಿ ಸಾಧನಗಳನ್ನು ಸ್ಥಾಪಿಸುವುದು

C ಕಂಪೈಲರ್ ಮತ್ತು ಅದರ ಜೊತೆಗಿರುವ ಉಪಕರಣಗಳನ್ನು ಸ್ಥಾಪಿಸಿ:

$ sudo apt-get install gcc

ಕಂಪೈಲರ್ ಆವೃತ್ತಿಯನ್ನು ಪ್ರಶ್ನಿಸುವ ಮೂಲಕ ನಾವು ಫಲಿತಾಂಶವನ್ನು ಪರಿಶೀಲಿಸುತ್ತೇವೆ:

$ gcc --version

ಉತ್ತರವು ಈ ರೀತಿ ಇರಬೇಕು:

gcc (Ubuntu 5.4.0-6ubuntu1~16.04.12) 5.4.0 20160609
Copyright (C) 2015 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

ಟ್ರಯಲ್ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ನಿರ್ಮಿಸುವುದು ಮತ್ತು ಚಾಲನೆ ಮಾಡುವುದು

ನಾವು ರಚಿಸುತ್ತೇವೆ ಮನೆ ನಮ್ಮ ಟ್ಯುಟೋರಿಯಲ್ ಯೋಜನೆಗಳಿಗಾಗಿ ಫೋಲ್ಡರ್, ಅದನ್ನು ಕರೆಯೋಣ ಸ್ಟುಟೋರಿಯಲ್:

$ mkdir ~/mstutorial

ನಿಮ್ಮ ಮೆಚ್ಚಿನ ಪಠ್ಯ ಸಂಪಾದಕವನ್ನು ಬಳಸಿ ಮತ್ತು ಸಿ ಪ್ರೋಗ್ರಾಂ ಫೈಲ್ ಅನ್ನು ರಚಿಸಿ mstest.c ಕೆಳಗಿನ ವಿಷಯದೊಂದಿಗೆ:

#include "stdio.h"
#include <mediastreamer2/mscommon.h>
int main()
{
  ms_init();
  printf ("Mediastreamer is ready.n");
}

ಇದು ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಅನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತದೆ, ಶುಭಾಶಯವನ್ನು ಮುದ್ರಿಸುತ್ತದೆ ಮತ್ತು ನಿರ್ಗಮಿಸುತ್ತದೆ.

ಫೈಲ್ ಅನ್ನು ಉಳಿಸಿ ಮತ್ತು ಪರೀಕ್ಷಾ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಆಜ್ಞೆಯೊಂದಿಗೆ ಕಂಪೈಲ್ ಮಾಡಿ:

$ gcc mstest.c -o mstest `pkg-config mediastreamer --libs --cflags`

ಸಾಲು ಎಂಬುದನ್ನು ಗಮನಿಸಿ

`pkg-config mediastreamer --libs --cflags`

ಕೀಬೋರ್ಡ್‌ನಲ್ಲಿ "Ё" ಅಕ್ಷರದಂತೆಯೇ ಇರುವ ಉದ್ಧರಣ ಚಿಹ್ನೆಗಳಲ್ಲಿ ಲಗತ್ತಿಸಲಾಗಿದೆ.

ಫೈಲ್ ದೋಷಗಳನ್ನು ಹೊಂದಿಲ್ಲದಿದ್ದರೆ, ಸಂಕಲನದ ನಂತರ ಫೈಲ್ ಡೈರೆಕ್ಟರಿಯಲ್ಲಿ ಕಾಣಿಸಿಕೊಳ್ಳುತ್ತದೆ mstest. ನಾವು ಕಾರ್ಯಕ್ರಮವನ್ನು ಪ್ರಾರಂಭಿಸುತ್ತೇವೆ:

$ ./mstest

ಫಲಿತಾಂಶವು ಈ ರೀತಿ ಇರುತ್ತದೆ:

ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib control.c:954:(snd_ctl_open_noupdate) Invalid CTL default:0
ortp-warning-Could not attach mixer to card: Invalid argument
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ALSA lib conf.c:4738:(snd_config_expand) Unknown parameters 0
ALSA lib pcm.c:2266:(snd_pcm_open_noupdate) Unknown PCM default:0
ortp-warning-Strange, sound card HDA Intel PCH does not seems to be capable of anything, retrying with plughw...
Mediastreamer is ready.

ಈ ಪಟ್ಟಿಯಲ್ಲಿ, ALSA ಲೈಬ್ರರಿ ಪ್ರದರ್ಶಿಸುವ ದೋಷ ಸಂದೇಶಗಳನ್ನು ನಾವು ನೋಡುತ್ತೇವೆ, ಇದನ್ನು ಧ್ವನಿ ಕಾರ್ಡ್ ಅನ್ನು ನಿಯಂತ್ರಿಸಲು ಬಳಸಲಾಗುತ್ತದೆ. ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್‌ನ ಡೆವಲಪರ್‌ಗಳು ಇದು ಸಾಮಾನ್ಯ ಎಂದು ನಂಬುತ್ತಾರೆ. ಈ ಸಂದರ್ಭದಲ್ಲಿ, ನಾವು ಇಷ್ಟವಿಲ್ಲದೆ ಅವರೊಂದಿಗೆ ಒಪ್ಪುತ್ತೇವೆ.

ಈಗ ನಾವು ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್‌ನೊಂದಿಗೆ ಕೆಲಸ ಮಾಡಲು ಸಿದ್ಧರಾಗಿದ್ದೇವೆ. ನಾವು ಮೀಡಿಯಾ ಸ್ಟ್ರೀಮರ್ ಲೈಬ್ರರಿ, ಸಂಕಲನ ಸಾಧನವನ್ನು ಸ್ಥಾಪಿಸಿದ್ದೇವೆ ಮತ್ತು ಪ್ರಾಯೋಗಿಕ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ಬಳಸಿಕೊಂಡು ಪರಿಕರಗಳನ್ನು ಕಾನ್ಫಿಗರ್ ಮಾಡಲಾಗಿದೆ ಮತ್ತು ಮಾಧ್ಯಮ ಸ್ಟ್ರೀಮರ್ ಯಶಸ್ವಿಯಾಗಿ ಪ್ರಾರಂಭಿಸುತ್ತದೆ ಎಂದು ಪರಿಶೀಲಿಸಿದ್ದೇವೆ.

ಮುಂದೆ ಲೇಖನ ನಾವು ಹಲವಾರು ಫಿಲ್ಟರ್‌ಗಳ ಸರಪಳಿಯಲ್ಲಿ ಆಡಿಯೊ ಸಿಗ್ನಲ್‌ನ ಸಂಸ್ಕರಣೆಯನ್ನು ಜೋಡಿಸುವ ಮತ್ತು ರನ್ ಮಾಡುವ ಅಪ್ಲಿಕೇಶನ್ ಅನ್ನು ರಚಿಸುತ್ತೇವೆ.

ಮೂಲ: www.habr.com