рд╢реБрдн рджреЛрдкрд╣рд░, рдкреНрд░рд┐рдп Habrausersред рдХреБрдЫ рд╕рдордп рдкрд╣рд▓реЗ рдореБрдЭреЗ рдПрдХ рд╕рд░рд▓ рд╡рд┐рдВрдбреЛрдЬрд╝-рдПрдкреНрд▓реАрдХреЗрд╢рди рдкрд░ рдХрд╛рдо рдХрд░рдирд╛ рдерд╛, рдЬрд┐рд╕рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдЙрдкрдХрд░рдгреЛрдВ рд╕реЗ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ, MAudio рдХрд╛рд░реНрдб рдХреЗ рдЫрд╣ рдЪреИрдирд▓реЛрдВ рд╕реЗ рдСрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛, рдФрд░ рджреЛ AverMedia рдХреИрдкреНрдЪрд░ рдХрд╛рд░реНрдб рд╕реЗ HD рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░, рд╕рд┐рдЧреНрдирд▓ рдЬреЛ рдШрдЯрдХ рдЗрдирдкреБрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░реЛрдВ рд╕реЗ рдЖрдпрд╛ рдерд╛ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, USB рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬреБрдбрд╝реЗ рджрд╕реНрддрд╛рд╡реЗрдЬрд╝ рдХреИрдорд░рд╛ рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдирд╛ рдЖрд╡рд╢реНрдпрдХ рдерд╛ред рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ C # рдореЗрдВ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдФрд░ DirectShow.NET рд▓рд╛рдЗрдмреНрд░реЗрд░реА рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╡реАрдбрд┐рдпреЛ рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред
рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдЖрдзрд╛рд░ рдкрд░, рд╡рд┐рдЪрд╛рд░ рдПрдХ рд▓реЗрдЦ рд▓рд┐рдЦрдиреЗ рдФрд░ рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдиреБрднрд╡ рд╕рд╛рдЭрд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрддреНрдкрдиреНрди рд╣реБрдЖред рд╢рд╛рдпрдж рдпрд╣ рдЬрд╛рдирдХрд╛рд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рдЙрдкрдпреЛрдЧреА рд╣реЛрдЧреАред рдХреМрди рдкрд░рд╡рд╛рд╣ рдХрд░рддрд╛ рд╣реИ - рдореИрдВ рдПрдХ рдмрд┐рд▓реНрд▓реА рдХреЗ рд▓рд┐рдП рдкреВрдЫрддрд╛ рд╣реВрдВред
рдПрдХ рдкреНрд░рд╕реНрддрд╛рд╡рдирд╛ рдХреЗ рдмрдЬрд╛рдпред
рд╣рд╛рд▓рд╛рдБрдХрд┐
MediaFoundation рдХрд╛ рдЙрдкрдпреЛрдЧ рдРрд╕реЗ рдХрд╛рд░реНрдпреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рддреЗрдЬреА рд╕реЗ рдХрд┐рдпрд╛ рдЬрд╛ рд░рд╣рд╛ рд╣реИ, рдпрд╣ рдордВрдЪ, рдореЗрд░реА рд░рд╛рдп рдореЗрдВ, рдЕрднреА рднреА рд╡реНрдпрд╛рдкрдХ рдирд╣реАрдВ рд╣реИ, рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рдЗрд╕ рддрдереНрдп рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП рдХрд┐ рдорд╛рдЗрдХреНрд░реЛрд╕реЙрдлреНрдЯ рд╡рд┐рдВрдбреЛрдЬ рдХреЗ рдирдП рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдореЗрдВ DirectShow рдХреЗ рдЙрдкрдпреЛрдЧ рдФрд░ рд╕рдорд░реНрдерди рдХреЛ рдзреАрд░реЗ-рдзреАрд░реЗ рдЫреЛрдбрд╝ рджреЗрдЧрд╛, 8 рд╡реАрдВ рд╕реЗ рд╢реБрд░реВ рд╣реЛрдЧрд╛ред рд╡рд┐рднрд┐рдиреНрди рдХрдВрдкреНрдпреВрдЯрд░ рджреГрд╖реНрдЯрд┐ рдкреБрд╕реНрддрдХрд╛рд▓рдп рд╣реИрдВ рдЬреЛ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдЬреИрд╕реЗ рдХрд┐ OpenCV рдпрд╛ AForge, рд▓реЗрдХрд┐рди рд╕рд░рд▓ рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдХреЗ рд╕рд╛рде, рдЙрдирдХреА рд╢рдХреНрддрд┐рд╢рд╛рд▓реА рдкреНрд░рд╕рдВрд╕реНрдХрд░рдг рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдмрд╣реБрдд рдЖрд╡рд╢реНрдпрдХ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдРрд╕реЗ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рдЕрдВрджрд░ рдЕрдХреНрд╕рд░ DirectShow рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
DirectShow рдХреНрдпрд╛
рд╣реИ рдФрд░ рдпрд╣ рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ,
рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рдХрд╛рдлреА рдХреБрдЫ рд▓реЗрдЦ рдФрд░ рд╕рд╛рдордЧреНрд░рд┐рдпрд╛рдВ рд╣реИрдВ, рдФрд░
рдЗрд╕ рд▓реЗрдЦ рдХреА рдЬрд╛рдирдХрд╛рд░реА Habr├й рдкрд░ рдлрд┐рд╕рд▓ рдЧрдИ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдореИрдВ рдЙрди рд╢рдмреНрджреЛрдВ рдХреЛ рди рдмрддрд╛рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ рдЬрд┐рдиреНрд╣реЗрдВ рдореИрдВ рд╕реНрд╡рдпрдВ рдирд╣реАрдВ рдЬрд╛рдирддрд╛, рд▓реЗрдХрд┐рди рдореИрдВ рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдкрдХреНрд╖ рд╕реЗ рд╕рдм рдХреБрдЫ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░реВрдВрдЧрд╛ - рдХреИрд╕реЗ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЬреЛ рдбрд╛рдпрд░реЗрдХреНрдЯрд╢реЛ рд╕реЗ рдкрд╣рд▓реЗ рдкрд░рд┐рдЪрд┐рдд рдирд╣реАрдВ рд╣реИ, рд╡рд╣ рдЕрдкрдиреЗ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЛ C # рдореЗрдВ рд▓рд┐рдЦ рд╕рдХрддрд╛ рд╣реИ, рдХрд╣рд╛рдВ рд╢реБрд░реВ рдХрд░рдирд╛ рд╣реИ рдФрд░ рдХрд╣рд╛рдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╣реИ, рдФрд░ рдЙрди рд╕рдорд╕реНрдпрд╛рдУрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рдмрд╛рдд рдХрд░рдирд╛ рд╣реИ рдЬреЛ рдЙрд╕реЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рдерд╛ред
рдПрдХ рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП (
GitHub рдкрд░ рдХреЛрдб рджреЗрдЦреЗрдВ ) рдЗрд╕ рд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рдореИрдВ рдПрдХ рд╕рд╛рдзрд╛рд░рдг USB рдХреИрдкреНрдЪрд░ рдХрд╛рд░реНрдб EasyCap рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛:

1. рдХрд╣рд╛рдБ рд╕реЗ рд╢реБрд░реВ рдХрд░реЗрдВред рдЖрд╡рд╢реНрдпрдХрддрд╛рдПрдБ, рдЙрдкрдХрд░рдг, рдФрд░ рд╕реВрдЪрдирд╛
рдЖрдкрдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рдЙрдкрдХрд░рдг рд╣реИрдВ:
1)
K- рд▓рд╛рдЗрдЯ рдХреЛрдбреЗрдХ рдкреИрдХ рдореЗрдЧрд╛ рдФрд░ рдЧреНрд░рд╛рдлрд╕реНрдЯрдбрд┐рдпреЛ рдЯреВрд▓ - рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдЧреНрд░рд╛рдл рдХреЗ рддреЗрдЬреА рд╕реЗ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХреЗ рд▓рд┐рдПред

2)
GraphEditPlus - GraphStudio рдХрд╛ рдПрдХ рд╡рд╛рдгрд┐рдЬреНрдпрд┐рдХ рдПрдирд╛рд▓реЙрдЧ, рдЬреЛ рдЖрдкрдХреЛ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред C ++ рдФрд░ C # рдореЗрдВ рдЧреНрд░рд╛рдл рддреИрдпрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ 30-рджрд┐рд╡рд╕реАрдп рдкрд░реАрдХреНрд╖рдг рд╕рдВрд╕реНрдХрд░рдг рдЙрдкрд▓рдмреНрдз рд╣реИ, рдЬрд┐рд╕рдХреА рд╕реАрдорд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЙрддреНрдкрдиреНрди рдХреЛрдб рдХреЛ рдХреНрд▓рд┐рдкрдмреЛрд░реНрдб рдкрд░ рдХреЙрдкреА рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
3) C # рд╡рд┐рдХрд╛рд╕ рдХрд╛ рдорд╛рд╣реМрд▓ - рдореЗрд░реЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдпрд╣ рд╡рд┐рдЬреБрдЕрд▓ рд╕реНрдЯреВрдбрд┐рдпреЛ 12 рд╣реЛрдЧрд╛ред
4)
DirectShow.net рд▓рд╛рдЗрдмреНрд░реЗрд░реАред
5)
рд╡рд┐рдВрдбреЛрдЬ рдореАрдбрд┐рдпрд╛рд▓рд┐рдм рд▓рд╛рдЗрдмреНрд░реЗрд░реАред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдЗрдВрдЯрд░рдиреЗрдЯ рдкрд░ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдкреВрд░реНрдг рдФрд░ рд╕рдВрд░рдЪрд┐рдд рдорд╛рд░реНрдЧрджрд░реНрд╢рд┐рдХрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рд╕рдВрднрд╡ рдирд╣реАрдВ рдерд╛, рд▓реЗрдХрд┐рди рдХреБрдЫ рдкреГрд╖реНрдареЛрдВ рдиреЗ рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЕрдореВрд▓реНрдп рдорджрдж рдкреНрд░рджрд╛рди рдХреА:
1)
рдПрдХ рдЫреЛрдЯрд╛ рд╕рд╛ рдкреЗрдЬ рдЬрд┐рд╕рдХреЗ рд╕рд╛рде рдкреВрд░реА рдкреНрд░рдХреНрд░рд┐рдпрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрддреНрдкреНрд░реЗрд░рдХ рдмрди рдЧрдпрд╛ рд╣реИред рд╡рд╣рд╛рдВ рдЖрдк DirectShow.net рдХреА рдХрдХреНрд╖рд╛рдУрдВ рдФрд░ рдЗрдВрдЯрд░рдлреЗрд╕ рдХрд╛ рд╕реНрдкрд╖реНрдЯ рд╡рд┐рд╡рд░рдг рднреА рдкрд╛ рд╕рдХрддреЗ рд╣реИрдВред рдПрдХ рдмрд╣реБрдд рдЙрдкрдпреЛрдЧреА рдкреГрд╖реНрда рдФрд░ рдЗрд╕рдХреЗ рд▓реЗрдЦрдХ рдХреЛ рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рджред
2) рдЗрд╕ рддрд░рд╣ рд╕реЗ рдУрдкрди рд╕реЛрд░реНрд╕ рдХреЛрдб, рдЬрд┐рд╕рдиреЗ рдХреНрд░реЙрд╕рдмрд╛рд░ рдФрд░ рдЕрдиреНрдп рдореБрджреНрджреЛрдВ рд╕реЗ рдирд┐рдкрдЯрдиреЗ рдореЗрдВ рдорджрдж рдХреАред
3) MSDN, рдЬреЛ DirectShow рдкреНрд░реЛрдЧреНрд░рд╛рдорд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рд╕рдорд░реНрдкрд┐рдд рдПрдХ рдкреВрд░рд╛
рдЦрдВрдб рд╣реИред
2. рдлрд┐рд▓реНрдЯрд░, рд╡реАрдбрд┐рдпреЛ рдЧреНрд░рд╛рдл рдирд┐рд░реНрдорд╛рдг рдФрд░ рджреГрд╢реНрдп рд╕рдВрдкрд╛рджрдХ
DirectShow рд░реЗрдЦрд╛рдВрдХрди рдлрд┐рд▓реНрдЯрд░ рд╕реЗ рдирд┐рд░реНрдорд┐рдд рд╣реЛрддреЗ рд╣реИрдВ рдЬреЛ рдЗрдирдкреБрдЯ рдФрд░ рдЖрдЙрдЯрдкреБрдЯ рдкрд┐рдВрд╕ рджреНрд╡рд╛рд░рд╛ рдПрдХ рджреВрд╕рд░реЗ рд╕реЗ рдЬреБрдбрд╝реЗ рд╣реЛрддреЗ рд╣реИрдВред
рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ рдЬрд╛рдирдХрд╛рд░реА
рдпрд╣рд╛рдБ рд╣реИрдВ ред
рдЧреНрд░рд╛рдлрд╕реНрдЯрдбрд┐рдпреЛ рдореЗрдВ рд╕рдмрд╕реЗ рд╕рд░рд▓ рдорд╛рдорд▓реЗ рдХреЗ рд▓рд┐рдП, рдЖрдк рдПрдХ рдЧреНрд░рд╛рдл рдмрдирд╛ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдХреАрдХреГрдд рд╡реАрдбрд┐рдпреЛ рдХреИрдорд░рд╛ рдХреЗ рд▓рд┐рдП рдирд┐рдореНрдирд╛рдиреБрд╕рд╛рд░ рд╣реИ:

рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рдХрд╛рд░реНрдп рдХреЗ рд▓рд┐рдП рдХрдИ рдлрд┐рд▓реНрдЯрд░ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рдЧреНрд░рд╛рдл (WMV рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкреНрд░рд╡рд┐рд╖реНрдЯрд┐рдпреЛрдВ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрддреЗ рд╣реБрдП) рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП:

рдЗрд╕ рдЧреНрд░рд╛рдл рдкрд░ рдлрд┐рд▓реНрдЯрд░ рд╣реИрдВ:
SMI рдЧреНрд░реИрдмрд░ рдбрд┐рд╡рд╛рдЗрд╕ (рдлрд╝рд┐рд▓реНрдЯрд░ рд╕рдореВрд╣ - WDM рд╕реНрдЯреНрд░реАрдорд┐рдВрдЧ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕) - рдПрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╣реИ, рдпрд╣ рдЗрд╕рд╕реЗ рд╣реИ рдХрд┐ рд╣рдо рд╡реАрдбрд┐рдпреЛ (рд╕рд╛рде рд╣реА рдСрдбрд┐рдпреЛ) рд╕реНрдЯреНрд░реАрдо рдкреНрд░рд╛рдкреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ, рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╕реЗ рдЖрдиреЗ рд╡рд╛рд▓реА рдСрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдмрд▓реНрдХрд┐ рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди рд╕реЗ рдлрд╝рд┐рд▓реНрдЯрд░ (рдСрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рд╕реЛрд░реНрд╕ рд╕рдореВрд╣ рд╕реЗ
"рдорд╛рдЗрдХреНрд░реЛрдлрд╝реЛрди ..." рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░реЗрдВ)ред
SM BDA рдХреНрд░реЙрд╕рдмрд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдХреНрд░реЙрд╕рдмрд╛рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИ, рдпрд╣ рдЗрд╕рдХреА рд╕реЗрдЯрд┐рдВрдЧ рд╣реИ рдЬреЛ рдЗрдирдкреБрдЯ рд╕рд┐рдЧреНрдирд▓ рдХреЗ рд╕реНрд╡рд┐рдЪрд┐рдВрдЧ рдХреЛ рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЪрд╛рд╣реЗ рд╡рд╣ SVideo рдЗрдирдкреБрдЯ рд╕реЗ рдпрд╛ рд╕рдордЧреНрд░ рдЗрдирдкреБрдЯ рд╕реЗ рдЖрддрд╛ рд╣реИред
рд╕реНрдорд╛рд░реНрдЯ рдЯреА - рджреЛ рдЖрдЙрдЯрдкреБрдЯ рдХреЗ рд╕рд╛рде рдПрдХ рд╕реНрдЯреНрд░реАрдо рд╕реНрдкреНрд▓рд┐рдЯрд░, рдХреИрдкреНрдЪрд░ рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕реНрдЯреНрд░реАрдо рдПрдХ рдлрд╛рдЗрд▓ рдХреЗ рд▓рд┐рдП рд▓рд┐рдЦрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░
рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдЖрдЙрдЯрдкреБрдЯ рд╕реЗ рд╕реНрдЯреНрд░реАрдо
AVI рдбреЗрдХреЛрдореНрдкреНрд░реЗрд╕рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рд╡рд┐рдВрдбреЛ рдореЗрдВ рдЬрд╛рддреА рд╣реИред рдпрд╣ рдзреНрдпрд╛рди рджрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП рдХрд┐ рд╢реНрд░реГрдВрдЦрд▓рд╛
AVI Decompressor -> рдЬрдм рдЖрдк рдкреВрд░реНрд╡рд╛рд╡рд▓реЛрдХрди рдХрд╛ рдЪрдпрди рдХрд░рддреЗ рд╣реИрдВ рддреЛ
рд╡реАрдбрд┐рдпреЛ рд░реЗрдВрдбрд░рд░ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдмрдирд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ -> рд░реЗрдВрдбрд░ рдкрд┐рди рд╡рд┐рдХрд▓реНрдкред
(рдПрдХ рд╡рд┐рд╖рдпрд╛рдВрддрд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдзреНрдпрд╛рди рджреЗрддрд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд░реЗрдВрдбрд░рд░ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реИрдВ, рдФрд░ рд╕рдмрд╕реЗ рдЙрдиреНрдирдд рдореЗрдВ рд╕реЗ рдПрдХ рдПрдиреНрд╣рд╛рдВрд╕реНрдб рд╡реАрдбрд┐рдпреЛ рд░реЗрдВрдбрд░рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рд╕рд╛рдорд╛рдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ)
WM ASF рд░рд╛рдЗрдЯрд░ рдПрдХ рдлрд┐рд▓реНрдЯрд░ рд╣реИ рдЬреЛ WMV рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдЖрд╡рд╢реНрдпрдХ рдЧреБрдгрд╡рддреНрддрд╛ рдХреА рд╡реАрдбрд┐рдпреЛ рдлрд╝рд╛рдЗрд▓ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд╕рд░рд▓ рд╡рд┐рдХрд▓реНрдк рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рд╕рд╣рд┐рдд рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЧреБрдгрд╡рддреНрддрд╛ рдХреЛ рдмрджрд▓рдирд╛ рд╕рдВрднрд╡ рд╣реИред
рдЗрд╕ рдЧреНрд░рд╛рдлрд╝ рдХреЛ рдЪрд▓рд╛рдХрд░, рдЖрдк рд╡реАрдбрд┐рдпреЛ рд╕реНрд░реЛрдд рд░рд┐рдХреЙрд░реНрдб рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
3. DirectShow.net рдкреБрд╕реНрддрдХрд╛рд▓рдп рдФрд░ рдХреЛрдб рдореЗрдВ рдЧреНрд░рд╛рдл рдХрд╛ рдЕрдиреБрд╡рд╛рдж
3.1ред GraphEditPlus рдореЗрдВ рдХреЛрдб рдЬрдирд░реЗрд╢рди
рдЕрдЧрд▓рд╛ рдХрджрдо рдХреЛрдб рдореЗрдВ рдкрд░рд┐рдгрд╛рдореА рдЧреНрд░рд╛рдл рдХрд╛ рдЕрдиреБрд╡рд╛рдж рдХрд░рдирд╛ рд╣реИред GraphEditPlus рдЙрдкрдХрд░рдг рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдЕрдореВрд▓реНрдп рд╕рд╣рд╛рдпрддрд╛ рдкреНрд░рджрд╛рди рдХрд░рддрд╛ рд╣реИред рд╕рд╛рдорд╛рдиреНрдп рддреМрд░ рдкрд░, рдпрд╣ рдЧреНрд░рд╛рдлрд╝ рд╕рдВрдкрд╛рджрдХ K-Lite рдмрдВрдбрд▓ рд╕реЗ рдЧреНрд░рд╛рдлрд╕реНрдЯрдбрд┐рдпреЛ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдЕрдзрд┐рдХ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕рдХреА рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╡рд┐рд╢реЗрд╖рддрд╛ рдирд┐рд░реНрдорд┐рдд рдЧреНрд░рд╛рдл рд╕реЗ рдХреЛрдб рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ:

рджреБрд░реНрднрд╛рдЧреНрдпрд╡рд╢ , рдпрд╣ рдЯреВрд▓ рдХреБрдЫ рдлрд┐рд▓реНрдЯрд░ рдЬреИрд╕реЗ рдХрд┐ рдХреНрд░реЙрд╕рдмрд╛рд░ рдпрд╛ WM ASF рд░рд╛рдЗрдЯрд░ рдХреЗ рд▓рд┐рдП рд╕реЗрдЯрдЕрдк рдХреЛрдб рдХреЛ рдХрд╕реНрдЯрдорд╛рдЗрдЬрд╝
рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИ , рд▓реЗрдХрд┐рди рдпрд╣ рдкрд╣рд▓реЗ рдЪрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ рдЕрдореВрд▓реНрдп рд╣реИред
3.2ред рд╡реАрдбрд┐рдпреЛ рдЖрд╡реЗрджрди
рдлрд┐рд░ рд╕реЗ, рдЗрд╕ рдЖрд▓реЗрдЦ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд▓рд┐рдЦреЗ рдЧрдП рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдЖрд╡реЗрджрди рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ
рдпрд╣рд╛рдБ рджреЗрдЦрд╛ рдФрд░ рдбрд╛рдЙрдирд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛
рд╣реИ ред рдореИрдВ рдЗрд╕рдХреА рдЧреИрд░-рдЗрд╖реНрдЯрддрдорддрд╛ рдФрд░ SOLID рдХреЗ рдЙрд▓реНрд▓рдВрдШрди рдХреЗ рд▓рд┐рдП рдЕрдЧреНрд░рд┐рдо рдорд╛рдлреА рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рд╕рд┐рд░реНрдл рдПрдХ рдкрд░реАрдХреНрд╖рдг рдХрд╛ рдорд╛рдорд▓рд╛ рд╣реИред
рдЗрд╕ рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ, рдЧреНрд░рд╛рдл рдкрд░ рдореБрдЦреНрдп рд╕рдВрдЪрд╛рд▓рди (рдмрдирд╛рдиреЗ, рдирд╖реНрдЯ рдХрд░рдиреЗ, рдкрд┐рдВрд╕ рдХреА рдЦреЛрдЬ, рдХреНрд░реЙрд╕рдмрд╛рд░ рд░реВрдЯрд┐рдВрдЧ, рд╢реБрд░реВ, рд░реЛрдХрдирд╛, рдФрд░ рдЕрдиреНрдп) рдЕрдореВрд░реНрдд
VideoCapturebase рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд
рдХрд┐рдП рдЧрдП рд╣реИрдВ , рдФрд░ рдЙрддреНрддрд░рд╛рдзрд┐рдХрд╛рд░реА рд╡рд░реНрдЧ рдЬреИрд╕реЗ
BuildGraph()
,
BuildGraph()
рдПрдХ рдирд┐рд░реНрдорд╛рдг рд╡рд┐рдзрд┐ рдХреЛ рд▓рд╛рдЧреВ рдХрд░рддреЗ рд╣реИрдВред
BuildGraph()
рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ рдирдП рдлрд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдХрд░ред
ControlVideoCommon рд╡рд░реНрдЧ рдореЗрдВ рдПрдХ рд╡рд┐рдВрдбреЛ рдмрдирд╛рдиреЗ рдФрд░ рдЙрд╕рдореЗрдВ рдПрдХ рдЧреНрд░рд╛рдл рдХреЛ рдмрд╛рдВрдзрдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди рд╣реЛрддрд╛ рд╣реИ, рдПрдХ рдЧреНрд░рд╛рдл рдХреЛ рд░реЛрдХрдиреЗ рдФрд░ рдирд╖реНрдЯ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдСрдкрд░реЗрд╢рди, рд╕рд╛рде рд╣реА рд╕рд╛рде рдХрдИ рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрд┐рддрд╛рд╡рд╛рджреА рдСрдкрд░реЗрд╢рдиред
3.3ред рд╣рдореЗрд╢рд╛ рд╕реНрдкрд╖реНрдЯ рдмрд┐рдВрджреБ рдирд╣реАрдВ
3.3.1ред рдЙрдкрдХрд░рдг рдЬреЛрдбрд╝рдирд╛
рдпрджрд┐ рдПрдХ рд╣реА рдкреНрд░рдХрд╛рд░ рдХреЗ рдХрдИ рдЙрдкрдХрд░рдг рд╣реИрдВ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП рдХрдИ рд╕рдорд╛рди рдХреИрдкреНрдЪрд░ рдХрд╛рд░реНрдб),
рддрдм рдЙрдирдХреЗ рдкрд╛рд╕ рдПрдХ рд╣реА рдЧрд╛рдЗрдб рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрд▓рдЧ-рдЕрд▓рдЧ DisplayName рдкреИрд░рд╛рдореАрдЯрд░ред рдЗрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ, рдЖрдкрдХреЛ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдХреЛрдб рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рднреА рдбрд┐рд╡рд╛рдЗрд╕ рдвреВрдВрдврдиреЗ рд╣реЛрдВрдЧреЗ:
private readonly List<DsDevice> _captures = new List<DsDevice>();
рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЧреНрд░рд╛рдлрд╝ рдмрдирд╛рддреЗ рд╕рдордп, рдЗрд╕ рд╡рд┐рдзрд┐ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рд╛рдкреНрдд
devicePath1
рдФрд░
devicePath2
рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред
3.3.2ред рдХреНрд░реЙрд╕рдмрд╛рд░ рд░реВрдЯрд┐рдВрдЧ
рдПрдХ рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рд╡реАрдбрд┐рдпреЛ рдЗрдирдкреБрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреНрд░реЙрд╕рдмрд╛рд░ рдирд╣реАрдВ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рд╕реЗ AverMedia рдФрд░ EasyCap рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдЕрдВрддрд░реНрдирд┐рд╣рд┐рдд рд╡реЗрдмрдХреИрдо рдпрд╛ рдПрдХ рдмреНрд▓реИрдХрдореИрдЬрд┐рдХ рдХреИрдкреНрдЪрд░ рдХрд╛рд░реНрдб рдирд╣реАрдВ рд╣реИ)ред рдЗрд╕рд▓рд┐рдП, рдпрд╣ рдЖрд╡рд╢реНрдпрдХ рд╣реИ рдХрд┐ рдХреНрд░реЙрд╕рдмрд╛рд░ рдкрд░ рдмрд╛рдзреНрдпрдХрд╛рд░реА рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд╣реЛред
рдЗрд╕рдХреЗ рд▓рд┐рдП, рдПрдХ рд╡рд┐рдзрд┐ рдХреЛ рдЖрдзрд╛рд░ рд╡рд░реНрдЧ рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ
FixCrossbarRouting(ref IBaseFilter captureFilter, PhysicalConnectorType? physicalConnectorType)
, рдЬреЛ рдЖрд╡рд╢реНрдпрдХ рдЗрдирдкреБрдЯ рдкреНрд░рдХрд╛рд░ рдкрд░ рд╕реНрд╡рд┐рдЪ рдХрд░рдиреЗ рдХреЗ рд╕рд╛рде рдПрдХ рдХреНрд░реЙрд╕рдмрд╛рд░ (рдпрджрд┐ рдХреЛрдИ рд╣реЛ) рдХреЛ рдЦреЛрдЬрддрд╛ рд╣реИ рдФрд░ рдЬреЛрдбрд╝рддрд╛ рд╣реИ:
3.3.3ред рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреА рд░рд┐рд╣рд╛рдИ
рдпрджрд┐ рдЖрдк рдирд╖реНрдЯ рд╣реЛрдиреЗ рдкрд░ рдмрдирд╛рдП рдЧрдП рдЧреНрд░рд╛рдл рдХреЗ рд╕рдВрд╕рд╛рдзрдиреЛрдВ рдХреЛ рдЬрд╛рд░реА рдирд╣реАрдВ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдкрд╣рд▓реЗ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рд░реВрдк рдореЗрдВ рдЙрд╕реА рдлрд┐рд▓реНрдЯрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдЧреНрд░рд╛рдл рдХрд╛ рдПрдХ рдФрд░ рдЙрджрд╛рд╣рд░рдг рдмрдирд╛рдирд╛ рдЕрд╕рдлрд▓ рд╣реЛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП, рдЖрдкрдХреЛ
DisposeFilters()
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдЬрд┐рд╕рдореЗрдВ рдлрд╝рд┐рд▓реНрдЯрд░ рдирд╖реНрдЯ рдЧреНрд░рд╛рдл рд╕реЗ рд╣рдЯрд╛ рджрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВред рдХреБрдЫ рдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмрд╛рдж, рдирд┐рдореНрди рдХреЛрдб рдиреЗ рдареАрдХ рдХрд╛рдо рдХрд┐рдпрд╛ред
if (Graph == null) return; IEnumFilters ef; var f = new IBaseFilter[1]; int hr = Graph.EnumFilters(out ef); if (hr == 0) { while (0 == ef.Next(1, f, IntPtr.Zero)) { Graph.RemoveFilter(f[0]); ef.Reset(); } } Graph = null;
3.3.4ред рд╕реНрдЯреНрд░реАрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди (рдлрд╝реНрд░реЗрдо рджрд░, рд░рд┐рдЬрд╝реЙрд▓реНрдпреВрд╢рди, рдЖрджрд┐)
рд╡реАрдбрд┐рдпреЛ рдХреИрдкреНрдЪрд░ рдбрд┐рд╡рд╛рдЗрд╕ рд╡рд┐рднрд┐рдиреНрди рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рдХреЙрдиреНрдлрд╝рд┐рдЧрд░реЗрд╢рди рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдЬрд┐рдирдХреЗ рдмреАрдЪ рдЖрдк рд╕реНрд╡рд┐рдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдПрдЪрдбреА рдХреИрдорд░рд╛ 60 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдкрд░ 640 рд╕реЗ 480 рдЪрд┐рддреНрд░ рдФрд░ 30 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдХреЗ рд╕рд╛рде рдПрдЪрдбреА рдЧреБрдгрд╡рддреНрддрд╛ рдЪрд┐рддреНрд░ рджреЛрдиреЛрдВ рдХрд╛ рдЙрддреНрдкрд╛рджрди рдХрд░ рд╕рдХрддрд╛ рд╣реИред рдлреНрд░реЗрдо рджрд░ рдХреЗ рд▓рд┐рдП, 29.97 рдлреНрд░реЗрдо рдкреНрд░рддрд┐ рд╕реЗрдХрдВрдб рдЬреИрд╕реЗ рднрд┐рдиреНрдирд╛рддреНрдордХ рдЕрдВрдХ рднреА рд╣реИрдВред рдЗрд╕ рддрд░рд╣ рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ
FindInterface
рдЗрдВрдЯрд░рдлреЗрд╕ рдХреЗ
FindInterface
рд╡рд┐рдзрд┐ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдХ
streamConfigObject
рдСрдмреНрдЬреЗрдХреНрдЯ рдмрдирд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЗрд╕реЗ
IAMStreamConfig
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░
IAMStreamConfig
,
GetFormat
рд╡рд┐рдзрд┐ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ,
GetFormat
рдкреНрд░рдХрд╛рд░ рдХрд╛ рдСрдмреНрдЬреЗрдХреНрдЯ
AMMEdiaType
рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣реЗрдбрд░ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ:
var infoHeader = (VideoInfoHeader)Marshal.PtrToStructure(mediaType.formatPtr, typeof(VideoInfoHeader));
рдЗрд╕рдХреЗ рдорд╛рдкрджрдВрдбреЛрдВ рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдирд╛ рдЬрд╛рд░реА рд░рдЦреЗрдВ
AvgTimePerFrame,
BmiHeader.Width,
BmiHeader.Height
рдФрд░ рдЕрдиреНрдпред
рдпрд╣ рдХреЛрдб рдореЗрдВ
VideoCaptureAsfRecord
рд╡рд░реНрдЧ рдХреЗ
ConfigureResolution
рдФрд░
ConfigureFramerate
рд╡рд┐рдзрд┐ рдореЗрдВ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
3.3.5ред рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ
рд╡реАрдбрд┐рдпреЛ рд╕реНрдЯреНрд░реАрдо рд╕реЗ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рд▓реЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ рдЙрд╕ рд╡рд░реНрдЧ рдХреЛ рдЗрдирд╣реЗрд░рд┐рдЯ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рдЧреНрд░рд╛рдл (
ISampleGrabberCB
)
ISampleGrabberCB
рд╕реЗ рдмрдирд╛рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдФрд░ рджреЛ рддрд░реАрдХреЛрдВ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ -
BufferCB
рдФрд░
SampleCB
ред
SampleCB
рдЦрд╛рд▓реА рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдФрд░
BufferCB
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╕рд░рдгреА рдХреА рдкреНрд░рддрд┐рд▓рд┐рдкрд┐ рдмрдирд╛рддреЗ рд╣реИрдВ:
if ((pBuffer != IntPtr.Zero) && (bufferLen > 1000) && (bufferLen <= _savedArray.Length)) { Marshal.Copy(pBuffer, _savedArray, 0, bufferLen); }
рд╣реИрдВрдбрд▓рд░ рдХреЛ рдмреБрд▓рд╛рдиреЗ рдХреЗ рд╕рд╛рде:
_invokerControl.BeginInvoke(new CaptureDone(OnCaptureDone))
рдЬрд╣рд╛рдВ рд╡рд┐рдзрд┐ рдХреЛ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП
SetCallback
SamlpleGrabber
'рдП
_iSampleGrabber.SetCallback(null, 0);
BuildGraph
рд╡рд┐рдзрд┐ рдореЗрдВ,
BuildGraph
рдЖрдк рд╢реНрд░реГрдВрдЦрд▓рд╛ рдореЗрдВ
SampleGrabber
рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЛ рдЪрд╛рд▓реВ
BuildGraph
рд╣реИрдВ,
BuildGraph
рдЖрдкрдХреЛ рдЗрд╕реЗ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП, рдФрд░ рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рдж рдЯреНрдпреВрдирд┐рдВрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдП (рдЬрд╛рджреВ, рд▓реЗрдХрд┐рди рдпрд╣ рдЕрдиреНрдпрдерд╛ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ)ред рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ,
ConfigureSampleGrabberInitial()
рдФрд░
ConfigureSampleGrabberFinal()
рд╡рд┐рдзрд┐рдпрд╛рдБ рдЗрд╕рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рд╣реИрдВред рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди,
AMMEdiaType
рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ, рдФрд░ рдЕрдВрддрд┐рдо рд╕реЗрдЯрдЕрдк рдХреЗ рджреМрд░рд╛рди,
VideoInfoHeader
рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ рдФрд░ рджреЛ
ISampleGrabber
рд╡рд┐рдзрд┐рдпреЛрдВ рдХреЛ рдХреЙрд▓ рдХрд░реЗрдВ:
SetBufferSamples(false)
рдФрд░
SetOneShot(false)
ред
рдкрд╣рд▓рд╛ рдлрд┐рд▓реНрдЯрд░ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЧреБрдЬрд░рдиреЗ рд╡рд╛рд▓реЗ рдирдореВрдиреЛрдВ рдХреА рдмрдлрд░рд┐рдВрдЧ рдХреЛ рдЕрдХреНрд╖рдо рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╡рд╢реНрдпрдХ рд╣реИ, рдФрд░ рджреВрд╕рд░рд╛ - рддрд╛рдХрд┐ рд╕реНрдХреНрд░реАрдирд╢реЙрдЯ рдХреЗ рдХреЙрд▓рдмреИрдХ рдлрд╝рдВрдХреНрд╢рди рдХреЛ рдХрдИ рдмрд╛рд░ рдЦреАрдВрдЪрд╛ рдЬрд╛ рд╕рдХреЗред
3.3.6ред Wmv рдкреНрд░рд╛рд░реВрдк, .prx рдФрд░ WindowsMediaLib рдлрд╝рд╛рдЗрд▓реЗрдВ
рд╕реНрд╡реАрдХрд╛рд░реНрдп рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдЧреБрдгрд╡рддреНрддрд╛ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдЖрдкрдХреЛ wmv рдлрд╝рд╛рдЗрд▓ рдХреА рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рд╕реЗрдЯрд┐рдВрдЧреНрд╕ рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред
рдРрд╕рд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдмрд╕реЗ рдЖрд╕рд╛рди рддрд░реАрдХрд╛ рдПрдХреНрд╕рдЯреЗрдВрд╢рди рдХреЗ рд╕рд╛рде рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓ рдмрдирд╛рдирд╛ рд╣реИред рдЗрд╕рдореЗрдВ рдореМрдЬреВрдж рд╕реНрдЯреНрд░реАрдо рдХреА рдЧреБрдгрд╡рддреНрддрд╛ рдХреЗ рд▓рд┐рдП рдЬрд┐рдореНрдореЗрджрд╛рд░ рдкреИрд░рд╛рдореАрдЯрд░ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВ рдФрд░ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░реЗрдВред рдХреЛрдб рдореЗрдВ рдЗрд╕ рдлрд╝рд╛рдЗрд▓ рдХрд╛ рдПрдХ рдЙрджрд╛рд╣рд░рдг
good.prx рд╣реИрдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдФрд░ рдЙрдирд╕реЗ
ConfigProfileFromFile(IBaseFilter asfWriter, string filename)
рдореЗрдердб
ConfigProfileFromFile(IBaseFilter asfWriter, string filename)
рдореЗрдВ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, GPL рд▓рд╛рдЗрд╕реЗрдВрд╕ рдХреЗ рддрд╣рдд рд╡рд┐рддрд░рд┐рдд рдЯреАрдо MediaPortal рдкреНрд░реЛрдЬреЗрдХреНрдЯ рд╕реЗ WMLib рдХреНрд▓рд╛рд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЧрдпрд╛ред рдПрдХ рдмрд╛рд░ рдмрдирд╛рдиреЗ рдХреЗ рдмрд╛рдж, рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ
ConfigureFilterUsingProfile(wmProfile)
рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЗ
ConfigureFilterUsingProfile(wmProfile)
рд╡рд┐рдзрд┐ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ ASF рд░рд╛рдЗрдЯрд░ рдкрд░ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдПрдХ рдЖрдлреНрдЯрд░рд╡рд░реНрдб рдпрд╛ рдмрд┐рдЧ рдкреНрд░реЙрдмреНрд▓рдо рдХреЗ рдмрдЬрд╛рдп рдореБрдЭреЗ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛
Mpeg4Layer3, Codecs, AVIMux рдФрд░ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝реЗрд╢рди
рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдХреЗ рд╡рд┐рдХрд╛рд╕ рдХреА рд╢реБрд░реБрдЖрдд рдореЗрдВ, Mpeg4 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдФрд░ Layer3 рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдзреНрд╡рдирд┐ рдХреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХрд╛ рд╡рд┐рдЪрд╛рд░ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдПрд╡реАрдЖрдИ MUX рдХреЗ рд╕рд╛рде рдЗрди рд╕рднреА рдХреЛ рдПрдХ рд╣реА рдлрд╛рдЗрд▓ рдореЗрдВ рдЬреЛрдбрд╝рдХрд░, рдЬреИрд╕рд╛ рдХрд┐ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЧреНрд░рд╛рдл рдореЗрдВ рд╣реИ:

рдЬрд╣рд╛рдБ XVid рдХреЛрдбреЗрдХ рдлрд╝рд┐рд▓реНрдЯрд░ рдХреЗ рд╕реНрдерд╛рди рдкрд░ Mpeg-4 рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдХрдореНрдкреНрд░реЗрд╕рд░ рд╕реЗ рдХреЛрдИ рдлрд╝рд┐рд▓реНрдЯрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред Xvid рдФрд░ ffdshow, рдФрд░ рдХреБрдЫ рдЕрдиреНрдп рдлрд╝рд┐рд▓реНрдЯрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдпрд╛рд╕ рдХрд┐рдП рдЧрдП рдереЗ, рд╣рд╛рд▓рд╛рдБрдХрд┐, рдЧреНрд░рд╛рдлрд╝ рдХреЛ рд╡реАрдбрд┐рдпреЛ рд░рд┐рдХреЙрд░реНрдб рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдордЬрдмреВрд░ рдХрд░рдиреЗ рдХреЗ рдХрдИ рдкреНрд░рдпрд╛рд╕реЛрдВ рдХреЗ рдмрд╛рдж, рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реЛ рдЧрдпрд╛ рдХрд┐ рд╕рдм рдХреБрдЫ рдЙрддрдирд╛ рд╕рд░рд▓ рдирд╣реАрдВ рд╣реИ рдЬрд┐рддрдирд╛ рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ рд▓рдЧрддрд╛ рд╣реИред рд╢реБрд░реВ рд╣реЛрдиреЗ рдХреЗ рдХреБрдЫ рд╕рдордп рдмрд╛рдж рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдХреЛ рддреЛрдбрд╝рдиреЗ рдХреА рд╕рдорд╕реНрдпрд╛ рдереАред рдпрд╣рд╛рдБ рдХрд╛рд░рдг, рдЬрд╛рд╣рд┐рд░рд╛ рддреМрд░ рдкрд░, рдЗрд╕ рддрдереНрдп рдореЗрдВ рдирд┐рд╣рд┐рдд рд╣реИ рдХрд┐ AVI MUX рдХрдВрдЯреЗрдирд░ рдореЗрдВ рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдХреЛ рдорд┐рд▓рд╛рддреЗ рд╕рдордп, рд╡реАрдбрд┐рдпреЛ рдФрд░ рдСрдбрд┐рдпреЛ рдЯреНрд░реИрдХ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд╕рд┐рдВрдХреНрд░рдирд╛рдЗрдЬрд╝ рдирд╣реАрдВ рдХрд┐рдП рдЬрд╛рддреЗ рд╣реИрдВ, рдФрд░ рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╕рд╣реА рдЖрд╡реГрддреНрддрд┐ рдХреЗ рд╕рдорд╛рдпреЛрдЬрди рдХреЗ рд╕рд╛рде, рдЧреНрд░рд╛рдлрд╝ рдПрдХ рдпрд╛рджреГрдЪреНрдЫрд┐рдХ рдХреНрд╖рдг рдореЗрдВ рдмрдВрдж рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрдмрдХрд┐ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдмрд╛рдзрд┐рдд рд╣реЛ рдЧрдИ рдереА, рдФрд░ рдкреНрд▓реЗрдмреИрдХ рдХреЗ рджреМрд░рд╛рди рдпрд╣ рд╕рдВрднрд╡ рдерд╛ред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдСрдбрд┐рдпреЛ рдФрд░ рд╡реАрдбрд┐рдпреЛ рд╕рд┐рдВрдХ рд╕реЗ рдмрд╛рд╣рд░ рд╣реИрдВред
рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ, рдореИрдВ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рдХреЗ рд╕рдорд╛рдзрд╛рди рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛, рдХреНрдпреЛрдВрдХрд┐ рдореБрдЭреЗ рдПрдПрд╕рдПрдл рд▓реЗрдЦрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ wmv рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рд░рд┐рдХреЙрд░реНрдбрд┐рдВрдЧ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдХреЗ - рдЗрд╕реЗ рдПрдХ рдХрдЯреНрдЯрд░рдкрдВрдереА рддрд░реАрдХреЗ рд╕реЗ рдирд┐рдкрдЯрдирд╛ рдерд╛ред
рдпрджрд┐ рдпрд╣ рд▓реЗрдЦ рдХрд┐рд╕реА рдРрд╕реЗ рд╡реНрдпрдХреНрддрд┐ рджреНрд╡рд╛рд░рд╛ рдкрдврд╝рд╛ рдЧрдпрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╕рд╛рдордирд╛ рдХрд┐рдпрд╛ рд╣реИ рдФрд░ рдЗрд╕ рд╕рдорд╕реНрдпрд╛ рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реИ, рддреЛ рдореБрдЭреЗ рд╕рд▓рд╛рд╣ рджреЗрдиреЗ рдореЗрдВ рдЦреБрд╢реА рд╣реЛрдЧреАред
рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдФрд░ рд░реБрдЪрд┐ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж, рдореБрдЭреЗ рдЖрд╢рд╛ рд╣реИ рдХрд┐ рдпрд╣ рд▓реЗрдЦ рдШрд╛рддрдХ рд░реВрдк рд╕реЗ рдЙрдмрд╛рдК рдирд╣реАрдВ рдерд╛, рдФрд░ рдореБрдЭреЗ рдпрд╣ рднреА рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╛рдордЧреНрд░реА рдХрд┐рд╕реА рдХреЗ рд▓рд┐рдП рд╡реНрдпрд╛рд╡рд╣рд╛рд░рд┐рдХ рдЙрдкрдпреЛрдЧ рд╣реЛ рд╕рдХрддреА рд╣реИред