womble
.
Вам для начала надо понять для себя и выработать стратегию обработки видео.
Т.е. то, что Вы хотите.
Для примера, привожу Вам стратегию обработки видео...
.
Обработка звука с помощью AviSynth.
Файл разбит на 4-е части (сорри, файл большой).
Реально проверено при работе со звуком 5.1 .
.
.
Вам для начала надо понять для себя и выработать стратегию обработки видео.
Т.е. то, что Вы хотите.
Для примера, привожу Вам стратегию обработки видео...
.
001 | # |
002 | # Порядок обработки VHS видео материала (video DVD) |
003 | # AviSynth cкрипты для обработки видео материала |
004 | # |
005 | # Данный порядок приведен для примера |
006 | # |
007 | |
008 | |
009 | Скрипт 01 |
010 | |
011 | 1. Открытие файла AVISource, DirectShowSource, другое... |
012 | 2. Преобразование к YUY2 (YV12), ConvertToYUY2(), (ConvertToYV12()) ... |
013 | 3а. Анализ цветового пространства ColorYUV2(opt= "coring" , analyze=true) ... |
014 | 3. Коррекция цветовой матрицы ColorMatrix(mode= "Rec.709->Rec.601" , inputFR=false, clamp=0, threads=0) .. |
015 | 4. Деинтерлейс (если необходимо) EEDI3, NNEDI3, TDeint, TMM ... |
016 | 5. Ресайз к PAR = 1 : 1 (квадратный пиксел) Spline64Resize() ... |
017 | 6. Обрезка дефектов кадра Crop() с соотношением сторон 4 : 3 (или 16 : 9)... |
018 | 6а. Если необходимо, ресайз до размера 768х576 (квадратный пиксел) в 2, 4 раза NNEDI3_rpow2(), NNEDI2_rpow2() ... |
019 | 7. Ресайз к исходному размеру, шаг 5, или ресай до размера 768х576 (квадратный пиксел) Spline64Resize() ... |
020 | 8. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
021 | |
022 | |
023 | Скрипт 02 |
024 | |
025 | 1. Открытие файла AVISource ... |
026 | 2. Получение аудио дорожки GetChannel(last, 1, 2) ... |
027 | 3. Удаление аудиодорожки из видео KillAudio() ... |
028 | 4. Построение Super клипа MSuper() ... |
029 | 5. Постороение Back Vectors до 10 включительно MAnalyze() ... |
030 | 6. Постороение Forward Vectors до 10 включительно MAnalyze() ... |
031 | 7. Построение Flow Vectors до 10 включительно MFlowInter() ... |
032 | 8. Функции интерполяции кадров до 10 включительно ... |
033 | 9. Собственно сама интерполяция плохих кадров по видео материалу ... |
034 | 9а. Если необходимо, замена плохих кадров на нормальные кадры из видео материала Trim() ... |
035 | 10. Восстановление звука видео материала AudioDub() ... |
036 | 11. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
037 | |
038 | |
039 | Скрипт 03 |
040 | |
041 | 1. Открытие файла AVISource ... |
042 | 2. Восстановление баланса белого для видео VHS ACOBW() ... |
043 | 3. Цвет, уровни ColorYUV2(gain_y = -0, cont_y = -0, gain_v = 0, gain_u = -0, off_u = 0, off_v = -0), Levels(0, 1.0, 255, 0, 255) ... |
044 | 4. Авто уровни AddBorders(X1al, 0, 0, 0, ColorWhite) # X1al = 4, AddBorders(0, 0, X2al, 0, ColorBlack) # X2al = 2, AutoLevels(filterRadius = filtRadius), Crop(X1al, 0, -1 * X2al , -0) ... |
045 | 5. Авто баланс белого ColorYUV2(last, opt= "coring" , showyuv=false, analyze=false, autowhite=true, autogain=false) # Auto White ... |
046 | 6. Коррекция цветности, яркости, контрастности, насыщенности Tweak(last, hue = 0, sat = 1.2, cont = 0.9, coring = false, sse = false) ... |
047 | 7. Удаление радужности и цветового шума VHS CamCD(96, 1) ... |
048 | 8. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
049 | |
050 | |
051 | Скрипт 04 |
052 | |
053 | 1. Открытие файла AVISource ... |
054 | 2. Глобальная стабилизация изображения 1-й вариант DePanEstimate() ... |
055 | 3. Глобальная стабилизация изображения 1-й вариант DepanStabilize() ... |
056 | 4. Глобальная стабилизация изображения 2-й вариант предварительная фильтрация FFT3DFilter() ... |
057 | 5. Глобальная стабилизация изображения 2-й вариант построение Super клипа MSuper() ... |
058 | 6. Глобальная стабилизация изображения 2-й вариант построение вектора MAnalyze() ... |
059 | 7. Глобальная стабилизация изображения 2-й вариант MDepan(клип шаг 3, клип шаг 5) ... |
060 | 8. Глобальная стабилизация изображения 2-й вариант DepanStabilize() ... |
061 | 9. Удаление горизонтальных и вертикальных полос и царапин DeScratch(), DeSpot() несколько вариантов ... |
062 | 10. Удаление помех Delete_Stripes() если необходимо ... |
063 | 11. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
064 | |
065 | |
066 | Скрипт 05 |
067 | |
068 | 1. Открытие файла AVISource ... |
069 | 2. Проработка черных линий, мелких черных деталей видео материала FastLineDarken(), aWarpSharp(depth=4, blurlevel=2, thresh=0.2, cm=1) ... |
070 | 3. Повышение резкости изображения MGSharp(strength=8, thresh=64, ss=4) ... |
071 | 4. Восстанавление резкости изображения вариант 1 LSFmod() ... |
072 | 5. Восстанавление резкости изображения вариант 2 LimitedSharpenFaster(smode=3, strength=100) # 150 ... |
073 | 6. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
074 | |
075 | |
076 | Скрипт 06 |
077 | |
078 | 1. Открытие файла AVISource ... |
079 | 2. Шумодав для пикселей UnDot() ... |
080 | 3. Удаление блочности Deblock_QED(), DeBlock_Didee() ... |
081 | 4. Удаляние размытости цветовых контуров RemoveColorBleeding() ... |
082 | 5. Удаляние радужности DeRainbow2() ... |
083 | 6а. Предварительная фильтрация degrainmedian(), fft3dfilter() ... |
084 | 6б. Построение Super клипа MSuper() ... |
085 | 6в. Построение векторов Back Vectors1, Forward Vectors1 MAnalyze() ... |
086 | 6г. Сглаживание (шумоподавитель) MDegrain1() ... |
087 | 7. Восстанавление резкости изображения, потерянную после mdegrain вариант 1 LSFmod() ... |
088 | 8. Восстанавление резкости изображения, потерянную после mdegrain вариант 2 LimitedSharpenFaster(smode=3, strength=64) # 100 ... |
089 | 9. Дехало (DeHalo) DeHalo_alpha(), YAHR() ... |
090 | 10. DeBanding Filter, Color Banding Gradfun2dbmod() ... |
091 | 11. Функция deVCR (VHS) deVCR(30) ... |
092 | 12. This filter aims to repair the light and dark halos that follow high contrast edges in VHS sources FixVHSOversharpL(30, 12, 8), FixVHSOversharp(30, 14, 10), FixVHSOversharp(30, 12, 8) ... |
093 | 13. Удаление скачков яркости FluxSmoothT(7) ... |
094 | 14. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
095 | |
096 | |
097 | Скрипт 07 |
098 | |
099 | 1. Открытие файла AVISource ... |
100 | 2. Предварительная фильтрация degrainmedian() ... |
101 | 3. Построение Super клипа MSuper() ... |
102 | 4. Построение векторов Back Vectors1..3, Forward Vectors1..3 MAnalyze() ... |
103 | 5. Сглаживание (шумоподавитель) MDegrain3() ... |
104 | 6. Пост фильтрация fft3dfilter() ... |
105 | 7. Сглаживание (шумоподавитель) FizzKiller() ... |
106 | 8. Восстанавление резкости изображения, потерянную после mdegrain вариант 1 LSFmod() ... |
107 | 9. Восстанавление резкости изображения, потерянную после mdegrain вариант 2 LimitedSharpenFaster(smode=3, strength=64) # 100 ... |
108 | 10. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
109 | |
110 | |
111 | Скрипт 08 |
112 | |
113 | 1. Открытие файла AVISource ... |
114 | 2. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM для экспорта звука для обработки ... |
115 | 3. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM, начало фильма (если необходимо) ... |
116 | 4. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM, середина фильма (если необходимо)... |
117 | 5. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM, конец фильма (если необходимо)... |
118 | 6. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM, титры фильма (если необходимо)... |
119 | |
120 | |
121 | Скрипт 09 |
122 | |
123 | 1. Открытие основного файла AVISource ... |
124 | 2. Удаление звуковой дорожки из видео материала KillAudio() ... |
125 | 3. Открыте обработанного звука WAVSource() ... |
126 | 4. Преобразование звука к 16 бит ConvertAudioTo16bit() ... |
127 | 5. Восстановление звука видео материала AudioDub() ... |
128 | 6. Открытие дополнительных файлов AVISource ... |
129 | 7. Сборка всего фильма целиком ... |
130 | 8. Преобразование ConvertToYV12() для записи DVD ... |
131 | 9. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
132 | |
133 | |
134 | Скрипт 10 (если необходим интерлейс) |
135 | |
136 | 1. Открытие файла AVISource ... |
137 | 2. Построение Super клипа MSuper() ... |
138 | 3. Построение векторов Back Vectors1, Forward Vectors1 MAnalyze() ... |
139 | 4. Построение векторов Back Vectors1, Forward Vectors1 MRecalculate() ... |
140 | 5. Изменение частоты кадров MFlowFps() ... |
141 | 6. Ресайз Spline64Resize() к размеру 720х576 (DVD PAL) ... |
142 | 7. Разделение на поля SeparateFields() или SeparateFieldsMod() ... |
143 | 8. Выбор кадров (полей) SelectEvery(4, 0, 3) ... |
144 | 9. Соединение полей черезстрочного видео Weave() ... |
145 | 10. Запись AVI файла (чуть поджатый DivX, пресет 1080, битрейт 20 000), не сжатый звук PCM ... |
Добавление от 23.12.2014 17:26:
.Обработка звука с помощью AviSynth.
Файл разбит на 4-е части (сорри, файл большой).
Реально проверено при работе со звуком 5.1 .
.
001 | # |
002 | # File: Stereo.avsi |
003 | # |
004 | # |
005 | # Date : 10.04.2013 year |
006 | # Version: 1.6 |
007 | # |
008 | # |
009 | # License: GNU GENERAL PUBLIC LICENSE |
010 | # |
011 | # |
012 | # Author: Jenyok (Evgeniy Gurovskikh, Russia, Moscow) |
013 | # E-Mail: e_gurovskikh@mail.ru |
014 | # |
015 | # |
016 | # Functions (pseudo Stereo and other sound functions) for AVISynth |
017 | # |
018 | # For all occasions of life (На все случаи жизни) ... |
019 | # |
020 | # |
021 | # Plugin and Import |
022 | # |
023 | # SoxFilter.dll |
024 | # |
025 | # |
026 | # |
027 | # function GetLeftChannel(clip clp) |
028 | # function GetRightChannel(clip clp) |
029 | # function Phase180(clip clp) |
030 | # |
031 | # |
032 | # function PhaseDelay(clip clp, float "freq" , float "phi" ) Shift (rotate) phase of audio to a different angle |
033 | # function PhaseShift(clip clp, float "freq" , float "phi" ) Shift (rotate) phase of audio to a different angle |
034 | # function PhaseShift2(clip clp, float "freq" , float "freq2" , float "phi" ) Shift (rotate) phase of audio to a different angle |
035 | # |
036 | # function MonoToStereo(clip clp, int "Channel" ) Simple convert MONO audio to STEREO audio |
037 | # function PseudoStereo1(clip clp, int "Channel" , float "Delay" ) Only DELAY between channels, Delay in Sec |
038 | # function PseudoStereo12(clip clp, int "Channel" , float "Delay" , float "KMix" ) DELAY, L=L*k1+R*k2, R=R*k1+L*k2 (Addition) |
039 | # function PseudoStereo13(clip clp, int "Channel" , float "Delay" , float "KMix" ) DELAY, L=L*k1-R*k2, R=R*k1-L*k2 (Substraction) |
040 | # |
041 | # function PseudoStereo2(clip clp, int "Channel" , float "LowFreq" , float "HighFreq" , bool "isDelay" ) |
042 | # function PseudoStereo22(clip clp, int "Channel" , bool "isDelay" ) |
043 | # function PseudoStereo23(clip clp, int "Channel" , bool "isDelay" ) |
044 | # |
045 | # function PseudoStereo3(clip clp, int "Channel" , bool "isDelay" ) Described: Magazine "Radio" № 6, 1985 year, page 62 (USSR, Russia) |
046 | # function PseudoStereo33(clip clp, int "Channel" , bool "isDelay" ) Described: Magazine "Radio" № 6, 1985 year, page 62 (USSR, Russia) |
047 | # |
048 | # function PseudoStereo4(clip clp, int "Channel" , bool "isDelay" ) US Patent No 6,636,608 B1 |
049 | # function PseudoStereo43(clip clp, int "Channel" , bool "isDelay" ) US Patent No 6,636,608 B1 |
050 | # |
051 | # function PseudoStereo5(clip clp, int "Channel" , bool "isDelay" ) Analog: Philips chip TDA3810 (sound porcessor) |
052 | # function PseudoStereo52(clip clp, int "Channel" , bool "isDelay" ) Analog: Philips chip TDA3810 (sound porcessor) |
053 | # |
054 | # |
055 | # function StereoEnhancer(clip clp) Analog: Philips chip TDA3810 (sound porcessor) |
056 | # |
057 | # |
058 | # function StereoTo51(clip clp, bool "is24bit" , bool "isStereo" ) Convert STEREO to 5.1 audio, 24 bits output |
059 | # |
060 | # function UpDialog(clip clp) Convert STEREO to 5.1 audio |
061 | # function UpDialog2(clip clp) Convert STEREO to 5.1 audio |
062 | # function UpAction(clip clp) Convert STEREO to 5.1 audio |
063 | # function UpAction2(clip clp) Convert STEREO to 5.1 audio |
064 | # function UpGerzen(clip clp) Convert STEREO to 5.1 audio |
065 | # function UpFarina(clip clp) Convert STEREO to 5.1 audio |
066 | # function UpMultisonic(clip clp) Convert STEREO to 5.1 audio |
067 | # function UpSoundOnSound(clip clp) Convert STEREO to 5.1 audio |
068 | # |
069 | # |
070 | # function Dmix3Stereo(clip a) Downmix sound functions |
071 | # function Dmix3Dpl(clip a) Downmix sound functions |
072 | # function Dmix4lStereo(clip a) Downmix sound functions |
073 | # function Dmix4qStereo(clip a) Downmix sound functions |
074 | # function Dmix4sDpl(clip a) Downmix sound functions |
075 | # function Dmix5Stereo(clip a) Downmix sound functions |
076 | # function Dmix5Dpl(clip a) Downmix sound functions |
077 | # function Dmix5Dpl2(clip a) Downmix sound functions |
078 | # function Dmix6Stereo(clip a) Downmix sound functions |
079 | # function Dmix6Dpl(clip a) Downmix sound functions |
080 | # function Dmix6Dpl2(clip a) Downmix sound functions |
081 | # function Dmix6StereoLfe(clip a) Downmix sound functions |
082 | # function Dmix6StereoLfe2(clip a) Downmix sound functions |
083 | # function Dmix6DplLfe(clip a) Downmix sound functions |
084 | # function Dmix6Dpl2Lfe(clip a) Downmix sound functions |
085 | # |
086 | # |
087 | |
088 | |
089 | |
090 | |
091 | |
092 | LoadPlugin( "C:\PROGRAM FILES\AVISYNTH 2.5\PLUGINS\SOXFILTER_11\soxfilter.dll" ) |
093 | |
094 | |
095 | |
096 | |
097 | |
098 | # Global Constants |
099 | # |
100 | global GLeftChannel = 1 |
101 | global GRightChannel = 2 |
102 | global GChannel = GLeftChannel |
103 | |
104 | |
105 | # Global Constants |
106 | # |
107 | global GDelay = 0.01200 # Delay t = 0.0120 sec (v=331 m/sec) ~4 m between sound source L and R in room |
108 | # Delay t = [0.0006 ... 0.025] sec l, Length = [0.1986 ... 8.275] meters |
109 | global VSound = 331.0 # Speed of sound in air, 331 m/sec |
110 | |
111 | |
112 | |
113 | |
114 | |
115 | # |
116 | # Get Left Channel of audio signal |
117 | # |
118 | function GetLeftChannel(clip clp) |
119 | { |
120 | L = GetChannel(clp, GLeftChannel) |
121 | |
122 | return (ConvertToMono(L)) |
123 | } |
124 | |
125 | |
126 | |
127 | # |
128 | # Get Right Channel of audio signal |
129 | # |
130 | function GetRightChannel(clip clp) |
131 | { |
132 | R = GetChannel(clp, GRightChannel) |
133 | |
134 | return (ConvertToMono(R)) |
135 | } |
136 | |
137 | |
138 | |
139 | # |
140 | # Shift (rotate) phase of audio signal to +180 grad |
141 | # |
142 | function Phase180(clip clp) |
143 | { |
144 | return (Amplify(clp, -1.0)) |
145 | } |
146 | |
147 | |
148 | |
149 | # |
150 | # Rotate (shift) sound phase to angle "phi" by DELAY |
151 | # |
152 | # Special for PSEUDO STEREO audio functions ... |
153 | # |
154 | # |
155 | # Phase shift, Delay audio signal by dT, mili sec. |
156 | # |
157 | # |
158 | function PhaseDelay(clip clp, float "freq" , float "phi" ) |
159 | { |
160 | # Default variables |
161 | # |
162 | freq = Default(freq, 1000.0) # Frequency Hz |
163 | phi = Default(phi, 90.0) # Angle "phi" grad |
164 | |
165 | |
166 | # Variables |
167 | # |
168 | # Input # input sound variable |
169 | # Shift # variable |
170 | # Time # variable |
171 | |
172 | |
173 | # Here is a code of function |
174 | # |
175 | phi = (phi > 90.0) ? 90.0 : (phi < -90.0) ? -90.0 : Phi # phi = [-90 ... +90] grad |
176 | |
177 | freq = Abs (freq) |
178 | freq = (freq < 5.0) ? 5.0 : (freq > 22000.0) ? 22000.0 : freq # Frequency = [5 ... 22000] Hz |
179 | |
180 | Time = Float(phi) / (Float(freq) * 360.0) # Time to Delay |
181 | |
182 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
183 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
184 | Shift = DelayAudio(Input, Time) # Delay audio WAVE Period divided by (+360.0 / phi) |
185 | |
186 | return (Shift) |
187 | } |
188 | |
189 | |
190 | |
191 | # |
192 | # Rotate (shift) sound phase to angle "phi" |
193 | # |
194 | # Special for PSEUDO STEREO audio functions ... |
195 | # |
196 | # |
197 | function PhaseShift(clip clp, float "freq" , float "phi" ) |
198 | { |
199 | # Default variables |
200 | # |
201 | freq = Default(freq, 1000.0) # Frequency 1000 Hz |
202 | phi = Default(phi, 90.0) # Angle "phi" grad |
203 | |
204 | |
205 | # Constants |
206 | # |
207 | HighPass = "highpass " # High Pass Filter (ФВЧ) "/---" |
208 | |
209 | |
210 | # Variables |
211 | # |
212 | # Input # input sound variable |
213 | # Input180 # input sound, phase +180 grad Variable |
214 | # Shift # variable |
215 | # Str1 # variable |
216 | |
217 | |
218 | # Here is a code of function |
219 | # |
220 | phi = (phi > 90.0) ? 90.0 : (phi < -90.0) ? -90.0 : Phi # phi = [-90 ... +90], grad |
221 | |
222 | freq = Abs (freq) |
223 | freq = (freq < 5) ? 5.0 : (freq > 22000.0) ? 22000.0 : freq # Frequency = [5 ... 22000] Hz freq |
224 | |
225 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
226 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
227 | Input180 = Phase180(Input) # Shift (Rotate) phase to +180 grad |
228 | |
229 | Str1 = HighPass + String( Round (freq)) # Str1= "highpass " + String( Round (freq)) |
230 | Shift = SoxFilter(Input, Str1) # High Pass filter "/---" , freq Hz, shift (rotate) phase +90 grad |
231 | Shift = ConvertAudioTo16bit(Shift) # Convert audio to 16 bits integer |
232 | Shift = PhaseDelay(Shift, phi=-90.0, freq=freq) # Shift (Rotate) phase to -90 grad |
233 | |
234 | Shift = PhaseDelay(Shift, phi=phi, freq=freq) # Shift (Rotate) phase to phi grad, frequency=freq |
235 | Shift = MixAudio(Shift, Input180, 0.5, 0.5) # Shift = Shift + Input180 (addition) |
236 | |
237 | return (Shift) |
238 | } |
239 | |
240 | |
241 | |
242 | # |
243 | # Rotate (shift) sound phase to angle "phi" |
244 | # |
245 | # Special for PSEUDO STEREO audio functions ... |
246 | # |
247 | # |
248 | function PhaseShift2(clip clp, float "freq" , float "freq2" , float "phi" ) |
249 | { |
250 | # Default variables |
251 | # |
252 | freq = Default(freq, 100.0) # Frequency 100 Hz |
253 | freq2 = Default(freq2, 10000.0) # Frequency 10000 Hz |
254 | phi = Default(phi, 90.0) # Angle "phi" , grad |
255 | |
256 | |
257 | # Constants |
258 | # |
259 | BandPass = "bandpass " # Band Pass Filter (ПОЛОСОВОЙ) "/----\" |
260 | |
261 | |
262 | # Variables |
263 | # |
264 | # Input # input sound variable |
265 | # Input180 # input sound, phase +180 grad Variable |
266 | # FCentral # variable |
267 | # FWidth # variable |
268 | # Shift # variable |
269 | # Shift1 # variable |
270 | # Shift2 # variable |
271 | # Shift3 # variable |
272 | # Str1 # variable |
273 | # tmp # variable |
274 | |
275 | |
276 | # Here is a code of function |
277 | # |
278 | phi = (phi > 90.0) ? 90.0 : (phi < -90.0) ? -90.0 : Phi # phi = [-90 ... +90] grad |
279 | |
280 | freq = Abs (freq) |
281 | freq2 = Abs (freq2) |
282 | |
283 | (freq2 < freq) ? Eval ( "" " |
284 | tmp = freq2 |
285 | freq2 = freq |
286 | freq = tmp |
287 | "" ") : NOP() |
288 | |
289 | freq = (freq < 5.0) ? 5.0 : (freq > 22000.0) ? 22000.0 : freq # Frequency = [5 ... 22000] Hz, freq |
290 | freq2 = (freq2 < 5.0) ? 5.0 : (freq2 > 22000.0) ? 22000.0 : freq2 # Frequency = [5 ... 22000] Hz, freq2 |
291 | |
292 | FCentral = Round ((freq + freq2) / 2.0) # Central frequency for Band Pass Filter |
293 | FWidth = Round (freq2 - freq) # Width frequency for Band Pass Filter |
294 | |
295 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
296 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
297 | Input180 = Phase180(Input) # Rotate (shift) phase to +180 grad |
298 | |
299 | Str1 = BandPass + String(FCentral) + " " + String(FWidth) |
300 | Shift = SoxFilter(Input, Str1) # Band Pass filter "/----\", FCentral, FWidth Hz |
301 | Shift = ConvertAudioTo16bit(Shift) # Convert audio to 16 bits integer |
302 | |
303 | Shift1 = PhaseDelay(Shift, phi=phi, freq=freq) # freq Shift phase to +90 grad |
304 | Shift2 = PhaseDelay(Shift, phi=phi, freq=FCentral) # FCentral Shift phase to +90 grad |
305 | Shift3 = PhaseDelay(Shift, phi=phi, freq=freq2) # freq2 Shift phase to +90 grad |
306 | |
307 | Shift = MixAudio(Shift1, Shift2, 0.75, 0.25) # Shift = Shift1 + Shift2 (addition) |
308 | Shift = MixAudio(Shift, Shift3, 0.75, 0.25) # Shift = Shift + Shift3 (addition) |
309 | Shift = MixAudio(Shift, Input180, 0.75, 0.25) # Shift = Shift + Input180 (addition) |
310 | |
311 | return (Shift) |
312 | } |
313 | |
314 | |
315 | |
316 | # |
317 | # Simple MONO to STEREO audio conversion algorithm |
318 | # |
319 | function MonoToStereo(clip clp, int "Channel" ) |
320 | { |
321 | Channel = Default(Channel, GLeftChannel) |
322 | |
323 | mono = KillVideo(clp) |
324 | mono = GetChannel(mono, Channel) |
325 | mono = ConvertToMono(mono) |
326 | |
327 | return (MergeChannels(mono, mono)) |
328 | } |
329 | |
330 | |
331 | |
332 | # |
333 | # New Stereo algorythm for MONO audio track |
334 | # |
335 | # Only DELAY between channels in Sec |
336 | # |
337 | # |
338 | function PseudoStereo1(clip clp, int "Channel" , float "Delay" ) |
339 | { |
340 | # Default variables |
341 | # |
342 | Channel = Default(Channel, GLeftChannel) # Set default Left Channel (Левый канал) |
343 | Delay = Default(Delay, GDelay) # Delay in Right Channel (Задержка в Правом Канале) |
344 | |
345 | |
346 | # Variables |
347 | # |
348 | # Input # input sound Variable |
349 | # LeftChannel # Variable |
350 | # RightChannel # Variable |
351 | # Stereo # Variable |
352 | |
353 | |
354 | # Here is a code of function |
355 | # |
356 | Delay = Abs (Delay) |
357 | Delay = (Delay <= 0.0006) ? 0.0006 : (Delay > 0.025) ? 0.025 : Delay # Delay = [0.6 ... 25] miliSec |
358 | |
359 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
360 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
361 | Input = GetChannel(Input, Channel) # Get Left (Right) Audio Channel |
362 | Input = ConvertToMono(Input) # Convert to MONO signal |
363 | Input = Normalize(Input, 0.707) # Normalize sound volume level to -3dB |
364 | |
365 | LeftChannel = Input |
366 | RightChannel = DelayAudio(Input, Delay) |
367 | LeftChannel = Normalize(LeftChannel, 1.0) # Normalize sound volume level to +0dB |
368 | RightChannel = Normalize(RightChannel, 1.0) # Normalize sound volume level to +0dB |
369 | |
370 | Stereo = MergeChannels(LeftChannel, RightChannel) # Merge MONO singals to STEREO signal |
371 | |
372 | return (Stereo) |
373 | |
374 | |
375 | # For Debug only |
376 | # return (ConvertAudioTo16bit(LeftChannel)) |
377 | # return (ConvertAudioTo16bit(RightChannel)) |
378 | } |
379 | |
380 | |
381 | |
382 | # |
383 | # New Stereo algorythm for MONO audio track |
384 | # |
385 | # L = L * k1 + R * (1 - k1) |
386 | # R = R * k1 + L * (1 - k1) |
387 | # DELAY between channels in Sec |
388 | # |
389 | # |
390 | function PseudoStereo12(clip clp, int "Channel" , float "Delay" , float "KMix" ) |
391 | { |
392 | # Default variables |
393 | # |
394 | Channel = Default(Channel, GLeftChannel) # Set default Left Channel (Левый канал) |
395 | Delay = Default(Delay, GDelay) # Delay in Right Channel (Задержка в Правом Канале) |
396 | KMix = Default(KMix, 0.70) # First Coefficient of MixAudio() |
397 | |
398 | |
399 | # Variables |
400 | # |
401 | # Input # input sound Variable |
402 | # LeftChannel # Variable |
403 | # RightChannel # Variable |
404 | # LChannel # Variable |
405 | # RChannel # Variable |
406 | # KMix2 # Variable |
407 | # Stereo # Variable |
408 | |
409 | |
410 | # Here is a code of function |
411 | # |
412 | KMix = Abs (KMix) |
413 | KMix = (KMix < 0.10) ? 0.10 : (KMix > 0.90) ? 0.90 : KMix # KMix = [0.10 ... 0.90] |
414 | KMix2 = 1.00 - KMix |
415 | |
416 | Delay = Abs (Delay) |
417 | Delay = (Delay <= 0.0006) ? 0.0006 : (Delay > 0.025) ? 0.025 : Delay # Delay = [0.6 ... 25] miliSec |
418 | |
419 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
420 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
421 | Input = GetChannel(Input, Channel) # Get Left (Right) Audio Channel |
422 | Input = ConvertToMono(Input) # Convert to MONO signal |
423 | Input = Normalize(Input, 0.707) # Normalize sound volume level to -3dB |
424 | |
425 | LeftChannel = Input |
426 | |
427 | RightChannel = DelayAudio(Input, Delay) # Delay audio |
428 | RightChannel = Normalize(RightChannel, 0.707) # Normalize sound volume level to -3dB |
429 | |
430 | LChannel = LeftChannel # LChannel original LeftChannel |
431 | RChannel = RightChannel # RChannel original RightChannel |
432 | LeftChannel = MixAudio(LeftChannel, RChannel, KMix, KMix2) # LeftChannel = LeftChannel * KMix + RightChannel * KMix2 (addition) |
433 | RightChannel = MixAudio(RightChannel, LChannel, KMix, KMix2) # RightChannel = RightChannel * KMix + LeftChannel * KMix2 (addition) |
434 | |
435 | LeftChannel = Normalize(LeftChannel, 1.0) # Normalize sound volume level to +0dB |
436 | RightChannel = Normalize(RightChannel, 1.0) # Normalize sound volume level to +0dB |
437 | |
438 | Stereo = MergeChannels(LeftChannel, RightChannel) # Merge MONO singals to STEREO signal |
439 | |
440 | return (Stereo) |
441 | |
442 | |
443 | # For Debug only |
444 | # return (ConvertAudioTo16bit(LeftChannel)) |
445 | # return (ConvertAudioTo16bit(RightChannel)) |
446 | # return (ConvertAudioTo16bit(LChannel)) |
447 | # return (ConvertAudioTo16bit(RChannel)) |
448 | } |
449 | |
450 | |
451 | |
452 | # |
453 | # New Stereo algorythm for MONO audio track |
454 | # |
455 | # L = L * k1 - R * (1 - k1) |
456 | # R = R * k1 - L * (1 - k1) |
457 | # Only DELAY between channels in Sec |
458 | # |
459 | # |
460 | function PseudoStereo13(clip clp, int "Channel" , float "Delay" , float "KMix" ) |
461 | { |
462 | # Default variables |
463 | # |
464 | Channel = Default(Channel, GLeftChannel) # Set default Left Channel (Левый канал) |
465 | Delay = Default(Delay, GDelay) # Delay in Right Channel (Задержка в Правом Канале) |
466 | KMix = Default(KMix, 0.70) # First Coefficient of MixAudio() |
467 | |
468 | |
469 | # Variables |
470 | # |
471 | # Input # input sound Variable |
472 | # LeftChannel # Variable |
473 | # RightChannel # Variable |
474 | # LChannel # Variable |
475 | # RChannel # Variable |
476 | # KMix2 # Variable |
477 | # Stereo # Variable |
478 | |
479 | |
480 | # Here is a code of function |
481 | # |
482 | KMix = Abs (KMix) |
483 | KMix = (KMix < 0.10) ? 0.10 : (KMix > 0.90) ? 0.90 : KMix # KMix = [0.10 ... 0.90] |
484 | KMix2 = -1.0 * (1.0 - KMix) |
485 | |
486 | Delay = Abs (Delay) |
487 | Delay = (Delay <= 0.0006) ? 0.0006 : (Delay > 0.025) ? 0.025 : Delay # Delay = [0.6 ... 25] miliSec |
488 | |
489 | Input = KillVideo(clp) # Get Audio Channel(s), kill Video content |
490 | Input = ConvertAudioTo16Bit(Input) # Convert to 16 bits integer |
491 | Input = GetChannel(Input, Channel) # Get Left (Right) Audio Channel |
492 | Input = ConvertToMono(Input) # Convert to MONO signal |
493 | Input = Normalize(Input, 0.707) # Normalize sound volume level to -3dB |
494 | |
495 | LeftChannel = Input |
496 | |
497 | RightChannel = DelayAudio(Input, Delay) # Delay audio |
498 | RightChannel = Normalize(RightChannel, 0.707) # Normalize sound volume level to -3dB |
499 | |
500 | LChannel = LeftChannel # LChannel original LeftChannel |
501 | RChannel = RightChannel # RChannel original RightChannel |
502 | LeftChannel = MixAudio(LeftChannel, RChannel, KMix, KMix2) # LeftChannel = LeftChannel * KMix - RightChannel * KMix2 (substraction) |
503 | RightChannel = MixAudio(RightChannel, LChannel, KMix, KMix2) # RightChannel = RightChannel * KMix - LeftChannel * KMix2 (substraction) |
504 | |
505 | LeftChannel = Normalize(LeftChannel, 1.0) # Normalize sound volume level to +0dB |
506 | RightChannel = Normalize(RightChannel, 1.0) # Normalize sound volume level to +0dB |
507 | |
508 | Stereo = MergeChannels(LeftChannel, RightChannel) # Merge MONO singals to STEREO signal |
509 | |
510 | return (Stereo) |
511 | |
512 | |
513 | # For Debug only |
514 | # return (ConvertAudioTo16bit(LeftChannel)) |
515 | # return (ConvertAudioTo16bit(RightChannel)) |
516 | # return (ConvertAudioTo16bit(LChannel)) |
517 | # return (ConvertAudioTo16bit(RChannel)) |
518 | } |
Исправлено: Jenyok, 23.12.2014 17:34