Главная Архив Сайты Комменты Канал ВКонтакт Группа ВК Instagram Карта
Велосипедное Компьютерное Фототема Троицк Разное
бновлено: 22.01.2016

Решение проблемы со звуком при кодировании видео в Xvid4PSP 5

Здравствуйте, уважаемые посетители. Давно пользуюсь программой Xvid4PSP для кодирования видео и на днях столкнулся с проблемой: при склеивании нескольких видеофайлов посредством Xvid4PSP, в конечном, прокодированном видео отсутствует звук. Вернее, он есть, но лишь в первом фрагменте, во всех остальных присоединённых звука нет. Данная проблема встречается лишь при работе с видеозаписями в определённом формате в пятой версии программы. Решение этой проблемы нашёл самостоятельно и хочу описать его здесь, вдруг поможет кому-нибудь ещё.

Вариантов решения проблемы собственно два. Первый: использовать альтернативный скрипт AviSynth. Второй: предварительно прокодировать каждый фрагмент видео, с которым имеются проблемы, в другой формат. Вариант с предварительным кодированием надо сказать очень затратен по времени и очень неудобен, так что мало кого устроит. Гораздо проще использовать альтернативный скрипт. Сейчас покажу, как это делается. К примеру, у вас есть два видеофайла, которые нужно склеить и прокодировать: video1.avi и video2.avi. Инструкция следующая:

1. Открыть первый видеофайл в программе Xvid4PSP

Главное окно программы Xvid4PSP с открытым видеофайлом video1.avi

2. Открыть пункт меню AviSynth->Изменить скрипт фильтрации

Изменяем скрипт фильтрации

3. В появившемся окне «Фильтрация» нужно заменить весь текст следующим скриптом, который кстати генерирует сам Xvid4PSP, но при работе с другими форматами видео. В этом скрипте вам нужно заменить лишь пути к фрагментам видеофайлов на свои:

Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
LoadCPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\yadif.dll")

DirectShowSource("d:\newfolder\video1.avi", fps=30.000, convertfps=true)++DirectShowSource("d:\newfolder\video2.avi", fps=30.000, convertfps=true)

ConvertToYV12(interlaced = true)
Yadif(order=-1)

Соответствующим образом, если вам нужно склеить более двух видеофайлов, измените скрипт, дописав в пятой строке ++DirectShowSource(«d:\newfolder\video3.avi», fps=30.000, convertfps=true) нужное количество раз. Например, для склеивания четырёх видеофайлов скрипт будет выглядеть так:

Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\AudioFunctions.avs")
Import("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\functions\VideoFunctions.avs")
LoadCPlugin("C:\Program Files (x86)\XviD4PSP 5\dlls\AviSynth\plugins\yadif.dll")

DirectShowSource("d:\newfolder\video1.avi", fps=30.000, convertfps=true)++DirectShowSource("d:\newfolder\video2.avi", fps=30.000, convertfps=true)++DirectShowSource("d:\newfolder\video3.avi", fps=30.000, convertfps=true)++DirectShowSource("d:\newfolder\video4.avi", fps=30.000, convertfps=true)

ConvertToYV12(interlaced = true)
Yadif(order=-1)

Обратите внимание, что в пятой строке не допускаются переносы строк!

Скрипт для склеивания четырёх видеофайлов в окне «Фильтрация»

Единственный минус этого метода с изменением скрипта заключается в том, что кодировщик после этого неправильно показывает процесс кодирования видео в процентах, что впрочем никак не влияет на конечный результат.

Автор: Sandy Programmer
Дата: 22.01.2016
3477
Категория: Компьютерное

Мой сайт является некоммерческим проектом. Если материалы, которые я публикую, вам помогли, возможно вы сможете помочь мне, совершив добровольное пожертвование через форму ниже:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Ваш комментарий будет опубликован после автоматической проверки системой фильтрации спама и гадостей.

Автор статей и фото: Sandy Programmer Условия использования моих статей и фотографий: читать
This site uses icons made by Freepik from flaticon.com is licensed under CC BY 3.0 Also uses Fotorama from Fotorama.io