рдкреЗрд╢ рд╣реИ GStreamer: рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕

рдирдорд╕реНрддреЗ рдлрд┐рд░ рд╕реЗ, рд╣рдмрд▓реНрдпреВрдЬрд╝рд░ рдЬреЛ GStreamer рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ! рдЖрдЬ рд╣рдо рд╡рд┐рднрд┐рдиреНрди рдореАрдбрд┐рдпрд╛ рдбреЗрдЯрд╛ рдХреЗ рд╕рд┐рдВрдХ рдЙрдкрдХрд░рдгреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░реЗрдВрдЧреЗ, рд░реЗрдбрд┐рдпреЛ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЖрджрд┐рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХреЛ рд▓рд┐рдЦреЗрдВ рдФрд░ рдПрдХ рдлрд╛рдЗрд▓ рдХреЛ рд╕реНрдЯреНрд░реАрдо рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рдФрд░ рдмрд╣реБрдд рдХреБрдЫ рд╕реАрдЦреЗрдВред
рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ (рд╕рд┐рдВрдХ) рдПрдХ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдХрд╣реАрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рддрддреНрд╡ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб, рдлрд╝рд╛рдЗрд▓, рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдпрд╛ рдиреЗрдЯрд╡рд░реНрдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛред рдЗрд╕рдХреЗ рдореВрд▓ рдореЗрдВ, рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдбреЗрдЯрд╛ рд╕реНрд░реЛрдд рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдФрд░, рдбреЗрдЯрд╛ рд╕реНрд░реЛрддреЛрдВ рдХреЗ рд╡рд┐рдкрд░реАрдд, рдЖрдЙрдЯрдкреБрдЯ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рдХреЗрд╡рд▓ рдПрдХ рдкреИрдб - рд╕рд┐рдВрдХ рд╣реЛрддрд╛ рд╣реИред
рдЖрдЗрдП рдЖрдЙрдЯрдкреБрдЯ рдЙрдкрдХрд░рдгреЛрдВ рдкрд░ рдЕрдзрд┐рдХ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВред

рдЪрд▓реЛ рдЪрд▓рддреЗ рд╣реИрдВ


1. рдирдХрд▓реА

рдЗрд╕рдХреЗ рдЕрд░реНрде рдореЗрдВ рдпрд╣ рдЙрдкрдХрд░рдг fakesrc рдХреЗ рд╕рдорд╛рди рд╣реИ - рдпрд╣ рдХреБрдЫ рднреА рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред fakesink рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕рд┐рдЧреНрдирд▓ рдХреЛ "рд╢реВрдиреНрдп рдореЗрдВ" рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ, рдореИрдВ рд╕реНрд╡рдпрдВ рдпрд╣ рдкрддрд╛ рдирд╣реАрдВ рд▓рдЧрд╛ рд╕рдХрддрд╛ рдХрд┐ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд╣рд╛рдБ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рдЗрд╕ рдЙрдкрдХрд░рдг рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЙрдкрдпреЛрдЧрд┐рддрд╛ рдирд╣реАрдВ рдорд┐рд▓реАред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
gst-launch-1.0 fakesrc ! fakesink 

2. рдЭреБрд░реНрд░реА

рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП fdsink рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ; рдпрд╣ fdsrc рдХреА рддрд░рд╣, рдХреЗрд╡рд▓ рдПрдХ рдкреИрд░рд╛рдореАрдЯрд░ - fd рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд╛рдЗрд▓ рдбрд┐рд╕реНрдХреНрд░рд┐рдкреНрдЯрд░ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдПред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ STDOUT рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред рд╕реНрд╡рд╛рднрд╛рд╡рд┐рдХ рд░реВрдк рд╕реЗ, рдЗрд╕ рддрддреНрд╡ рд╕реЗ рдмрд╣реБрдд рдХрдо рд▓рд╛рдн рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рдкрд░рд┐рдпреЛрдЬрдирд╛рдУрдВ рдореЗрдВ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рд╡рд┐рд╢реЗрд╖ рдЕрд░реНрде рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 filesrc location=/foo/bar.mp3 ! fdsink | gst-launch-1.0 fdsrc ! decodebin ! autoaudiosink 

3. рдЕрд▓рд╕реА, рджрд╛рд▓рдЪреАрдиреА, oss4sink / osssink, jackaudiosink, autoaudiosink

рдЗрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдЖрд╡рд╢реНрдпрдХ рдСрдбрд┐рдпреЛ рд╕рдмрд╕рд┐рд╕реНрдЯрдо рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдзреНрд╡рдирд┐ рдХрд╛рд░реНрдб рдореЗрдВ рдзрд╛рд░рд╛ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдорд╛рдкрджрдВрдбреЛрдВ рдореЗрдВ рд╕реЗ, рдХреЗрд╡рд▓ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЛ рдиреЛрдЯ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ - рдЗрд╕рдореЗрдВ рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб рдХрд╛ рдкрд╣рдЪрд╛рдирдХрд░реНрддрд╛ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдЬрд┐рд╕рдореЗрдВ рдзрд╛рд░рд╛ рдмрджрд▓реЗ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрдЧреАред рдореЙрдбреНрдпреВрд▓ рдХреА рдЙрдкрд░реЛрдХреНрдд рд╕реВрдЪреА рд╕реЗ, рдХреЗрд╡рд▓ рдСрдЯреЛрдбрд╛рдпрд╕рд┐рдВрдХ рдПрдХ рддрд░рдл рдЦрдбрд╝рд╛ рд╣реИ рдФрд░ рдЗрд╕рдХреА рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рд╣реИ - рдпрд╣ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдЪрдпрди рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдХрд╣рд╛рдВ рдФрд░ рдХрд┐рд╕ рдзреНрд╡рдирд┐ рдЙрдкрдзрд╛рд░рд╛ рдХреЛ рд╕реНрдЯреНрд░реАрдо рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЗрд╕рдореЗрдВ рдбрд┐рд╡рд╛рдЗрд╕ рдкреИрд░рд╛рдореАрдЯрд░ рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 filesrc location=/foo/bar.mp3 ! decodebin ! alsasink device="hw:0" gst-launch-1.0 filesrc location=/foo/bar.mp3 ! decodebin ! pulsesink gst-launch-1.0 filesrc location=/foo/bar.mp3 ! decodebin ! autoaudiosink 

4. рдлрд╛рдЗрд▓

рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рд╢рд╛рдпрдж рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЕрдиреБрдорд╛рди рд▓рдЧрд╛ рдЪреБрдХреЗ рд╣реИрдВ, рдЗрд╕ рдбрд┐рд╡рд╛рдЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдпреЛрдЬрдиреЛрдВ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП: рдПрдХ рд░реЗрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рдПрдХ рд╡реЗрдм-рдХреИрдорд░рд╛ рд╕реЗ рдПрдХ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд░рд┐рдХреЙрд░реНрдб рдХрд░реЗрдВ, рд╕рд╛рде рд╣реА рдПрдХ рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб рд╕реЗ рдПрдХ рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рднреАред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдпрд╣ рдбрд┐рд╡рд╛рдЗрд╕ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдпрджрд┐ рдЖрдк рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ GStreamer рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред
рд╣рдо рдЗрд╕ рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдкрд░ рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рд╡реЗ filesrc рддрддреНрд╡ рдХреЗ рдЧреБрдгреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЬреЛ рд╣рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдорд┐рд▓реЗ рдереЗред рдПрдХ рдЕрдВрддрд░ рдпрд╣ рд╣реИ рдХрд┐ рдлрд╛рдЗрд▓рд╕рд┐рдВрдХ рдореЗрдВ рдПрдХ рдкрд░рд┐рд╢рд┐рд╖реНрдЯ рдкреИрд░рд╛рдореАрдЯрд░ рд╣реИред рдПрдкреЗрдВрдб рдкреИрд░рд╛рдореАрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╢реБрд░реВ рд╕реЗ рдЕрдзрд┐рд▓реЗрдЦрд┐рдд рдХрд░рдиреЗ рдХреЗ рдмрдЬрд╛рдп рдХрд┐рд╕реА рдореМрдЬреВрджрд╛ рдлрд╝рд╛рдЗрд▓ рдХреЗ рдЕрдВрдд рдореЗрдВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 v4l2src num-buffers=1 ! jpegenc ! filesink location=/tmp/capture1.jpeg 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг v4l2 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдкрд╣рд▓реЗ рдЙрдкрдХрд░рдг рджреНрд╡рд╛рд░рд╛ рдПрдХ рддрд╕реНрд╡реАрд░ рдХреЗ рдирд┐рд░реНрдорд╛рдг, рдФрд░ /tmp/capture1.jpeg рдореЗрдВ рддрд╕реНрд╡реАрд░ рдХреА рдмрд╛рдж рдХреА рдмрдЪрдд рдХреЛ рджрд┐рдЦрд╛рддрд╛ рд╣реИред
5. рдмрд╣реБрд╕реНрддрд░реАрдп

рдорд▓реНрдЯреАрдлрд╝рд╛рдЗрд▓рд┐рдВрдХ рддрддреНрд╡ рдорд▓реНрдЯреАрдлрд╝рд╛рдЗрд▓реНрд╕ рдЖрд░реНрдХ рддрддреНрд╡ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ, рдЬреЛ рд╣рдо рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рдореЗрдВ рдорд┐рд▓реЗ рдереЗ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд╡рд┐рднрд┐рдиреНрди рдлрд╝рд╛рдЗрд▓реЛрдВ рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрд╕ рддрддреНрд╡ рдХреЗ рдкреИрд░рд╛рдореАрдЯрд░ multifilesrc рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЗ рд╕рдорд╛рди рд╣реИрдВ, рдЗрд╕рд▓рд┐рдП рд╣рдо рдЙрди рдкрд░ рдирд┐рд╡рд╛рд╕реА рдирд╣реАрдВ рд╣реЛрдВрдЧреЗред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 v4l2src num-buffers=10 ! jpegenc ! multifilesink location=/tmp/capture%d.jpeg 

рдпрд╣ рдЙрджрд╛рд╣рд░рдг 10 рддрд╕реНрд╡реАрд░реЛрдВ рдХреЗ рдирд┐рд░реНрдорд╛рдг рдФрд░ рдЙрдиреНрд╣реЗрдВ рдХреИрдкреНрдЪрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рд╣реЗрдЬрддрд╛ рд╣реИред
6. рдЬрд┐рдУрд╕рд┐рдВрдХ

рдФрд░ рдпрд╣ рддрддреНрд╡ giosrc рддрддреНрд╡ рдХреЗ рдмрд┐рд▓реНрдХреБрд▓ рд╡рд┐рдкрд░реАрдд рд╣реИ - рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ GIO рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдлрд╛рдЗрд▓ рдореЗрдВ рд╕реНрдЯреНрд░реАрдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЬрд┐рдУрд╕реНрдХреИрди рдХреА рддрд░рд╣, рдЬрд┐рдУрд╕рд┐рдВрдХ рдореЗрдВ рдлрд╛рдЗрд▓ рдХреЛ рдкрде рдХреЗ рд▓рд┐рдП рдПрдХ рд╕реНрдерд╛рди рдкреИрд░рд╛рдореАрдЯрд░ рд╣реЛрддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╕реНрдЯреНрд░реАрдо рд▓рд┐рдЦрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред
рдЙрдкрдпреЛрдЧ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 location ! giosink location=file:///foo/bar.raw 

7. рдПрдХреНрд╕рдореЗрдЬрд┐рдВрдХ рдФрд░ рдПрдХреНрд╕рд╡рд┐рдореЗрдЬрд┐рдВрдХ

рдЗрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдПрдХреНрд╕-рд╕рд░реНрд╡рд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЗрди рддрддреНрд╡реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рд╡реАрдбрд┐рдпреЛ рдХреЛ "рдХрдВрд╕реЛрд▓ рдореЗрдВ" рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ рдмрд╣реБрдд рдЕрдВрддрд░ рдирд╣реАрдВ рд╣реИ, рд▓реЗрдХрд┐рди рджреЛ рдмрд┐рдВрджреБ рд╣реИрдВ - ximagesink рдХреЗрд╡рд▓ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП X рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИ, рдФрд░ xvimagesink libxv рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред Xvimagesink рдореЗрдВ рднреА рдереЛрдбрд╝рд╛ рдЕрдзрд┐рдХ рд╡рд┐рдХрд▓реНрдк рд╣реИрдВред рдЙрди рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВ:
рдкреНрд░рджрд░реНрд╢рди

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдПрдХреНрд╕-рдбрд┐рд╕реНрдкреНрд▓реЗ рдирд╛рдо: 0 ,: 1 ,: 2 ...
рдкрд┐рдХреНрд╕реЗрд▓ рдкрд╣рд▓реВ-рдЕрдиреБрдкрд╛рдд

рдпрд╣ рдкреИрд░рд╛рдореАрдЯрд░ рдкрд╣рд▓реВ рдЕрдиреБрдкрд╛рдд рдХреЛ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП 2/1ред рдбрд┐рдлрд╝реЙрд▓реНрдЯ рдорд╛рди 1/1 рд╣реИред
рдмрд▓-рдкрд╣рд▓реВ-рдЕрдиреБрдкрд╛рдд

рдХреБрдЫ рдорд╛рдорд▓реЛрдВ рдореЗрдВ, рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдПрдХ рдкрд┐рдХреНрд╕реЗрд▓-рдкрд╣рд▓реВ-рдЕрдиреБрдкрд╛рдд рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдпрджрд┐ рддрддреНрд╡реЛрдВ рдХреЗ рдмреАрдЪ "рдмрд╛рддрдЪреАрдд" рдореВрд▓ рдкрд┐рдХреНрд╕реЗрд▓-рдПрдкреЗрдХреНрдЯ-рд░рддрд┐рдУ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рд╣реИ), рдФрд░ рдпрд╣ рдЧреБрдг рдЗрд╕ "рд╕рдорд╕реНрдпрд╛" рдХреЛ рдареАрдХ рдХрд░рддрд╛ рд╣реИред

рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреБрдг рдХреЗрд╡рд▓ xvimagesink рдХреЗ рд▓рд┐рдП рдЙрдкрд▓рдмреНрдз рд╣реИрдВред
рдЪрдордХ, рдЗрд╕рдХреЗ рд╡рд┐рдкрд░реАрдд, рд░рдВрдЧ, рд╕рдВрддреГрдкреНрддрд┐

рдЗрди рдЧреБрдгреЛрдВ рдХреЗ рдирд╛рдо рд░реВрд╕реА ("рдЪрдордХ-рд╡рд┐рдкрд░реАрдд-рд╣реНрдпреВ-рд╕рдВрддреГрдкреНрддрд┐") рдореЗрдВ рдЕрдиреБрд╡рд╛рджрд┐рдд рд╣реЛрдиреЗ рдХреЗ рдмрд╛рдж, рдХреЛрдИ рднреА рдЙрдирдХреЗ рдЙрджреНрджреЗрд╢реНрдп рдХреЛ рд╕рдордЭ рд╕рдХрддрд╛ рд╣реИред рдорд╛рди -1000 рд╕реЗ 1000 рддрдХ рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред
рдпреБрдХреНрддрд┐

рд╡реАрдбрд┐рдпреЛ рдХрд╛рд░реНрдб рдХреА рдХреНрд░рдо рд╕рдВрдЦреНрдпрд╛ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдЖрдк рд╡реАрдбрд┐рдпреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред
рдбрдмрд▓ рдмрдлрд░

рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдбрдмрд▓ рдмрдлрд░рд┐рдВрдЧ рдХреЗ рдЙрдкрдпреЛрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдФрд░ рдЕрдХреНрд╖рдо рдХрд░рддреА рд╣реИред
colorkey, autopaint-colorkey

рдЗрди рдЧреБрдгреЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдУрд╡рд░рд▓реЗ рдХреЗ рд░рдВрдЧ рдХреЛ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдЬрд┐рд╕ рдкрд░ рд╡реАрдбрд┐рдпреЛ рдЦреАрдВрдЪрд╛ рдЬрд╛рддрд╛ рд╣реИред Colorkey рдореЗрдВ рдПрдХ рдХрд▓рд░ рдХреЛрдб рд╡рд╛рд▓рд╛ рдПрдХ gint рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ autopaint-colorkey рдУрд╡рд░рд▓реЗ рдХреЛ рдЙрд╕ рд░рдВрдЧ рд╕реЗ рднрд░рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рдмрдирд╛рддрд╛ рд╣реИред
рдиреЛрдЯ:
рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реАрдХрд░рдг рдпрд╣ рдирд╣реАрдВ рдмрддрд╛рддрд╛ рд╣реИ рдХрд┐ рд░рдВрдЧ рдХреНрдпрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдмрд╕реЗ рдЕрдзрд┐рдХ рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рд░рдВрдЧ рдЖрд░рдЬреАрдмреА рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рд╕реВрддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ ((рдЖрд░рдЖрд░ рдФрд░ 0xff) << 16) | ((GG & 0xff) << 8) | (BB & 0xff)ред
рдЖрдХрд░реНрд╖рд┐рдд-рд╕реАрдорд╛рдУрдВ

рдпрд╣ рд╕рдВрдкрддреНрддрд┐ рдмрд▓-рдкрд╣рд▓реВ-рдЕрдиреБрдкрд╛рдд рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╕рдордп рдЙрди рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдХрд╛рд▓реЗ рд╕реНрдЯреНрд░реЛрдХ рдХреА рдбреНрд░рд╛рдЗрдВрдЧ рдХреЛ рд╕рдХреНрд╖рдо рдпрд╛ рдирд┐рд╖реНрдХреНрд░рд┐рдп рдХрд░рддреА рд╣реИ рдЬрд╣рд╛рдВ "рд╢реВрдиреНрдп" рдХрд╛ рдЧрдарди рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 videotestsrc ! ximagesink gst-launch-1.0 videotestsrc ! xvimagesink 

8. рдЖрд╕рд┐рдВрдХ рдФрд░ рдХреИрдХрд╕рд┐рдВрдХ

рдпреЗ рддрддреНрд╡ рд╢рд╛рдпрдж рдЕрдм рдкреНрд░рд╛рд╕рдВрдЧрд┐рдХ рдирд╣реАрдВ рд╣реИрдВ, рдФрд░ рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдпрд╛ рддреЛ "рдУрд▓реНрдбрдлрд╝реИрдЧ" рдпрд╛ рдЙрди рд▓реЛрдЧреЛрдВ рджреНрд╡рд╛рд░рд╛ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ рдЬреЛ "рд▓рд┐рдирдХреНрд╕ рдХреНрдпрд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ" рджрд┐рдЦрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдореБрдЭрд╕реЗ рдЧрд▓рддреА рд╣реЛ рд╕рдХрддреА рд╣реИред рдпреЗ рджреЛрдиреЛрдВ рддрддреНрд╡ рдЖрдкрдХреЛ рд▓рд┐рдмрд╛ рдФрд░ рд▓рд┐рдмрд╛рдХрд╛рдХрд╛ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдЖрдЙрдЯрдкреБрдЯ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддреЗ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреН, рдПрдПрд╕рд╕реАрдЖрдИрдЖрдИ рдХрд▓рд╛ рдХреЗ рд░реВрдк рдореЗрдВ рдЖрдЙрдЯрдкреБрдЯ рд╡реАрдбрд┐рдпреЛред рдЙрдирдХреЗ рдмреАрдЪ рдХреЗрд╡рд▓ рдПрдХ рдЕрдВрддрд░ рд╣реИ: рд▓рд┐рдмрд╛ рдХрд╛рд▓реЗ рдФрд░ рд╕рдлреЗрдж рд╡рд░реНрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рд▓рд┐рдмрд╛рдХрд╛ рд░рдВрдЧ рд╡рд░реНрдг рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИред
рд╣рдо рдЗрди рддрддреНрд╡реЛрдВ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЙрдирд╕реЗ (IMHO) рдХреЛрдИ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рд▓рд╛рдн рдирд╣реАрдВ рд╣реИред
рдЙрдкрдпреЛрдЧ рдХреЗ рдЙрджрд╛рд╣рд░рдг:
 gst-launch-1.0 videotestsrc ! aasink gst-launch-1.0 videotestsrc ! aacasink 

9. gdkpixbufsink

рдпрд╣ рддрддреНрд╡ рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ GdkPixbuf рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдЖрдЙрдЯрдкреБрдЯ рдХрд░рддрд╛ рд╣реИ, рдЬреЛ рдХрд┐ рдХреЗрд╡рд▓-рдЕрдВрддрд┐рдо-рдкрд┐рдХреНрд╕рдмреБрдл рд╕рдВрдкрддреНрддрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЙрдкрд▓рдмреНрдз рд╣реИред рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдХреНрдпреЛрдВ рд╣реИ - рдореИрдВ рдХрд▓реНрдкрдирд╛ рднреА рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ред

рдЙрджрд╛рд╣рд░рдг


рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ, рд╣рдо рдЦрд┐рд▓рд╛рдбрд╝реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдХрд░реЗрдВрдЧреЗ, рд▓реЗрдХрд┐рди рдПрдХ рдирдИ рд╕реБрд╡рд┐рдзрд╛ рдХреЗ рдЕрд▓рд╛рд╡рд╛ - рдПрдХ рдлрд╛рдЗрд▓ рдкрд░ рд╕реНрдЯреНрд░реАрдо рд▓рд┐рдЦрдирд╛ред
example2.py
 #env python2 # coding=utf-8 import gi gi.require_version("Gst", "1.0") gi.require_version("Gtk", "3.0") from gi.repository import Gst from gi.repository import Gtk from gi.repository import GObject import os import signal import argparse Gst.init("") signal.signal(signal.SIGINT, signal.SIG_DFL) GObject.threads_init() def parse_args(): parser = argparse.ArgumentParser(prog='example1.py') parser.add_argument('--volume', help='  (0-100) (default: 100)', type=int, default=100) parser.add_argument('--output', help='        (default: /tmp/out.ogg)', type=str, default='/tmp/out.ogg') parser.add_argument('location') args = parser.parse_args() return args class RecorderBin(Gst.Bin): def __init__(self, name=None): super(RecorderBin, self).__init__(name=name) self.vorbisenc = Gst.ElementFactory.make("vorbisenc", "vorbisenc") self.oggmux = Gst.ElementFactory.make("oggmux", "oggmux") self.filesink = Gst.ElementFactory.make("filesink", "filesink") self.add(self.vorbisenc) self.add(self.oggmux) self.add(self.filesink) self.vorbisenc.link(self.oggmux) self.oggmux.link(self.filesink) self.sink_pad = Gst.GhostPad.new("sink", self.vorbisenc.get_static_pad("sink")) self.add_pad(self.sink_pad) def set_location(self, location): self.filesink.set_property("location", location) class Player(): def __init__(self, args): self.pipeline = self.create_pipeline(args) self.args = args ##       ##      message_bus = self.pipeline.get_bus() message_bus.add_signal_watch() message_bus.connect('message', self.message_handler) ##   self.pipeline.get_by_name('volume').set_property('volume', args.volume / 100.) def create_source(self, location): """create_source(str) -> Gst.Element""" if not location.startswith('http') and not os.path.exists(location): raise IOError("File %s doesn't exists" % location) if location.startswith('http'): source = Gst.ElementFactory.make('souphttpsrc', 'source') else: source = Gst.ElementFactory.make('filesrc', 'source') source.set_property('location', location) return source def create_pipeline(self, args): """create_pipeline() -> Gst.Pipeline""" pipeline = Gst.Pipeline() ##      source = self.create_source(args.location) decodebin = Gst.ElementFactory.make('decodebin', 'decodebin') audioconvert = Gst.ElementFactory.make('audioconvert', 'audioconvert') volume = Gst.ElementFactory.make('volume', 'volume') audiosink = Gst.ElementFactory.make('autoaudiosink', 'autoaudiosink') ##  tee     tee = Gst.ElementFactory.make('tee', 'tee') ## decodebin   pad',     ##   def on_pad_added(decodebin, pad): pad.link(audioconvert.get_static_pad('sink')) decodebin.connect('pad-added', on_pad_added) ##      pipeline elements = [source, decodebin, audioconvert, volume, audiosink, tee] [pipeline.add(k) for k in elements] ##      : ## +-> volume -> autoaudiosink ## *src* -> (decodebin + audioconvert) -> tee -> | ## [ +-> vorbisenc -> oggmux -> filesink ] source.link(decodebin) audioconvert.link_pads('src', tee, 'sink') tee.link_pads('src_0', volume, 'sink') volume.link(audiosink) return pipeline def play(self): self.pipeline.set_state(Gst.State.PLAYING) recorder = RecorderBin('recorder') self.pipeline.add(recorder) self.pipeline.get_by_name('tee').link_pads('src_1', recorder, 'sink') recorder.set_location(self.args.output) def message_handler(self, bus, message): """ """ struct = message.get_structure() if message.type == Gst.MessageType.EOS: print(' .') Gtk.main_quit() elif message.type == Gst.MessageType.TAG and message.parse_tag() and struct.has_field('taglist'): print('GStreamer    -') taglist = struct.get_value('taglist') for x in range(taglist.n_tags()): name = taglist.nth_tag_name(x) print(' %s: %s' % (name, taglist.get_string(name)[1])) else: pass if __name__ == "__main__": args = parse_args() player = Player(args) player.play() Gtk.main() 


рдиреЛрдЯ:
рдпрд╣ рдЙрджрд╛рд╣рд░рдг (рдкрд┐рдЫрд▓реЗ рд▓реЗрдЦ рд╕реЗ рдЙрджрд╛рд╣рд░рдг рдХреА рддрд░рд╣) рдЙрдмрдВрдЯреВ 13.10 рдореЗрдВ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ, рд╕реЗрдЧрдлреЙрд▓реНрдЯ рд╕реЗ рдЧрд┐рд░рддрд╛ рд╣реИ (рджреЗрдЦреЗрдВ рдПрд▓рдкреА: 1198375 )ред

рдЧреМрд░ рдХреАрдЬрд┐рдП рдХрд┐ рдпрд╣рд╛рдВ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рд╕реБрд╡рд┐рдзрд╛ рдФрд░ рддрд╛рд░реНрдХрд┐рдХ рдкреГрдердХреНрдХрд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдо рдПрдХ рдХрдВрдЯреЗрдирд░ рд░рд┐рдХреЙрд░реНрдбрд░ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрд┐рд╕рдореЗрдВ рд╣рдо рддреАрди рддрддреНрд╡ рд░рдЦрддреЗ рд╣реИрдВ - рд╡реЛрд░рдмрд┐рд╕реЗрдВрдХ, рдСрдЧреНрдореБрдХреНрд╕ рдФрд░ рдлрд╛рдЗрд▓рд╕рд┐рдВрдХред Vorbisenc рдФрд░ oggmux рдПрд▓рд┐рдореЗрдВрдЯреНрд╕ рдХреЛ RAW рд╕реНрдЯреНрд░реАрдо рдХреЛ vorbis рдлреЙрд░реНрдореЗрдЯ рдореЗрдВ рдПрдирдХреЛрдб рдХрд░рдиреЗ рдФрд░ рдХреНрд░рдорд╢рдГ рдПрдХ ogg рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд▓рдкреЗрдЯрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╣рдо рд╡рд┐рд╕реНрддрд╛рд░ рд╕реЗ рдХрдВрдЯреЗрдирд░реЛрдВ (рдмрд┐рди) рдкрд░ рдирд╣реАрдВ рд░рд╣рддреЗ рд╣реИрдВ, рдореИрдВ рдХреЗрд╡рд▓ рдЖрдкрдХреЛ рдпрд╛рдж рджрд┐рд▓рд╛рддрд╛ рд╣реВрдВ рдХрд┐ рдХрдВрдЯреЗрдирд░ рдкреВрд░реНрдг рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдореЗрдВ рдХреБрдЫ рдХрд╛рд░реНрд░рд╡рд╛рдИ рдХрд░рддреЗ рд╣реИрдВред
рд░рд┐рдХреЙрд░реНрдбрд░рдмрд┐рди рдореЗрдВ, рд╕рднреА рддреАрди рддрддреНрд╡ рдпреЛрдЬрдирд╛ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдХреНрд░рдорд┐рдХ рд░реВрдк рд╕реЗ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реБрдП рд╣реИрдВ:

 vorbisenc тЖТ oggmux тЖТ filesink 

рдЕрдЧрд▓рд╛, рд╣рдо рдЯреА рддрддреНрд╡ рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рдмрд╣реБрд╕рдВрдХреЗрддрди рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рдЕрдзрд┐рдХрд╛рдВрд╢ рддрддреНрд╡, рдЬреИрд╕рд╛ рдХрд┐ рдЖрдкрдХреЛ рдпрд╛рдж рд╣реИ, рдЕрдХреНрд╕рд░ рдХреЗрд╡рд▓ рдПрдХ рдЗрдирдкреБрдЯ рдФрд░ рдПрдХ рдЖрдЙрдЯрдкреБрдЯ рд╣реЛрддрд╛ рд╣реИ, рдФрд░ рдЯреА рддрддреНрд╡ рдЙрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рддрдм рдЙрддреНрдкрдиреНрди рд╣реЛрддреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рд╕рд┐рдЧреНрдирд▓ рдХреЛ "рд╡рд┐рднрд╛рдЬрд┐рдд" рдХрд░рдиреЗ рдФрд░ рдЗрд╕реЗ рджреЛ рдореЗрдВ рднреЗрдЬрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИред рд╡рд┐рднрд┐рдиреНрди рдмрд┐рдВрджреБ (рд╕рд╛рдЙрдВрдб рдХрд╛рд░реНрдб рдФрд░ рд╣рдорд╛рд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдлрд╝рд╛рдЗрд▓)ред
рдЙрд╕рдХреЗ рдмрд╛рдж, рд╣рдо рдЯреА рддрддреНрд╡ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ src_0 рдХреЛ рд╡реЙрд▓реНрдпреВрдо рдПрд▓рд┐рдореЗрдВрдЯ рдХреЗ рд╕рд┐рдВрдХ рдХреЗ рдЗрдирдкреБрдЯ рдХреЗ рд╕рд╛рде рд▓рд┐рдВрдХ рдХрд░рддреЗ рд╣реИрдВ, рдФрд░ рдкреНрд▓реЗрдЗрдВрдЧ рд╕реНрдЯреЗрдЯрд╕ рд╕реЗрдЯ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж, рдЕрдкрдиреЗ рд░рд┐рдХреЙрд░реНрдбрд░ рдХреЛ рдкрд╛рдЗрдкрд▓рд╛рдЗрди рд╕реЗ рдЬреЛрдбрд╝рддреЗ рд╣реИрдВ рдФрд░ рдЯреА рд░рд┐рдХреЙрд░реНрдбрд░ рдХреЗ рдЖрдЙрдЯрдкреБрдЯ src_1 рдХреЛ рд╕рд┐рдВрдХ рд░рд┐рдХреЙрд░реНрдбрд░ рдХреЗ рд╕рд╛рде рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред
рддрд╛рд░реНрдХрд┐рдХ рд░реВрдк рд╕реЗ, рд╕рдм рдХреБрдЫ create_pipeline рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрд┐рд╕реА рдХрд╛рд░рдг рд╕реЗ рдкреВрд░реА рдкрд╛рдЗрдкрд▓рд╛рдЗрди GStreamer рдореЗрдВ рдЕрд╡рд░реБрджреНрдз рд╣реЛ рдЬрд╛рддреА рд╣реИ, рдЬрдм PLAY рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗрдЯ рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рдПрдХ рдФрд░ рд╕рд┐рдВрдХ рддрддреНрд╡ рдЬреЛрдбрд╝рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдореБрдЭреЗ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╕рдорд╛рдзрд╛рди рдирд╣реАрдВ рдорд┐рд▓рд╛ред

рдирд┐рд╖реНрдХрд░реНрд╖


рдЖрдЬ рд╣рдордиреЗ рд╕реНрдЯреНрд░реАрдо рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд▓рд┐рдП рд▓рдЧрднрдЧ рд╕рднреА рдЙрдкрд▓рдмреНрдз рдЙрдкрдХрд░рдгреЛрдВ рдХреА рд╕рдореАрдХреНрд╖рд╛ рдХреАред рдмрд╛рдж рдХреЗ рд▓реЗрдЦреЛрдВ рдореЗрдВ рд╣рдо рддрдерд╛рдХрдерд┐рдд рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реЗрдВрдЧреЗред рдлрд┐рд▓реНрдЯрд░ рдРрд╕реЗ рддрддреНрд╡ рд╣реИрдВ рдЬреЛ рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдзрд╛рдЧреЗ рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╡рд┐рднрд┐рдиреНрди рдХрд╛рд░реНрдп рдХрд░рддреЗ рд╣реИрдВред рдлрд┐рд▓реНрдЯрд░ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдПрдирдХреЛрдбрд░ рдФрд░ рдбрд┐рдХреЛрдбрд░, рдбреЗ / рдорд▓реНрдЯреАрдкреНрд▓реЗрдХреНрд╕рд░реНрд╕, рд╡рд┐рднрд┐рдиреНрди рдСрдбрд┐рдпреЛ / рд╡реАрдбрд┐рдпреЛ рдлрд┐рд▓реНрдЯрд░ рдФрд░ рдЕрдиреНрдп рд╕реЗрд╡рд╛ рддрддреНрд╡ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рд╕рд╛рд╣рд┐рддреНрдп


  1. GStreamer рдЕрдиреБрдкреНрд░рдпреЛрдЧ рд╡рд┐рдХрд╛рд╕ рдореИрдиреБрдЕрд▓
  2. GStreamer Core рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓
  3. GStreamer рдмреЗрд╕ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓
  4. GStreamer рдЕрдЪреНрдЫрд╛ рдкреНрд▓рдЧрдЗрдиреНрд╕ рд╕рдВрджрд░реНрдн рдореИрдиреБрдЕрд▓


рдкреБрдирд╢реНрдЪ
рдкреНрд░рд┐рдп рд╕рд╣рдХрд░реНрдорд┐рдпреЛрдВ, рдорд┐рддреНрд░реЛрдВ, рдФрд░ рд╕рд╛рдзрд╛рд░рдг рд╣реИрдмреНрд░реЗрдЯреЗрд▓реА, рдореИрдВ рдЫрд╣ рдорд╣реАрдиреЗ рдмрд╛рдж рдкреЛрд╕реНрдЯ рдкреНрд░рдХрд╛рд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдФрд░ рдПрдХ рд╕рдкреНрддрд╛рд╣ рдирд╣реАрдВ, рдЬреИрд╕рд╛ рдХрд┐ рдореИрдВрдиреЗ рд╡рд╛рджрд╛ рдХрд┐рдпрд╛ рдерд╛ред рдореИрдВ рдЕрдЧрд▓реА рдкреЛрд╕реНрдЯ рдХреЗ рдкреНрд░рдХрд╛рд╢рди рдХреЗ рд▓рд┐рдП рд╕рдЯреАрдХ рддрд╛рд░реАрдЦреЛрдВ рдХреЛ рдЖрд╡рд╛рдЬ рдирд╣реАрдВ рджреВрдВрдЧрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рд╡рд╛рджрд╛ рди рдирд┐рднрд╛рдиреЗ рдХрд╛ рдбрд░ рд╣реИ, рд▓реЗрдХрд┐рди рдореИрдВ рдирд┐рдХрдЯ рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдЗрд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

PPS: рдирдореВрдирд╛ рд╕реНрд░реЛрдд GitHub рдкрд░ рдЙрдкрд▓рдмреНрдз рд╣реИрдВред

рдкрд┐рдЫрд▓рд╛ рд▓реЗрдЦ

Source: https://habr.com/ru/post/In204014/


All Articles