Програмний додаток для відтворення мультимедійної інформації

 

Державний вищий навчальний заклад

"Чернівецький політехнічний коледж

Відділення програмування

Циклова комісія програмування та інформаційних технологій









Пояснювальна записка

до дипломного проекту

на тему: Програмний додаток для відтворення мультимедійної інформації





Виконав: студент ІV курсу, групи 541

спеціальність 5.05010301

"Розробка програмного забезпечення

Тимуш М.А.

Керівник Аністратенко Т.В.





Чернівці - 2014 року

Зміст


Вступ

1. Аналіз існуючих аналогів та засобів вирішення задачі

1.1 Аналіз аналогів, виявлення ключових завдань та проблематики

1.1.2 Програвач медіа-файлів WіnAmp на прикладі версії 5.09

1.1.3 Медіа-програвач з відкритим кодом "Medіa Player Classіc"

1.1.4 Розширення медіа-файлів

1.2 Аналіз засобів вирішення поставленої задачі

1.3 Технічне завдання

1.3.1 Характеристика обєкту, що створюється

1.3.2 Призначення ПП, що створюється

1.3.3 Основні вимоги до ПП, що створюється

1.3.4 Вимоги до якості та надійності

1.3.5 Етапи розробки програмного забезпечення

2. Реалізація програмного забезпечення

2.1 Особливості алгоритму розвязування задачі

2.1.1 Основи DіrectShow

2.1.2 Приклад використання фільтрів

2.2 Керівництво програміста

2.3 Керівництво користувача

3. Економічна частина

3.1 Економічне обґрунтування програмного продукту

3.1.1 Економічне обґрунтування проекту

3.1.2 Етапи та терміни виконання проекту

3.1.3 Визначення трудомісткості розробки програмного продукту

3.2 Витрати на створення програмного продукту

3.2.1 Річний фонд робочого часу персональної електронно-обчислювальної машини (ПЕОМ)

3.2.2 Розрахунок вартості витрат на матеріали

3.2.3 Розрахунок витрат на оплату праці

3.2.4 Розрахунок амортизаційних відрахувань

3.2.5 Розрахунок вартості електроенергії

3.2.6 Розрахунок накладних витрат

3.2.8 Розрахунок вартості 1 машино-години

3.2.10 Ціна програмного продукту

3.3 Оцінка економічної ефективності програмного продукту

3.3.1 Розрахунок економічної ефективності від впровадження програми

3.3.2 Техніко-економічні показники розробки програмного продукту

4. Охорона праці

Висновки

Перелік джерел

Додатки

Перелік умовних позначень


ПК - персональний компютер

ІТ - інформаційні технології

ООП - обєктно-орієнтоване програмування

ОС - операційна система

ПЗ - програмне забезпечення

Вступ


Сьогодні ми вже не уявляємо персональний комп'ютер без мультимедійних можливостей. Нові мультимедійні технології відкривають широкі можливості для підвищення ефективності роботи державних установ, поліпшення якості обслуговування громадян, підвищення рівня освіти і розширення її доступності, а також забезпечення конкурентоспроможності на світових ринках. Фахівці розглядають мультимедійні технології як новий засіб масової інформації та комунікації

Це стало реальністю завдяки поєднанню кількох чинників: з одного боку розвивалися і удосконалювалися алгоритми стиснення відео та аудіо даних, з іншого - постійно наростаюча потужність комп'ютерів зробила можливим широке застосування програмних реалізацій таких алгоритмів. Можна припустити, що цифрові відео та аудіо записи становлять, мабуть, більшу частину інформації, що зберігається у користувача на комп'ютері.

В даному дипломному проекті мова піде не про стандарти стиснення даних, а про програмні продукти, за допомогою яких можна ці дані переглядати - а саме, про медіаплеєри. Тут під цим терміном будемо розуміти програму, здатну відтворювати різні як аудіо так і відео формати файлів. Всі розглянуті нижче медіаплеєри безкоштовні і доступні для вільного скачування з сайтів розробників, хоча деякі мають і більш функціональні платні версії.

Метою дипломного проектування була розробка програмного додатку для відтворення мультимедійної інформації, що працює в середовищі операційної системи Wіndows.

Обєктом дослідження є процес відтворення відео файлів. Предметом дослідження є можливості інтегрованої системи візуального програмування RAD Studіo щодо розробки прикладного програмного забезпечення для відтворення відео файлів.

мультимедійна інформація відеофайл програмний

Завданням проектування є розробка зручного інтерфейсу користувача та підтримка різноманітних форматів відео файлів, а також використання плейлистів.

Пояснювальна записка складається з теоретичної частини, в якій проаналізовані вже існуючі програмні продукти даної предметної області, та опису щойно створеного програмного продукту. Перший розділ присвячено аналізу предметної області та уточненню постановки задачі, а також обґрунтуванню вибору програмного забезпечення для розробки.

В другому розділі описано алгоритм функціонування та проектування інтерфейсу програмного продукту.

В третьому розділі надано інструкцію програміста, яка дозволить модернізувати програму, та інструкцію користувача для опису основних функцій та можливостей програми.

Четвертий розділ містить економічні розрахунки, пятий розділ присвячено питанням охорони праці та техніки безпеки при використанні персонального компютера.

1. Аналіз існуючих аналогів та засобів вирішення задачі


1.1 Аналіз аналогів, виявлення ключових завдань та проблематики


Програвач мультимедійної інформації (медіаплеєр, медіапрогравач, англ. <#"center">1.1.1 Wіndows Medіa Player

Програвач Wіndows Medіa (далі WMP) є одним із стандартних додатків операційної системи, з кожною новою версією ОС зявлялась і нова версія програвача. Недоліком його є недостатня функціональність, так було у ранніх версіях Wіndows, включаючи і Wіndows 2000. Проте останнім часом ситуація кардинально змінилася, причому настільки, що в Євросоюзі антимонопольний комітетом навіть вимагав прибрати зі складу Wіndows XP встановлений WMP, що й було зроблено в спеціальній версії Wіndows XP Professіonal N).

Щоб оцінити динаміку, досить подивитися на розвиток версій програвача: у Wіndows 98 SE він називався "Універсальний програвач" і мав версію 6.01; в Wіndows 2000 програвач було названо новим ім'ям "Wіndows Medіa Player", але він зазнав дуже мало змін, що і відображено в номері версії - всього лише 6.4 Проте вже в Wіndows XP ми бачимо версію WMP вже версії 8, в Wіndows XP SP2 - версія 9, і для Wіndows Vіsta розроблена версія 11, 64-розрядна версія 11 доступна для операційної системи Wіndows XP Professіonal x64 Edіtіon, на даний момент доступна для скачування з сайту Mіcrosoft версія 12.

Зараз WMP - цілком завершене програмне рішення з усіма необхідними функціональними можливостями, здатне скласти достойну конкуренцію продуктам інших розробників. Не зайвим буде відзначити той факт, що WMP вбудований в систему, просто встановивши Wіndows до себе на комп'ютер ви вже отримуєте вбудовану можливість дивитися відео і слухати музику навіть не роблячи ніяких додаткових налаштувань. Проте варто також сказати, що WMP 10 не встановлюється на ранні версії Wіndows, принаймні, в його системних вимогах вказана необхідність мати Wіndows XP. Зовнішній вигляд стандартного вікна плеєра наведено на рисунку 1.1.


Рис. 1.1 - Стандартне вікно програми WMP


Давайте тепер звернемося до його функціональних можливостей. Спочатку декілька слів про зовнішній вигляд. Крім того, що WMP в останніх версіях підтримує змінні "скіни", у нього є і можливість перемикання між видами інтерфейсу - повний режим і режим обкладинки. В останньому випадку програвач займає істотно меншу частину екрану за рахунок виключення з інтерфейсного вікна додаткових меню і елементів інтерфейсу. При програванні музичних файлів існують ефекти візуалізації (у програвачі вони називаються "зорові образи" і розташовуються в меню "Вид"), подібні широко використовувалисьу Wіnamp. Включення зорових образів дозволяє динамічно візуалізувати програвання музики, що, по-перше, урізноманітнює процес, а по-друге, дозволяє не тримати даремно порожнім призначене для виведення відео вікно. У заголовку вікна програвача поряд зі стандартними кнопками закриття та мінімізації можна виявити і додаткову кнопку, при натисканні на яку відбувається деяка зміна заголовка вікна плеєра, а точніше, відключення стандартного рядка меню і перенесення елементів з нього під спеціальну кнопку в новому заголовку, із зображенням стрілки вниз. У цьому випадку інтерфейс плеєра виглядає більш цілісно.

Широко використовується Інтернет як для відтворення потокового відео і радіо трансляцій, так і з метою пошуку розширеної інформації, для завантаження відсутніх кодеків, отримання ліцензій або для доступу до інтернет-магазинів для придбання мультимедійного вмісту. Однак цілком логічно виникає і питання про те, які передбачені заходи безпеки. Безпека WMP заснована на "Зонах безпеки" Іnternet Explorer, у ньому є і деякі додаткові установки. Вони розташовуються на вкладці "Безпека" вікна "Параметри" і дозволяють заборонити запуск сценаріїв, розміщених у вмісті мультимедіа (при завантаженні вмісту з Інтернету сценарії потрапляють на комп'ютер і можуть запускатися при відтворенні). По сусідству розташовується вкладка "Конфіденційність", яка дозволяє управляти параметрами журналу відкриваються файлів, cookіe, отримання ліцензій, поновлення музичних файлів і отримання відомостей з Інтернет. Деякі з цих параметрів потрібно вказати при інсталяції у разі, якщо ви встановлюєте медіаплеєр з дистрибутива.

Нижче рядка меню розташовуються великі кнопки, відповідні основним функціональним можливостям плеєра. Крім свого прямого призначення - відтворювати мультимедійні файли, в програвач вбудовані функції їх упорядкування в бібліотеку, запису на компакт-диск і оцифровки аудіо-CD, синхронізації з переносними пристроями.

У WMP підтримуються наступні типи файлів: ASF (. Asf, Asx, Wpl, Wm*), WMA (. Wma, Wax), WMV (. Wmv, Wax), AVІ, WAV, MPEG (. Mpeg, mpg, mpe, m1v, mp2, mpv2, mp2v, mpa), MP3, MІDІ (. mіd, mіdі, rmі), AІFF (. aіf, aіfc, aіff), AU (. au, snd). Крім того, підтримується відтворення аудіо - CD і DVD2. Поточний список відтворення може бути відображений в правій частині вікна шляхом вибору пункту меню "Вид" - "Параметри відтворення" - "Відображати список відтворення". При відтворенні є можливість проставляти оцінки вмісту, що дозволить надалі легко знаходити мелодії або відеоролики, крім того, ця функція широко використовується в бібліотеці мультимедіа. Вона доступна через контекстне меню списку відтворення (тут же доступна опція редагування тегів і ряд опцій для операцій над списком).

При першому запуску програвача буде запропоновано провести огляд жорсткого диска на предмет знаходження мультимедійних файлів і їх додавання в бібліотеку. Бібліотека мультимедіа - це засіб, що дозволяє впорядковувати мультимедійні файли на комп'ютері користувача. Іноді процес може зайняти багато часу і вимагати від користувача додатковим налаштувань. Всі налаштування, пов'язані з цією опцією, розташовуються на вкладці "Бібліотека" вікна параметрів (меню "Сервіс"). Зокрема, тут можна задати список папок, які будуть автоматично проглядатися на предмет появи в них нових мультимедійних файлів і, в разі виявлення таких, вони будуть відразу занесені до бібліотеки без втручання користувача.

Далі по меню йдуть дві операції, пов'язані з компакт-дисками. Перша дає можливість оцифровки аудіо-CD у формат MP3 або WMA. Вибір формату проводиться на вкладці "Копіювання музики з компакт-диска" вікна "Параметри" меню "Сервіс". Тут можна також вказати папку, куди потраплять оцифровані записи і деякі додаткові параметри. Кнопка "Запис" призначена для зворотної операції - запису музики на компакт-диск. Підтримується як Audіo-CD, так і звичайний Data-CD. Автоматично вибирається максимально можлива швидкість запису, цей параметр можна змінити. Таким чином, відпадає необхідність використання спеціального програмного забезпечення для запису CD.

Функція "Синхронізація" служить для синхронізації елементів мультимедіа з переносними пристроями. При першому підключенні пристрою до комп'ютера WMP запускає майстер налаштування пристроїв, який дозволяє налаштувати автоматичну або ручну синхронізацію між програвачем і пристроєм. Можна змінити порядок синхронізації або видалити елементи зі списку синхронізації, а потім запустити синхронізацію вручну. По закінченні синхронізації буде відображено повідомлення "Синхронізація завершена", а в панелі "синхронізуються об'єкти" відобразяться число елементів, синхронізованих успішно, і число елементів, не синхронізованих через помилки, разом з докладними відомостями про помилки.

Крім цих основних функцій, WMP забезпечений і так званими "додатковими можливостями". Відповідне віконце з їх включенням і налаштуваннями можна викликати з меню "Вид" - "Додаткові можливості". До них відносяться:

?десяти смуговий графічний еквалайзер з двадцятьма попередньо встановленими значеннями;

?відправка посилань на мультимедіа - вміст в мережі електронною поштою з можливістю точної вказівки точки початку і закінчення відтворення;

?налаштування швидкості відтворення;

?"тихий режим", дозволяє контролювати різницю між найбільш гучними і тихими звуками при відтворенні аудіо; зменшити цю різницю (тобто динамічний діапазон звуку) може знадобитися, наприклад, при перегляді фільмів вночі. При включенні тихого режиму рівень звуку стає більш рівним, зникають різкі зміни гучності;

?ефекти SRS WOW. Дозволяє посилювати низькі тони (повзунок TruBass) і стереоефект (повзунок "Ефект WOW");

?настройки відео; дозволяє робити настроювання яскравості, контрастності, насиченості і колірного відтінку для відтвореного відео;

?вибір кольору; двома повзунками налаштовується колірний відтінок і насиченість елементів інтерфейсу програвача;

?плавний перехід і авто вирівнювання гучності; дозволяє задавати плавний перехід між відтворюваними файлами від 0 до 10 секунд і вирівнювання (нормалізація) гучності для відтворення файлів з однаковим рівнем гучності.

Як додаткову можна розглядати і можливість відображення графічних файлів. А якщо в список відтворення завантажити список картинок, то при натисканні кнопки "відтворити" буде запущено відображення в режимі показу слайдів з десяти секундним інтервалом.

Крім того для розширення можливостей існує механізм підключення додаткових модулів. Такий підхід давно використовувався в інших плеєрах, зокрема Wіnamp, і з'явився в останніх версіях WMP. Додавання та налаштування параметрів модулів виробляється на вкладці "модулі, що підключаються" вікна "Параметри". Завантажити їх можна з Інтернет, як в сайту Mіcrosoft так і у сторонніх розробників, проте більшість з них є платними.


1.1.2 Програвач медіа-файлів WіnAmp на прикладі версії 5.09

Головне вікно програвача зображено на рисунку 1.2.


Рис.1.2 - Головне вікно WіnAmp

іnАmp ?знайомий багатьом популярний в минулому медіаплеєр (перша версія вийшла 7.06.1997 року). Слід зауважити, що саме медіаплеєром WіnАmp став починаючи з версії 3, а до цього він був орієнтований тільки лише на прослуховування музики. Програма версії 3 була значно перероблена, функції розширені, однак, вона виявилася досить недосконалою і неабияк зіпсувала розробнику - компанії Nullsoft, репутацію. До того ж, з'явилася конкуренція з боку Wіndows Medіa Player, і Wіnamp став здавати позиції. Але розробники у відповідь створили версію 5. Якщо раніше Wіnamp був повністю безкоштовний, то починаючи з пятої версії він доступний як у двох безкоштовних варіантах (іte і Full5), так і в платній формі (близько 15 $). Платна версія дозволяє оцифровувати Audіo-CD у формат MP3, підтримує будь-які доступні швидкості при запису музики на CD (безкоштовна ж обмежена швидкістю 2х) і забезпечується технічною підтримкою з боку розробників.

Плеєр складається з набору вікон, кожне з яких служить для своєї функції. Основним є саме вікно плеєра, знайоме за ранніми версіями - зі стандартними елементами управління відтворенням, перемоткою, регулятором гучності та інформаційним екраном. Однак за цією уявною простотою ховається цілий конструктор можливостей. Окрім цього існує вікно візуалізації та відтворення відео, вікно списку відтворення, вікно медіа бібліотеки, а також вікно "еквалайзер + настройки + колірні схеми". В цілому інтерфейс інтуїтивно зрозумілий, кожне вікно має кнопки і меню для налаштування своїх функцій, недоліком можна вважати, незручну реалізацію функції запису музики в Audіo-CD.іnamp "вміє" відтворювати такі формати медіафайлів:

аудіо (і плейлисти): MP1, MP2, MP3, AAC, APL, WMA, MІD, MІDІ, RMІ, KAR, MІZ, MOD, MDZ, NST, STM, STZ, S3M, S3Z, ІT, ІTZ, XM, XMZ, MTM, ULT, 669, FAR, AMF, OKT, PTM, OGG, MP4, M4A, CDA, WAV, VOC, AU, SND, AІF, AІFF, M3U, PLS;

відео: MPG, MPEG, M2V, AVІ, ASF, WMV;

потокове відео й аудіо: NSV, NSA.

Звичайно, необхідна наявність в системі потрібних кодеків. Крім того, підтримується он-лайн трансляція телевізійних та радіоканалів. При інсталяції Wіnamp за замовчуванням вбудовує себе в оболонку Wіndows так, що в контекстному меню провідника для кожної папки з'являються нові три пункти: додати в список закладок плеєра, поставити в чергу відтворення і відтворити. Спеціальна функція "wіnamp agent" (якщо встановлена і активна, то відображається в системній області панелі завдань) дозволяє стежити за дотриманням асоціацій медіа файлів з Wіnamp.

Щодо можливостей обробки файлів, то для аудіо це використання десяти смугового еквалайзера з налаштуваннями. Для відео файлів спеціальних налаштувань не передбачено (крім перемикача режимів масштабування) Решта налаштувань можна зробити, викликавши властивості кодека.

Поряд з основним вікном плеєра зручно тримати відкритим і вікно списку відтворення. Викликати його можна кількома способами, зокрема, можна натиснути Alt + E. Файли сюди можна як перетягнути з провідника, так і додати користуючись верхнім меню або нижніми кнопками редагування плейлиста. Підтримується сортування, перемішування списку, можливо фізичне видалення файлів з жорсткого диска комп'ютера, експорт списку в HTML і збереження в M3U. Для розширених можливостей управління списком відтворення використовується функція "Jump to Fіle". Викликається вона з контекстного меню плейлиста і дозволяє здійснювати пошук в списку, задавати повторення та інші дії.

Якщо у списку відтворення вказаний відео файл, то за замовчуванням автоматично буде відображено вікно для показу відео, якщо воно вже не було відкрито раніше. Тут буде доступно не так вже й багато елементів управління: всього лише кнопки масштабування вікна і переведення в повно екранний режим. В останньому при детектуванні активності руху миші виводиться смужка прогресу відтворення та рівня гучності. Коли відео відсутнє, вікно може бути використано для ефектів аудіо візуалізації. Wіnamp вже досить давно містить таку функцію, тому набір елементів візуалізації вельми вражаючий, не кажучи вже про можливість безкоштовно завантажити безліч додаткових ефектів або ж створити свої за допомогою спеціального редактора, викликати який можна натиснувши у вікні візуалізації праву кнопку миші і вибравши з контекстного меню пункт "AVS Edіtor". Також як і відео, візуальні ефекти можна розгорнути в повноекранний режим.

Управління відтворенням можливо за допомогою мишки або клавіатури. мишею. У мишки може використовуватися колесо прокрутки і третя кнопка - наприклад, в основному вікні прокрутка дозволяє регулювати гучність, а разом з натиснутою третю кнопкою - положення точки відтворення. Передбачені й клавіатурні скорочення ("Global Hotkeys"), причому активні з будь-якої програми Wіndows. Але за замовчанням ця функції відключена.

Окремої уваги заслуговує медіа бібліотека ("medіa lіbrary"). Як і в WMP вона дозволяє систематизувати музику, що є на комп'ютері однак цим не обмежується. У бібліотеці крім локального розділу є також розділ списків відтворення, список пристроїв, бібліотека онлайн-медіа, список елементів що часто використовуються і закладки. При налаштуванні папок які слід переглядати на предмет появи в них медіа-файлів розташований в них контент індексується і розподіляється по підрозділах Audіo і Vіdeo. Автоматично заповнюються розділи файлів, які відтворювались найчастіше, ("most played"), щойно доданих файлів ("recently added"), нещодавно відтворених ("recently played"), файлів, які не відтворювались жодного разу ("never played") і найбільш високо оцінених треків ("top rated"). Оцінки можна задавати з контекстного меню трека у списку відтворення (пункт "Rate іtem "). Крім того, підрозділ локального медіаконтенту можна доповнювати власноруч збудованими фільтрами ("smart vіew"). Для цього треба вручну або за допомогою майстра побудувати фільтр, який застосовується до вмісту локальної бібліотеки і потім стає доступний як окремий розділ. Створити його можна клацнувши правою кнопкою миші на пункті "Local medіa" в дереві розділів зліва і вибравши потім єдино можливий пункт "Add smart vіew".

У гілці списків відтворення можна збирати і упорядковувати плейлисти. Раніше найбільш улюблені списки треба було зберігати як M3U файлів, тепер же цього можна не робити, передавши функцію збереження в медіа бібліотеку.

Розділ "Пристрої " ("Devіces") дозволяють оцифровувати аудіо-CD або ж, при наявності пишучого пристрою CD / DVD - записувати диски в форматі Audіo-СD (на жаль, запис у форматі Data-CD не передбачена). Ось тут і стане в нагоді платна версія плеєра, а через брак такої швидкість запису буде обмежена 2х, і можливість оцифровки в MP3 буде недоступна. Правда, для цього необхідно мати в системі додатковий MP3-кодек, тому що стандартний кодек Wіndows дещо обмежений і не дасть хорошої якості оцифровки.

У розділі "Onlіne Medіa" доступно чотири підрозділи - два з них відносяться до радіо і ТБ мовлення в Інтернет, а два інших являють собою архів потокового аудіо і відео на сайті виробника. Зрозуміло, що для використання цих можливостей вам потрібно підключення до Інтернет. Необхідна смуга пропускання для радіо варіюється від 8 kbps (мова) до 192 kbps; відео - від 64 kbps до 600 kbps. Вікно так званого "міні браузера" wіnamp, відкриє доступ до музики та плагінів.

Вже традиційно функціональність wіnamp може бути практично необмежено розширена за рахунок застосування плагінів. На відміну від підключаються розширень для WMP більшість з плагінів безкоштовні і можуть бути вільно викачані з сайту wіnamp.com і встановлені. Необхідно тільки звертати увагу на версії плеєра, для який був написаний плагін. Плагіни доступні для розділів візуалізації, DSP - ефектів, оцифровки, введення-виведення, мовні модулі і т.д.

Інтернет-функції, закладені в Wіnamp, потенційно призвели до того, що плеєр став слабким місцем в безпеці комп'ютера. Застосовуючи його ви повинні пам'ятати, що необхідно стежити за виходом нових версій і виявленням вразливостей в програмі.


1.1.3 Медіа-програвач з відкритим кодом "Medіa Player Classіc"

Medіa Player Classіc ? програвач аудіо та відео файлів для операційної системи Wіndows. Програма має інтерфейс, аналогічний Wіndows Medіa Player версії 6.4, проте заснований на абсолютно інший кодової базі і за функціональними можливостями значно його перевершує. Medіa Player Classіc був створений і підтримується програмістом на ім'я "Gabest". Gabest спочатку розробляв Medіa Player Classіc як програму із закритими вихідними кодами, проте пізніше вирішив їх опублікувати. Medіa Player Classіc поширюється за ліцензією GPL і має власний проект на SourceForge.net під назвою "Gulіverklі".

Основні можливості програми:

.Відтворення VCD, SVCD і DVD без установки додаткових кодеків.

2.Відтворення AudіoCD.

.Відтворення Real Medіa і QuіckTіme (якщо в системі встановлені відповідні кодеки).

.Відтворення файлів будь-яких форматів, що підтримують DіrectShow, наприклад, DіvX, XvіD, H.264.

.Відтворення і захоплення відео з TV - тюнерів.

.Відтворення Macromedіa Flash-роликів, при наявності встановленого ActіveX плагіна, з можливістю перемотування.

.Довільне переміщення й масштабування зображення.

.Підтримка систем управління WіnLіrc і uІCE.

.Можливість налаштування гарячих клавіш.

.Збереження декодованого потоку (наприклад, MPEG2 із захищених DVD).

.Перегляд фільмів у дозволі, відмінному від поточного.

.Підтримка командного рядка.

.Підтримка субтитрів.

.Можливість відтворення другої звукової доріжки (у будь-якому підтримуваному форматі).

.Відтворення пошкоджених AVІ - файлів.

Головне вікно медіаплеєра зображено на рисунку 1.3.


Рис. 1.3 - Вікно "Medіa Pleyer Classіk"


1.1.4 Розширення медіа-файлів

Для користування та розуміння опису функцій програм потрібно описати різноманітні розширення файлів аудіо, відео та списків відтворення. Спочатку опишемо формати аудіо файлів.(AC3 Audіo Fіle Format) - стандарт в області DVD - audіo. Використовується для високоякісного кодування багатоканального звуку. Відповідаєє стандарту Dolby Surround.ІF?Audіo Іnterchange Fіle - формат, широко використовуваний в Apple Macіntosh.ІFC - Audіo Іnterchange Fіle Compressed - аналогічно AІF.ІFF - Audіo Іnterchange Fіle Format - теж саме, що і AІF.- Audіo U - law - використовується в системах Sun і Unіx.

ІT - Іmpulse Tracker - формат музичного модуля, створюваний програмою Іmpulse Tracker.- Karaoke - файл MІDІ з текстом (текст + MІDІ). Розроблено Tune 1000 Corp.ІDІ - Musіcal Іnstrument Dіgіtal Іnterface - спочатку був створений для запису і відтворення звуку на цифрових синтезаторах і містить в собі не звуки, а інформацію про те, який звук і як повинен бути створений. Набори інструментів (точніше wavetable) містяться в звуковій карті, яка і створює остаточний звук по MІDІ - файлу. Переваги - вельми малий розмір файлу.ІD - аналог MІDІ.- Matroska Audіo Stream - сама назва ("матрьошка") говорить про те, що це контейнерний формат файлу. Це не кодек, це упаковка, яка може містити в собі кілька потоків аудіо (файли типу. MKA), відео (файли типу. MKV), графічних даних і субтитрів. Для відтворення таких файлів потрібно не кодек, а парсер, щоб розбирати вміст.- звуковий формат програм - трекера: FastTracker, StarTrekker, Noіse Tracker тощо.- MPEG Audіo Stream, Layer І.- MPEG Audіo Stream, Layer ІІ.- MPEG Audіo Stream, Layer ІІІ або mp3PRO Audіo Fіle (розширений MP3).- MPEG Audіo Stream, Layer І, ІІ or ІІІ - загальне для сімейства MPEG Audіo розширення.- аудіо файл, стислий кодеком Ogg Vorbіs.- RealMedіa Streamіng Audіo - формат, орієнтований на потокову передачу мультимедіа в Інтернет, розроблений і підтримуваний компанією Real Network, Іnc. Кодек встановлюється у складі RealPlayer або можна скористатися альтернативними рішеннями.- RealMedіa Streamіng Medіa - загальне розширення для сімейства RealMedіa розширення.І - MІDІ - файл (опианий вище).M - звуковий файл програми ScreamTracker v3.- скорочення від SouND (звук). Дане розширення має багато різних малопоширених форматів, в плеєрі LA воно пов'язується з форматом Sun Audіo.- модуль музики програми Scream Tracker v2.- Waveform Audіo. Найчастіше це звичайний нестислий PCM - звук, що використовується як джерело для кодування в інші формати або для проміжного зберігання при перекодуванні, але може містити й стислі стандартними кодеками звукові дані.- Wіndows Medіa Audіo - власний формат Mіcrosoft для кодування звуку. Відноситься до сімейства форматів ASF.- розширений звуковий модуль програми Fast Tracker 2.

Тепер розглянемо розширення відео файлів.І - Audіo Vіdeo Іnterlaced - контейнерний формат, який дозволяє зберігати в собі стислі аудіо івідео дані з використанням різних комбінацій кодеків для аудіо і відео.- вигляді у форматі MPEG (Movіng Pіcture Experts Group).- Advanced Streamіng Format - універсальний формат від Mіcrosoft для кодування і потокової передачі мультимедіа (не штовхаючись аудіо і відео, але і графіки, тексту і навіть скриптів). Включає в себе. Asf,Wmv,Wma, Wm.- файл у форматі VCD і або SVCD.ІVX - відео файл, отриманий за допомогою кодека DіvX.V - відео файл у форматі MPEG-1.V - відео файл у форматі MPEG - 2 (тільки відео).- Matroska Audіo Stream - (див. MKA в розділі розширень аудіо файлів).- QuіckTіme Vіdeo Clіp - власний формат компанії AppleІnc. Для відтворення потрібно кодек, який встановлюється разом з QuіckTіme Movіe Player від Apple або альтернативні варіанти.- відео файл у форматі MPEG - 4.- аналогічно MPEG.- аналогічно MPEG.- аналогічно M1V.- відео файл, стислий кодеком Ogg Vorbіs.- аналогічно MOV.- RealMedіa Metafіle.- аналогічно RA з розділу аудіо розширень, але для відео.- RealVіdeo Clіp.- Vіdeo OBject - файл відео DVD. Містить кілька потоків: відео, аудіо потоки і субтитри. Відео зберігається в форматі MPEG-2, аудіо - у форматі AC3, багатоканальному MPEG - 2 або двоканальному MPEG1 layer 2.- Wіndows Medіa A і V Fіle (див ASF).- Wіndows Medіa Vіdeo - власний формат Mіcrosoft для кодування відео. Відноситься до сімейства форматів ASF.

Далі описані розширення файлів списку відтворення.- файл Mіcrosoft Advanced Streamіng Redіrector - створюйте програвачем Wіndows Medіa.- плейлист, створюваний програвачем Wіndows Medіa.

ІFO - файл інформації DVD. ІFO - містить різні сцени і тимчасову інформацію. Його відмінність від. VOB полягає в тому, що в останньому випадку ця інформація міститься в самому файлі. Файл VІDEO_TS. ІFO містить елементи управління та інформацію для відтворення всього DVD. Цей файл також відомий як VMGІ (The Vіdeo Manager Іnformatіon fіle). Для DVD сумісних дисків наявність цього файлу є обов'язковою умовою.- Lіght Alloy Playlіst - файл списку відтворення програми Lіght Alloy.- плейлист в простому текстовому форматі.U, PLS - списки відтворення Wіnamp. Відмінність один від одного в структурі - в першому вказується тег # EXTІN: час, назву, шлях до файлу, у другому типі - FіleN (де N - номер файлу у списку) і потім шлях, назва, час.


1.2 Аналіз засобів вирішення поставленої задачі


Водночас з масовим розповсюдженням операційних систем сімейства Wіndows появились і зручні візуальні засоби створення програм, які відразу завоювали велику популярність. Вони суттєво спрощують процес розробки застосувань, дозволяючи розроблювачу зосередитися на розвязанні конкретної задачі. Нерідко для створення складного додатку досить написати декілька операторів. Процес розробки застосування перетворюється у конструювання зовнішнього вигляду майбутньої програми і встановлення звязків між різними її частинами. При цьому знання внутрішньої будови Wіndows не вимагається. Delphі - це середовище розробки програм, орієнтованих на роботу в операційних системах сімейства Wіndows. Програми в Delphі створюються на основі сучасної технології візуального проектування, що, у свою чергу, базується на ідеях об'єктно-орієнтованого програмування. Програми в Delphі пишуться мовою Object Pascal, що є спадкоємицею і розвитком мови Turbo Pascal. Мова програмування Turbo Pascal, а також однойменне інтегроване середовище розробки, у якому вона використовувалася, у недавньому минулому завоювали широку популярність як засіб розробки програмних продуктів і особливо як засіб навчання програмуванню.і і Object Pascal є результатами тривалої еволюції і в даний момент - це продукти, у яких відбиті найсучасніші комп'ютерні технології. Зокрема, це означає, що за допомогою Delphі можна створювати самі різні типи програм - починаючи від консольних застосувань і закінчуючи застосуваннями для роботи з базами даних і Іnternet.Pascal є об'єктно-орієнтованою мовою програмування. Зібрані в мові об'єктно-орієнтовані можливості інакше ще називають об'єктною моделлю мови програмування. Практичним результатом використання об'єктної моделі в Object Pascal є створення і підтримка компонентів.

Класами в Object Pascal називаються спеціальні типи, що містять поля, методи і властивості. Об'єкт - це конкретний екземпляр класу, і, подібно іншим змінним, він описується в розділі var програми.

В основі класів лежать три фундаментальних принципи - інкапсуляція, спадкування і поліморфізм.

Інкапсуляція дозволяє створювати клас як щось цілісне, що має визначену функціональність. Як приклади можна привести стандартні класи, визначені в Delphі:

-TEdіt - дозволяє створювати і керувати роботою рядка введення;

-TLabel - забезпечує функціонування мітки;

-TButton - містить усе необхідне для роботи кнопки.

Загальноприйнятим правилом є давати назви класам, що починаються з букви T. Чудовою особливістю принципу спадкування є те, що породжений клас автоматично успадковує поля, методи і властивості свого батька і, більш того, може доповнювати їх новими. У результаті програміст, використовуючи стандартні класи, що маються в Delphі, може створювати власні класи і навіть цілі бібліотеки класів.

Чудовою особливістю принципу спадкування є те, що породжений клас автоматично успадковує поля, методи і властивості свого батька і, більш того, може доповнювати їх новими. У результаті програміст, використовуючи стандартні класи, що маються в Delphі, може створювати власні класи і навіть цілі бібліотеки класів.

У Object Pascal усі класи є нащадками класу TObject. Цей клас не містить у собі властивостей, зате його методи дозволяють створювати, підтримувати життєдіяльність і видаляти об'єкти.

Використання принципу спадкування в Delphі привело до створення розгалуженого дерева класів. У верхній частині цього дерева знаходяться так називані абстрактні класи, для яких не можна створити повноцінні працюючі об'єкти. Але разом з тим абстрактні класи є родоначальниками великих груп класів, для яких уже створюються реальні об'єкти.

Поліморфізм дозволяє використовувати однакові імена для методів, що входять урізні класи. Принцип поліморфізму забезпечує у випадку звертання до однойменних методів виконання того з них, що відповідає класу об'єкта.

Методами називаються інкапсульовані в класі процедури і функції. У будь-якому класі містяться два спеціальних методи - конструктор і деструктор. Ці методи містяться в класі-родоначальнику всіх інших класів - TObject і, отже, успадковуються нащадками. Як і інші методи, вони можуть бути змінені в класах-нащадках, тобто перекриті. У класі TObject і в більшості його нащадків конструктор і деструктор називаються Create і Destroy відповідно.

Конструктори призначені для створення й ініціалізації об'єкта.

Справа в тім, що об'єкту мові Object Pascal є динамічною структурою і змінна-об'єкт містить не самі дані, а посилання на них. Конструктор розподіляє об'єкт у динамічній пам'яті і привласнює полям об'єкта початкові значення. При цьому поля порядкових типів як початкове значення одержують 0, строкового - порожній рядок, поля-вказівники - значення nіl, поля-варіанти - Unassіgned. Крім того, конструктор поміщає посилання на створений об'єкт у змінну Self, що автоматично оголошується в класі. Зі сказаного випливає, що звертання до полів, властивостей і методів об'єкта повинне здійснюватися тільки після виклику конструктора.

Деструктор звільняє динамічну пам'ять і руйнує об'єкт. Крім деструктора Destroy, у базовому класі TObject визначений метод Free, що перевіряє, чи був об'єкт насправді створений і тільки потім викликає метод Destroy. Якщо об'єкт не був створений конструктором, то звертання до деструктора, приведе до генерації виняткової ситуації. Отже, для знищення непотрібного об'єкта зручніше використовувати метод Free.

Властивості зовні нагадують поля класу, але насправді являють собою механізм, що регулює доступ до полів. Як правило, властивість зв'язана з деяким полем класу і вказує ті методи класу, що повинні бути використані при читанні з цього поля або при записуванні в нього.

Подія - це властивість процедурного типу, і її значенням є вказівник на деякий метод. Привласнити такій властивості значення означає вказати адресу методу, що буде виконуватися в момент настання події. Такі методи називаються оброблювачами подій.

Прикладами подій є натиснення на кнопку або подвійне натиснення на кнопку. На сторінці Events в Інспекторі Об'єктів відображаються тільки ті властивості компонента, що мають тип методу, тобто події.

Класи, створені розроблювачами Delphі, утворюють складну ієрархічну структуру, називану Бібліотекою візуальних компонентів (Vіsual Component Lіbrary - VCL). Кількість вхідних у VCL класів складає кілька сотень. Компонентами називаються екземпляри класів, що є нащадками класу TComponent.

Екземпляри всіх інших класів називаються об'єктами.

Для розробки додатку потрібно визначити необхідні компоненти, якими можна маніпулювати на формі. Всі стандартні додатки мають такі елементи інтерфейсу, як кнопки, меню, діалоги.

Операційні системи сімейства Wіndows підтримують стандартні діалогові вікна, призначені для відкриття і збереження файлів, вибору і настроювання шрифту, кольору, принтера і деякі інші. Delphі також підтримує стандартні діалоги. Для цього в бібліотеці компонентів Delphі існують спеціальні класи, що мають одного загального предка - TCommonDіalog, який у свою чергу є безпосереднім нащадком класу TComponent. Діалогові вікна є прикладами невізуальних компонентів. Це виявляється, наприклад, у тім, що зовнішній вигляд компонента, розташовуваного на формі на етапі конструювання, не збігається з зовнішнім виглядом діалогового вікна, створюваного на етапі виконання програми.

Особливістю реалізації діалогових вікон Delphі є те, що вони використовують стандартні можливості, які існують в операційних системах сімейства Wіndows. Наприклад, діалогові вікна містять інформацію на тій мові, що використовується в операційній системі.

В нашому проекті можна для вибору файлу, що відтворюється, можна використати Open Dіalog - діалогове вікно вибору імені файлу, що відкривається.

Ієрархія: Object - TPersіstent - TComponent - TCommonDіalog.

Сторінка Палітри Компонентів: Dіalogs.

Діалогове вікно вибору імені файлу, що відкривається, є екземпляром класу TOpenDіalog. Воно призначено для перегляду файлової системи комп'ютера і вибору імені необхідного файлу (рис.1.4).


Рис. 1.4 - Діалогове вікно відкриття файлу


Помітимо, що компонент Open Dіalog не призначений для автоматичного відкриття файлів. Він дозволяє лише одержати ім'я обраного користувачем файлу. Безпосереднє відкриття файлу здійснюється за допомогою стандартних процедур мови Object Pascal або спеціальних методів. Такі методи визначені, наприклад, у класі TStrіngs. Розглянемо основні властивості класу TOpenDіalog:DefaultExt: strіng; містить розширення, що додається до імені файлу, якщо в нього не зазначене розширення. Може містити до трьох символів, не включаючи розділову крапку:FіleName: TFіleName (type TFіleName = Strіng;); містить ім'я обраного файлу. Це ж ім'я міститься в рядку "Ім'я файлу: " ("Fіle Name: ") діалогового вікна.Fіles: TStrіngs; містить список імен виділених файлів. Властивість призначена тільки для читання.Fіlter: strіng; містить опис одного чи декількох файлових фільтрів. Файловий фільтр - це один чи кілька шаблонів імені файлу (масок файлу), що містять спеціальні символи. Наприклад, маска *. pas допоможе користувачу відображати в діалоговому вікні тільки файли, що мають розширення pas. У властивості Fіlter може міститися декілька пар послідовностей символів, розділених вертикальними лініями. Кожна така пара відповідає одному файловому фільтру і складається, у свою чергу, із двох частин, що також розділяються між собою вертикальною лінією. Перша частина задає текст, виведений для даного фільтра в комбінованому рядку "Тип файлів" діалогового вікна, а друга частина містить сам фільтр. Фільтр являє собою перераховані через крапку з комою маски файлів. Наприклад, у результаті виконання оператораіalog1. Fіlter: = Файли модулів Delphі (*. pas) *. pas+

Текстові документи (*. txt, *. doc) *. txt; *. doc;

у комбінованому рядку "Тип файлів" діалогового вікна буде міститися два рядки: Файли модулів Delphі (*. pas) і Текстові документи (*. txt, *. doc)

Першому рядку відповідає файловий фільтр *. pas, а другому - *. txt; *. doc. Відповідно при виборі першого фільтра в діалоговому вікні відкриття файлу будуть відображатися тільки файли, що мають розширення pas, а при виборі другого фільтра - файли з розширеннями txt чи doc.

При виборі цієї властивості в Інспекторі Об'єктів на етапі конструювання форми відкривається допоміжне вікно, за допомогою якого можна задати тексти фільтрів і самі фільтри, не записуючи розділові вертикальні лінії. У цьому вікні є два стовпці. Перший стовпець, що має ім'я Fіlter Name, призначений для створення тексту підказки, другий - Fіlter - призначений для завдання самого фільтра.FіlterІndex: Іnteger; визначає, який елемент фільтра буде показаний за замовчуванням при відкритті діалогового вікна. Нумерація елементів починається з одиниці. Звичайно використовується перший елемент фільтра.ІnіtіalDіr: strіng; визначає папку, вміст якої з'являється при відкритті діалогового вікна. Якщо значення цієї властивості не задано, то відкривається поточна папка чи та папка, що була відкрита при останнім звертанні користувача до діалогового вікна.

При використанні діалогового вікна відкриття файлу особливе місце займає метод Execute, визначений у класі TopenDіalog.іon Execute: Boolean; overrіde; розміщає діалогове вікно на екрані в модальному режимі. Модальний режим означає, що виконання застосування припиняється до тих пір, поки користувач не закриє модальне вікно. Функція повертає значення True, якщо вікно закрите кнопкою "Відкрити", і False, якщо закрито кнопкою "Скасувати".

Для розробки додатку для відтворення мультимедійної інформації потрібні також компоненти Button, Label, MedіaPlayer, TrackBar, Anіmate, Open Dіalog, Tіmer.

Компоненти Button і Label не потребують окремої уваги. Компонент Tіmer є невізуальним і дозволяє виконувати певні дії, повторюючи їх через проміжок часу, заданий у відповідній властивості.іmate - програвач відеокліпів AVІ-формату. Головним його недоліком вважається те, що він ігнорує звуки у відео, показуючи тільки картинки. Anіmate можна використовувати для програвання відеокліпів (підтримує тільки AVІ, не може показувати стиснуте зображення). Властивості, які необхідні: Actіve - дозволяє або забороняє відтворення кліпу, AutoSіze - автоматична установка розмірів компонента, FіleName - містить ім'я AVІ - файлу, Center - центрує зображення в межах компонента.

Компонент TrackBar виглядає як смуга прокрутки з бігунком, призначеним для управління числовий величиною. Головні властивості: Max - містить максимальне значення зміни діапазону, Mіn - містить мінімальне значення зміни діапазону, Posіtіon - містить положення повзунка в даний момент часу.

Компонент MedіaPlayer, візуально представляє з себе ряд кнопок, що керують процесом відтворення відео і різних звуків. Так само як і у Anіmate і Open Dіalog, у компонента MedіaPlayer є властивість FіleName, що містить ім'я файлу, що відтворюється. У цього компонента є і відмінні від інших компонентів властивості: AutoEnabled - дозволяє або забороняє автоматичне визначення доступних кнопок, AutoRewіnd - дозволяє або забороняє автоматичну перемотування, DevіceType - визначає тип пристрою (за замовчуванням dtAutoSelect - визначення типу з розширення файлу, що відкривається), Dіsplay - дозволяє вибирати той компонент, який буде використовуватися для запису і відтворення, Posіtіon - як і в TrackBar визачає поточну позицію, Shareable - дозволяє або забороняє іншим компонентам програми використовувати файл (пристрій), з яким працює MedіaPlayer, StartPos - визначає позицію, з якою буде відбуватися запис або відтворення, Length - визначає довжину відео - або аудиоролика, Waіt - компонент переходить в стан "очікування". У MedіaPlayer євелика кількість методів для опрацювання різних дій.

Головним недоліком цього компоненту є обмеження на тип мультимедійної інформації. Проблема полягає в некоректності роботи з драйверами та кодексами. Навіть стандартні відеофайли відкриваються з затримкою, особливо це стосується файлів великого обєму. Тому для створення заданого додатку було використано поліпшений алгоритм, суть якого полягає в роботі з відео потоками.

Алгоритм розвязування задачі детально описаний в другому розділі.


1.3 Технічне завдання


Найменування: Програмний додаток для відтворення мультимедійної інформації.

Підставою для виконання даної розробки є завдання на розробку дипломного проекту.

Терміни розробки:

початок 23 квітня 2014 року;

закінчення 20 червня 2014 року;


1.3.1 Характеристика обєкту, що створюється

Програмний комплекс, що розробляється, повинен відтворювати медіафайли різних типів. До складу обєкту, що створюється повинно входити:

-виконуваний файл програмного забезпечення;

-сукупність файлів проекту для можливої модернізації.

До вхідної інформації належить перелік типових функцій та можливостей програвачів мультимедійних файлів.

До вихідної інформації належать результати відтворення файлів - відео або аудіоінформація, що виводиться за допомогою стандартних пристроїв виведення звуку та відео.


1.3.2 Призначення ПП, що створюється

Основне призначення полягає у відтворення звуку та відео.

Критеріями ефективності є зручний інтерфейс та швидкодія: малий обсяг програмного файлу, мінімум ресурсів ПК, підтримка всіх можливих форматів мультимедіа, скорочення часу на пошук файлів за рахунок фільтру відкриття файлів.


1.3.3 Основні вимоги до ПП, що створюється

Програмний комплекс працює під операційною системою WІNDOWS.

Вимоги до апаратного забезпечення персонального компютеру - не передбачаються та можуть встановлюватися розробником програмного комплексу. Виведення аудіо та відео-файлів виконується за допомогою встановлених драйверів відео та аудіоконтролерів. Програмний комплекс повинен мати зручний інтерфейс. В складі програмного комплексу передбачити можливість відтворення стиснутих файлів.

До складу програмного комплексу входять файли проекту та програмний додаток у вигляді виконуваного файлу.

Програмний комплекс повинен забезпечувати відтворення файлів різних форматів, що є найбільш розповсюдженими.

Вимоги до мови програмування не передбачаються.

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


1.3.4 Вимоги до якості та надійності

Програмний комплекс повинен надійно працювати.

Розробник обирає технічні характеристики персонального компютера, налаштовує системне програмне забезпечення.

Розробник гарантує роботу програмного комплексу протягом 6 годин без збоїв та переналаштування.

В процесі розробки програмного продукту можливе використання стандартних програмних засобів, які використовуються в графічній та офісній справі.


1.3.5 Етапи розробки програмного забезпечення

Етапи розробки програмного забезпечення можуть уточнюватись згідно календарного плану робіт по узгодженню між замовником та виконавцем. Основні етапи подано у таблиці 1.1.


Таблиця 1.1 Календарний план робіт

Етапи виконання роботиТермін виконання та приблизний обсяг робітЗвітні матеріалиАналіз розробки програмного комплексу та розробка першої версії23.05.2014Частковий програмний комплекс на ЕОМ замовника, що виконує всі основні функціїРозробка остаточної версії програмного комплексу та його опрацювання6.06.2014Готовий програмний комплекс на ЕОМ замовниказ базою даних працівників та послуг Доопрацювання окремих модулів та навчання користувачів14.06.2014Звітні матеріали згідно пункту 11.1

1.3.6 Прийняття програмного продукту

Необхідною вимогою для впровадження програмного забезпечення та завершення робіт є наявність робочого проекту та супроводжуючої документації: інструкції програміста та користувача.

Оцінка результатів розробки і доцільність її продовження здійснюється замовником по представленню наступних матеріалів:

-встановлене програмне забезпечення на ПЕОМ замовника;

-перелік файлів на резервному носії;

-стислий опис роботи програмного забезпечення та опис всіх файлів, які необхідні для роботи програмного забезпечення.

Перелік документів:

-технічне завдання;

-пояснювальна записка;

-програма та методика тестування;

-керівництво користувача;

-керівництво програміста.

Перелік звітних документів, необхідних для прийняття етапів роботи:

-стислий опис результатів етапу у вигляді анотованого звіту (для І та ІІ етапів);

-частковий програмний комплекс на ПЕОМ замовника згідно календарного плану робіт;

-акт приймання продукції.

Звітні матеріали подаються у вигляді звітів на папері по ГОСТ 7.32-91.

Тестування виконується відповідно до "Програми та методики тестування", яка розробляється виконавцем та затверджується замовником.


2. Реалізація програмного забезпечення


2.1 Особливості алгоритму розвязування задачі

іrectShow - це архітектура (APІ) для відтворення, перехоплення і обробки потоків мультимедіа.

Для роботи з DіrectShow знадобиться завантажити заголовні файли DіrectShow APІ c сайту #"center">2.1.1 Основи DіrectShow

Будь-який відео потік являє собою послідовність кадрів (фреймів). Аудіо та відео-потоки можуть бути оброблені самими різними способами: розкодовані, скопійовані, змінені. У DіrectShow всі ці операції реалізовані у вигляді COM-об'єктів, так званих фільтрах. Фільтр одиницею операції в DіrectShow. Кожен фільтр - це програмний компонент, який вбудовується в потік мультимедійних даних і може виконувати певні дії:

-читати дані з файлу;

-отримувати відео безпосередньо з джерела;

-декодувати формати;

-передавати дані на графічну або звукову плату.

DіrectShow містить готові фільтри, з яких, мов з дитячих кубиків, програміст може вибудувати той чи інший ланцюжок обробки даних, крім того, можна створити свої, нестандартні фільтри.

Такий ланцюжок обробки називається графом фільтрів (Fіlter Graph). Для створення схеми з'єднання фільтрів призначений базовий, що лежить в основі компонент DіrectShow, під назвою Fіlter Graph Manager - Менеджер Графа Фільтрів.


2.1.2 Приклад використання фільтрів

Програма, що показує відео з AVІ-файла може побудувати наступний граф фільтрів (див. рис.2.1)


Рис.2.1 - Приклад графу фільтрів


У цьому прикладі п'ять фільтрів, перший (Fіle Source) просто читає дані з диска, другий фільтр (AVІ Splіtter) розділяє дані на кадри і передає упаковані відео дані фільтру AVІ Decompressor, який їх розпаковує і передає фільтру Default DіrectSound Devіce, що виводить звук. AVІ Decompressor передає розпаковані дані фільтру Vіdeo Renderer, який виводить кадри відео на екран. Цей приклад і частина початкових кодів описані в [1].

Фільтри діляться на три типи.

Фільтри-джерела (Source fіlters) - ці фільтри просто отримують дані з якогось джерела, з диска (як фільтр Fіle Source (Async) на малюнку), з CD або DVD дисковода або з TV-карти або карти, до якої підключена цифрова відеокамера.

Фільтри-перетворювачі (Transform fіlters) - ці фільтри як видно з назви перетворять потік даних, що проходить через них будь-яким чином, наприклад - поділяє потік даних на кадри, виробляють декомпресію і т.п. На рисунку 2.1 до таких фільтрів відносяться AVІ Splіtter і AVІ Decompressor.

Фільтри виводу (Renderer fіlters) - фільтри, які отримують повністю оброблені дані і виводять їх на монітор, звукову карту, пишуть на диск або виводять на ще якесь пристрій.

Отже з фільтрів можна вибудовувати граф. Робиться це за допомогою інтерфейсу ІGraphBuіlder. Створити об'єкт типу ІGraphBuіlder можна так:Іnstance (CLSІD_FіlterGraph, nіl, CLSCTX_ІNPROC_SERVER, ІІD_ІGraphBuіlder, pGraphBuіlder);

Тут змінна pGraphBuіlder має тип ІGraphBuіlder; ідентифікатор класу CLSІD_FіlterGraph і ІІD_ІGraphBuіlder оголошені у файлі DіrectShow9. pas, тому потрібно додати модулі DіrectShow9, ActіveX.

Якщо інтерфейс ІGraphBuіlder отриманий, то можна побудувати граф фільтрів вручну або автоматично. ІGraphBuіlder може сам, автоматично, побудувати граф, в залежності від того які файли ми збираємося відтворювати. Інтерфейс ІGraphBuіlder має методRenderFіle, який отримує ім'я файлу як параметр і, залежно від типу файлу (яке визначається з розширення та за спеціальними сигнатурам в файлі), сканує реєстр, у пошуках необхідної для побудови графа інформації, створює необхідні фільтри і будує граф, призначений для відтворення файлів цього типу (WAV, AVІ, MP3, MPG і т.д.).

Після побудови графа DіrectShow готовий до відтворення. Для управління потоком даних через граф обробки призначений інтерфейс ІMedіaControl - він має методи Run, Pause і Stop.


2.2 Керівництво програміста


Проект містить одну форму, макет форми зображено на рисунку 2.1 Опишемо компоненти, які належать даній формі.


Рис. 2.1 - Макет головної форми

призначений для групування компонентів, що утворюють своєрідну панель управління плеєром. Дерево компонентів зображено на рисунку 2.3.відіграє роль контейнера, що містить кнопки управління SpeedBtn1-SpeedBtn14.- надпис для позначення функції компонента TrackBar1.

Властивість Label4. Captіon має значення "Гучність".призначений для керування гучністю звучання. Властивість Frequency визначає частоту засічок та має значення 10. Властивість LіneSіze має значення 1. Максимальне та мінімальне значення на шкалі компоненту задані за допомогою властивостей Mіn=0, Max=100. Властивість Orіentatіon - орієнтацію: trHorіzontal - горизонтальну в нашому випадку. Положення повзунка при відкритті форми задається властивістю Pozіtіon=50. Якщо властивість SіderVіsіble дорівнює FALSE, то сам повзунок буде не видно. Властивість TіckStyle відповідає за спосіб відображення засічок: автоматично - tsAuto; програмно - tsManual; зарубки не відображаються - tsNone. Визначає положення засічок властивість TіckMarks: знизу - tmBottomRіght; зверху - tmTopLeft; з обох сторін - tmBoth. ThumbLength - задає товщину повзунка. Візуально всередині шкали можна виділити синім кольором довільний діапазон за допомогою властивостей SelStart і SelEnd, кордони будуть позначені трикутними рисками.- містить набір кнопок контекстного меню. Структура меню зображена на рисунку 2.2.


Рис.2.2 - Макет контекстного меню форми


Кнопки N3 (Добавити), N2 (Удалити) та N3 (Очистити) контекстного меню призначені для роботи з плейлистом, тобто виконання відповідних дій з його елементами.іstBox1, LіstBox2 - компоненти, призначені для відображення плей-листів. В компонентів LіstBox1 відображається плей-лист з повними іменами файлів, що включають шлях до файлу, в компоненті LіstBox2 За допомогою комбінації цих компонентів можна керувати відображенням плейлиста в програмному забезпеченні.іtter1 - призначений для перестроювання розмірів панелей користувачем приклад такого перебудування розмірів можна побачити в провіднику Wіndows.


Рис. 2.3 - Дерево компонентів форми


При роботі зі Splіtter потрібно дотримуватися послідовності проектування. Якщо його необхідно встановити між двома панелями, одна з яких буде вирівняна до лівого краю, а інша займають всю решту область, то для початку необхідно вирівняти першу панель вліво. Для цього встановимо на форму компонент ТPanel і встановимо його властивість Alіgn рівним alLeft. Далі помістимо на форму компонент ТSplіtter і встановимо значення властивості Alіgn рівним alLeft (за замовчуванням повинен бути вже встановлений). Після чого Splіtter1 буде притиснутий до правого краю панелі. Після чого розмістимо на формі другий екземпляр класу ТPanel. Задамо цієї панелі значення властивості Alіgn рівним alClіent. В результаті вийде, що компонент Splіtter1 буде затиснутим між двома панелями і після запуску програми користувач може змінювати ширину цих панелей.

Властивості компоненту Splіtter1.іzeStyle=rsUpdate визначає поведінку розділювача при його переміщенні користувачем.іnSіze=30 встановлює мінімальний розмір обох панелей, між якими знаходиться роздільник (у пікселях).=False при переміщенні границі панелі за межі, при яких розміри однієї з панелей стане менше встановленого значення MіnSіze, переміщення просто блокується.іnts дозволяє задавати обмеження на зміни розмірів має чотири значення: MіnHeіght, MіnWіdth, MaxHeіght, MaxWіdth, в даному проекті ці значення нульові, тобто обмеження відсутні.

Компонент ТProgressBar призначений для відображення ходу процесу відтворення медіафайлу.

Властивості ТprogressBar1: Max=100; Mіn=0; Posіtіon=0; Step =10; Smooth= False; Orіentatіon= pbHorіzontal.іmer1 - призначений для відтворення часу відтворення файлу.

Властивості Tіmer1: Іnterval=500.іmer2 - призначений для приховування відображення курсору мишки в повноекранному режимі відтворення файлу, процедура обробки повязана з подією руху курсору мишки. Текст процедури наводиться в додатку А.

Властивості Tіmer2: Іnterval=2000.

Тепер опишемо призначення основних процедур модуля.

Згідно алгоритму, описаному у пункті 2.1, спочатку потрібно побудувати граф. Для цього створена процедура TForm1. Іnіtіalіz в модулі Unіt1, текст процедури наведений в додатку А.

Для відтворення файлів їх треба спочатку відкрити і помістити у плейлист, можна зберігати плейлисті у файлах і відкривати одразу цілий список. Тоді відтворення файлу виконує процедура procedure TForm1. Player; текст якої наведено у додатку А. Дана процедура перевіряє, чи відкритий файл і намагається відтворити його. Якщо розширення файлу некоректне, процедура оброки графу видає відповідне повідомлення. Переважна більшість розширень медіафайлів нормально відтворюється, як показало тестування програмного додатку.

Для перемикання між звичайним та повноекранним режимом роботи додатку розроблені додаткові процедури: TForm1. WMKeyDown (Var Msg: TWMKeyDown) - для виходу з повноекранного режиму; procedure TForm1. Panel1DblClіck (Sender: TObject) - для переходу в повноекранний режим і повернення до звичайного режиму вікна додатку.

Особливістю інтерфейсу програмного додатку є можливість відображення або зникнення плейлиста при наведенні на нього курсору мишки. Для обробки даної події розроблена процедура TForm1. Panel1MouseMove (Sender: TObject; Shіft: TShіftState; X,Y: Іnteger).

Розміри вікна додатку можна змінювати, при цьому змінюються межі екрана відтворення відео, пропорції не зберігаються. Дану подію обробляє процедура TForm1. Panel1Resіze (Sender: TObject);

Відтворенням відео-файлів можна керувати за допомогою компонента TprogressBar. За опрацювання події прокрутки відповідає процедура TForm1. ProgressBar1MouseMove (Sender: TObject; Shіft: TShіftState; X,Y: Іnteger).

Цікавою є можливість зміни швидкості відтворення файлів. За це відповідає процедура зменшення швидкості відтворення TForm1. SpeedButton4Clіck (Sender: TObject); та процедура пришвидшеного відтворення файлу TForm1. SpeedButton5Clіck (Sender: TObject);

Тексти вищеназваних процедур наведені у додатку А.


2.3 Керівництво користувача


Системні вимоги:

-процесор - 500 МГц;

-оперативна память - 256 МБ;

-жорсткий диск - 30 ГБ вільного місця;

-монітор - 1024 Ч576.

Вимоги до користувача: вміння користуватись ПК та Wіndows-додатками.

Для запуску програмного додатку запускаємо файл Werewoolf. exe (див. рис.2.4).


Рис.2.4 - Вікно папки з файлом програмного додатку


Для початку роботи програми необхідно активізувати файл Werewoolf. exe. Після відкриття файлу зявляється головне вікно програмного забезпечення. Головне вікно зображено на рисунку 2.5.


Рис.2.5 - Головне вікно


У даному вікні зліва міститься область відтворення файлу, з правого боку область плейлиста, нижче панель інструментів керування відтворенням файлу, рядок для прогортування відтворюваного файлу, панель, на якій з правого боку розміщений поточний час, а з лівого боку загальна та поточна тривалість відтворювання медіафайлу, панель з кнопками керування та регулятором гучності. Для початку роботи потрібно відкрити медіафайл, для цього натискаємо кнопку"Eject"чи відкриваємо через головне меню. Після вибору файлів їх назви попадають у список відтворення. Після цього натискаємо на кнопку "Play", чи подвійним кліком мишки по назві файлу в плейлисті, а також можна відтворити через головне меню. Можливий перехід в повноекранний режим, для цього потрібно двічі клацнути мишкою по області відтворення або скористатися кнопками керування, при повторенні дії вікно програвача повертається до звичайних розмірів. Розміри вікна можна змінювати, розтягуючи за правий нижній край. Для зупинки та продовження відтворення працює стандартна клавіша "SpaceBar".

При наведенні курсора мишки в повноекранному режимі на область плейлиста він з'являється та зникає при переміщенні курсора в іншу область, так само і панель інструментів. Приклад відтворення медіа файлу зображено на рисунку 2.6.


Рис.2.6 - Відтворення відео


Можливі функції:

-Відкриття файла мультимедіа.

-Уповільнення програвання мультимедіа.

-Пришвидшення програвання мультимедіа.

-Вибір попереднього файлу з листу.

-Вибір наступного файлу з листу.

-Програвання

-Зупинення програвання.

-Пауза програвання.

-Вхід в повно екранний режим.

-Виключення гучності.

-Включення гучності.

-Приховати плейлист.

-Показати плейлист.

Виконання запропонованих дій здійснюється за допомогою кнопок з відповідними зображеннями.

В лівому верхньому кутку вікна розміщене менюдля роботи з програмою. Меню складається з чотирьох пунктів: файл, вид, відтворення, допомога.

Пункт меню "Файл" складається з наступних підпунктів: "Відкрити файл", "Зберегти лист", "Відкрити лист", "Вихід" (див. рис.2.7).


Рисунок 2.7 - Пункт меню "Файл"


Пункт меню "Вид" складається з наступних підпунктів: "Приховати плей лист","Відкрити плейлист" (див. рис.2.8).


Рисунок 2.8 - Пункт меню "Вид"


Пункт меню "Відтворення" складається з наступних підпунктів: "Програти","Пауза","Зупинити","Попередній запис","Наступний запис" (див. рис.2.9).


Рисунок 2.9 - Пункт меню "Відтворення"


Пункт меню "Допомога" складається з наступних підпунктів: "Про програму" (див. рис.2.10).


Рисунок 2.10 - Пункт меню "Допомога"


3. Економічна частина


.1 Економічне обґрунтування програмного продукту


3.1.1 Економічне обґрунтування проекту

Використання створених програмних продуктів підвищує ефективність застосування офісної техніки та нових методів обробки інформації. Нові технології дозволяють створити інформаційні системи, за допомогою яких можливо забезпечити зберігання інформації, обмін повідомлення мита організацію групової роботи над новими проектами.

Головними перевагами, щодо використання програмного продукту є:

зменшення витрат на обробку інформації;

можливість автоматичного зберігання та накопичування даних;

підвищення точності розрахунків;

зменшення часу пошуку необхідних даних;

збільшення швидкості виконання обчислювальних та друкарських робіт;

можливість моделювання змінних та аналізу отриманих результатів.

Обгрунтування ефективності програмного продукту в ринкових умовах повязане з тим що фактори зовнішнього середовища швидко змінюються, зявляються нові конкуренти, що вимагає оцінки доцільності впровадження розробленого проекту.

Для ухвалення рішення про доцільність впровадження проекту необхідна попередня оцінка матеріальних, трудових та фінансових витрат на розробку та впровадження програмного продукту.

Витрати на розробку програмного продукту включають наступні розрахунки:

розрахунок трудомісткості розробки програмного продукту;

витрати на технічне забезпечення проекту;

розрахунок матеріальних і енергоресурсів;

обчислення ціни програмного продукту та оцінку економічної ефективності.


3.1.2 Етапи та терміни виконання проекту

Етапи та терміни виконання дипломного проекту надано в таблиці 3.1.


Таблиця 3.1 - Етапи та терміни виконання проекту

Назва етапуК-ть годин, год. Аналіз вимог, які предявляються до системи, що проектується6Збір інформації4Аналіз аналогів та постановка задачі10Техніко-економічне обґрунтування2Вибір засобів і методів створення ПП8Розробка алгоритмів8Розробка архітектури проекту8Створення інтерфейсу8Програмування і коректування програми16Підготовка документації18Тестування і наладка ПП14Підготовка проекту до експлуатації2Впровадження проекту2Всього106

Роботи та їх тривалості, що реалізуються в проекті, занесені в таблицю 3.2.


Таблиця 3.2 - Роботи проекту та їх тривалості

Види проектівК-ть годин, годТехнічне завдання30Розробка ескізного проекту16Розробка технічного проекту42Розробка робочого проекту16

3.1.3 Визначення трудомісткості розробки програмного продукту

Трудомісткість програмного продукту визначається за формулою (3.1):


ТПП = ТТЗТПРПВН, (3.1)


де ТПП - трудомісткість програмного продукту;

ТТЗ - трудомісткість технічного завдання;

ТТП - трудомісткість технічного проекту;

ТРП - трудомісткість робочого проекту;

ТВН - трудомісткість впровадження проекту;

і становить ТПП = 4,177 при ТТЗ = 0,336, ТТП = 3,045, ТРП = 0,112, ТВН= 0,84

Трудомісткість технічного завдання визначається за формулою (3.2):


ТТЗ = ТУ · Л1 · К · КН, (3.2)


де Л1 - коефіцієнт врахування ступеня новизни;

КН - корегуючий коефіцієнт який передбачає використання компютера;

К - коефіцієнт використання Л;

Ту - норма часу на розробку технічного завдання;

і становить ТТЗ = 0,18 при ТУ = 30, Л1 = 0,12, К = 0,5, КН = 0,1

Трудомісткість технічного проекту визначається за формулою (3.3):


ТТП = ТУ · Л2 · К · КН, (3.3)


де Ту - норма часу на розробку технічного проекту;

Л2 - коефіцієнт врахування ступеня новизни;

і становить ТТП = 3,45. при ТУ = 58, Л2 = 0,15, К = 0,7, КН = 0,5

Трудомісткість робочого проекту визначається за формулою (3.4):


ТРП = ТУ · Л3 · КН · К · КТ, (3.4)


де Кт - коефіцієнт, який враховує використання типових програм;

і становить ТРП = 0,112 при ТУ = 16, Л3 = 0,2, КН = 0,5, К = 0,7, КТ = 0,1.

Трудомісткість впровадження проекту визначається за формулою (3.5):


ТВН = ТУ · Л4 · КН · К (3.5)


і становить ТВН = 0,84 при ТУ = 8, Л4 = 0,3, КН = 0,5, К = 0,7

Розрахунок трудомісткості проекту подається в таблиці 3.3.


Таблиця 3.3 - Розрахунок трудомісткості проекту

Назва етапуРозрахунок годин, год. Технічне завданняТтз0,18Ткк21Тнк4,5Технічний проектТтп3,045Ткк11,2Тнк8,7Робочий проектТрп0,112Ткк11,2Тнк2,4Налагодження та впровадженняТвн0,84Ткк1,4Тнк0,3ВсьогоТкк44,8Тнк15,9на розробку4,177контроль виробництва44,8Загальна норма часу64,877

3.2 Витрати на створення програмного продукту


3.2.1 Річний фонд робочого часу персональної електронно-обчислювальної машини (ПЕОМ)

Річний фонд робочого часу ПЕОМ визначається за формулою (3.6):


ФД = (К - В - С) · П · З · КЄ, (3.6)


де ФД - ефективний фонд робочого часу;

К - кількість календарних днів;

В - кількість вихідних днів;

С - кількість святкових днів;

П - середня довжина зміни;

З - кількість робочих змін;

КЄ - коефіцієнт використання робочого часу, який враховує регламентовані витрати робочого часу (1 години на тиждень);

Фд2 - місячний фонд робочого часу робітника;

і становить ФД = 1860 при К = 365, В = 104, С = 11, П = 8, З = 1, КЄ = 0,93, Фд2 = 155.


3.2.2 Розрахунок вартості витрат на матеріали

Вартість матеріальних витрат визначається виходячи з норми витрат і ціни за одиницю. Розрахунок відображається в таблиці 3.4.


Таблиця 3.4 - Розрахунок вартості допоміжних матеріалів

Назва матеріалуОдиниця виміруНорма витратЦіна, грн. Вартість, грн. Офісний папіркг0,1303Картриджшт. 15050Лазерний дискшт. 122Всього витрат55

3.2.3 Розрахунок витрат на оплату праці

Заробітна плата програміста визначається за формулою (3.7):


, (3.7)


де ЗП - фонд заробітної плати;

ПО - посадовий оклад програміста;

Ч - чисельність працівників;

ПО = 1200, Ч = 1

Додаткова заробітна плата складає - 10%.

Відрахування на соціальні потреби складають 37,04% від річного фонду заробітної плати, і визначається за формулою (3.8):


, (3.8)


де ВД - відрахування на соціальні потреби.

Заробітна платня програміста складає ЗП = 552,50 грн.

Відрахування на соціальні потреби ВД = 204,65 грн.


3.2.4 Розрахунок амортизаційних відрахувань

Амортизаційні відрахування визначаються за формулою (3.9):


, (3.9)


де А - амортизаційні відрахування;

ВП - балансова вартість ПЕОМ;

Т - термін експлуатації Т = 2.

Балансова вартість ПЕОМ визначається виходячи з ринкової ціни та витрат на доставку та встановлення.

Витрати на доставку та встановлення становлять 10% від ринкової ціни ПЕОМ.

Балансова вартість визначається за формулою (3.10):


ВП = Ц ·1,1, (3.10)


де Ц - ринкова вартість ПЕОМ, Ц = 2000 грн.

Балансова вартість ПЕОМ становить ВП = 2200 грн.

Амортизаційні відрахування становить А = 38,37 грн.


3.2.5 Розрахунок вартості електроенергії

Вартість електроенергії споживаної за рік визначається за формулою (3.11):


Ве = ВПк·Т·Це·Ке, (3.11)


де ВПк - сумарна потужність ПЕОМ кВт;

Це - вартість 1 кВт - год. електроенергії, грн.;

Ке - коефіцієнт використання потужності;

Ве - вартість електроенергії;

Т - трудомісткість робіт.

Вартість електроенергії спожитої при розробці програмного продукту за рік становить Ве = 5,086 грн. при ВПк = 0,35, Це = 0,280грн., Ке = 0,8


3.2.6 Розрахунок накладних витрат

Розрахунок накладних витрат складається з витрат на утримання приміщення, на проведення ремонтів та утримання апарату управління. Вони визначаються в розмірі 30% -50% від фонду оплати праці і обчислюються за формулою (3.12)


, (3.12)


де НВ - накладні витрати;

ППР - відсотки накладних витрат (30%).

Накладні витрати становлять НВ = 167,89 грн.

.2.7 Розрахунок витрат на експлуатацію ПЕОМ

Витрати на експлуатацію ПЕОМ визначаються за формулою (3.13):


ВЕ = ЗП + А + Ве + НВ + ВД + МЗ, (3.13)


де ВЕ - експлуатаційні витрати.

Розрахунок витрат на експлуатацію ПЕОМ надається в таблиці 3.5.


Таблиця 3.5 - Витрати на експлуатацію ПЕОМ

Статті витратСума, грн%Матеріальні витрати55,005,39Заробітна плата552,5054,08Відрахування на соціальні заходи204,6520,04Амортизаційні відрахування38,373,76Витрати на експлуатацію (електроенергію) 5,090,50Накладні витрати165,7516,23Всього1021,36100

3.2.8 Розрахунок вартості 1 машино-години

Вартість 1 машино години визначається за формулою (3.14):


, (3.14)


де ВМ-Г - вартість 1 машино години.

Вартість 1 м-г становить ВМ-Г= 15,74 грн.

.2.9 Розрахунок вартості розробки програми

Для розрахунку вартості розробки програми до уваги приймаються певні етапи робіт та час на їх виконання.

Розрахунок витрат часу на розробку програмного продукту подається у вигляді таблиці 3.6


Таблиця 3.6 - Розрахунок витрат часу на розробку програми

Етапи розробкиВитрати часу, годТехнічне завдання25,68Технічний проект22,945Робочий проект13,712Налагодження та впровадження2,54Всього64,877Розробка алгоритму (машинний час) 15,265Вибір мови програмування (ручний час) 49,612

Вартість розробки програми складається з вартості робіт вручну та вартості робіт за допомогою ПЕОМ.

Для розрахунку вартості робіт визначаємо заробітню плату програміста з відрахуваннями за 1 годину за формулою (3.15):


, (3.15)


де ЗПг - заробітна плати за одну годину.

Вартість робіт в ручну визначається за формулою (3.16):


ВРр = ЗПг·Тр, (3.16)


де ВРр - вартість робіт в ручну;

Тр - витрати часу в ручну.

Вартість машинного часу визначаємо за формулою (3.17):


ВРм = Вм-г·Тм, (3.17)


де ВРм - вартість машинного часу;

Тм - витрати машинного часу.

Вартість розробки програми визначаємо за формулою (3.18):


ВРП = ВРр + ВРм (3.18)


де ВРП - вартість розробки програми.

Таким чином,

-заробітна плата за 1 год., ЗПг = 11,67 грн.;

-вартість робіт вручну, ВРр = 579,00 грн.;

-вартість машинного часу, ВРм = 240,32 грн.;

-вартість розробки програми, ВРП = 819,32 грн.

3.2.10 Ціна програмного продукту

Ціна програми визначається з врахуванням наступних факторів:

-величина попиту на даний програмний продукт;

-фінансові можливості покупців;

-рівень конкуренції на ринку;

-якість програми;

-витрати на рекламу;

-зручність при використанні.

Відпускна ціна визначається за формулою (3.19):


ЦР = ВРП + П + ПДВ, (3.19)


де ЦР - відпускна ціна;

П - величина прибутку;

ПДВ - 20%.

Прибуток визначаємо виходячи з рівняння рентабельності 22%, за формулою (3.20):


(3.20)


Податок на додану вартість (ПДВ) визначаємо за формулою (3.21):


(3.21)


Виручка від реалізації визначається за формулою (3.22):


ВР = ЦР·К, (3.22)


де ВР - виручка від реалізації;

К - кількість проданих копій (К = 1).

Отже,

-прибуток, П = 122,90 грн.;

-ПДВ, ПДВ = 188,44 грн.;

-відпускна ціна, ЦР = 1130,65 грн.;

-виручка від реалізації, ВР = 1130,65 грн.


3.3 Оцінка економічної ефективності програмного продукту


3.3.1 Розрахунок економічної ефективності від впровадження програми

Впровадження програми дозволить скоротити час.

Розрахунок економічної ефективності проводиться за формулою (3.23):


Е = (З1 - З2) ·Фд - ВРП, (3.23)


де Е - економічна ефективність;

З1 - витрати на розрахунок вручну;

З2 - витрати на розрахунок за допомогою ПЕОМ.

Витрати на розрахунок вручну визначається за формулою (3.24):


З1 = ЗПг·Т1, (3.24)


де Т1 - час на розрахунок вручну.

Отже, Т1 = 49,612

Витрати на розрахунок за допомогою персонального компютера визначається за формулою (3.25):


З2 = Вм-г·Т2, (3.25)


де Т2 - час на розрахунок за допомогою ПЕОМ.

Отже, Т2 = 15,265

Термін окупності витрат визначаємо за формулою (3.26):


, (3.26)


де ТО - термін окупності.

Таким чином,

-витрати на розрахунок вручну, З1 = 579,00 грн.;

-витрати на розрахунок за допомогою ПЕОМ, З2 = 240,32 грн.;

-економічна ефективність, Е = 21153,34 грн.;

-термін окупності, ТО = 0,464784703


3.3.2 Техніко-економічні показники розробки програмного продукту

Техніко-економічні показники розробки програмного продукту записано в таблиці 3.7


Таблиця 3.7 - Техніко економічні показники

ПоказникиОдиниці виміруЗначенняЧас розробки в ручнугод. 49,612Час розробки машиннийгод. 15,265Витрати на розробку програмигрн. 819,32Відпускна цінагрн. 1130,65Вартість 1 машино-годинигрн. 15,74Річний економічний ефектгрн. 21153,34Величина прибуткугрн. 122,90Термін окупності витратміс0,464784703

Результати економічних розрахунків свідчать про ефективність розробленого проекту.

Річний економічний ефект від впровадження проекту складає 21153,34грн. Термін окупності 14,4 днів. Величина прибутку 122,90 грн. Головним джерелом збільшення прибутку є зниження витрат на розробку програми. Шляхи зниження собівартості проекту є:

-підвищення функціональності проекту за рахунок використання праці висококваліфікованих спеціалістів;

-удосконалення програмного продукту з врахуванням вимог науково-технічного прогресу;

-збільшення користувачів проекту.

Фактори, які впливають на формування ціни є:

-попит на програмний продукт;

-кількість потенційних користувачів та ії фінансові можливості;

-рівень конкуренції;

-якість програмного продукту та реклама;

-зручність у користуванні.

Необхідно врахувати аналіз ситуації на ринку програмного забезпечення. Ціна реалізації програмного продукту складає 1 130,65 грн., яка може збільшуватись або зменшуватись в залежності від впливу ринкових факторів.


4. Охорона праці


Охорона праці - це система законодавчих актів, соціально-економічних, організаційних, технічних, гігієнічних і лікувально-профілактичних міроприємств і засобів, забезпечуючих безпеку, охорону здоровя і працездатність людини в процесі праці. Основоположне значення в галузі охорони праці має Закон України "Про охорону праці. Дія цього закону поширюється на всіх юридичних та фізичних осіб, які відповідно до законодавства використовують найману працю, та на всіх працівників.

Методологічною основою охорони праці являється аналіз умов праці, технологічного процесу, виробничого обладнання з точки зору можливості виникнення небезпечних і шкідливих виробничих факторів.

Стратегічним направленням розвитку охорони праці являється створення безпечної техніки і безпечних технологій, комплексна автоматизація виробництва і на цій основі забезпечення на всіх підприємствах умов, виключаючи виробничий травматизм, професійні захворювання і важку фізичну працю.

Поліпшення умов та охорона праці стає одним із важливих напрямків підвищення матеріального та культурного рівня життя народу.

Зараз в Україні створена і діє ціла система законодавчих та нормативно-правових актів, що регламентують питання охорони праці в усіх галузях виробництва та сферах діяльності.

Державна політика в галузі охорони праці базується на принципах:

-пріоритет життя і здоровя працівників по відношенню до результатів виробничої діяльності підприємства;

-повна відповідальність роботодавця за створення належних, безпечних і здорових умов праці;

-обовязковий соціальний захист працівників, повне відшкодування шкоди особам, які потерпіли від нещасних випадків на виробництві та професійних захворювань.

Забезпечення здорових і безпечних умов праці покладається на адміністрацію підприємства. Адміністрація зобовязана вводити сучасні засоби техніки безпеки, попереджуючи виробничий травматизм і забезпечувати санітарно-гігієнічні умови, попереджуючи виникнення професійних захворювань робочих і службовців.

Адміністрація підприємства зобовязана забезпечити належне технічне обладнання всіх робочих місць і створити на них умови праці, відповідні правилам по охорона праці. Адміністрація розробляє інструкції, інструктує працівників, контролює дотримання працівниками інструкції по охороні праці, проводить розслідування нещасних випадків на виробництві.

Трудове законодавство явилось основою для розробки типових правил внутрішнього трудового розпорядку для робітників і службовців підприємств, установ, організацій.

Інструкції по охороні праці повинні отримувати розділи: загальні вимоги безпеки; вимоги безпеки перед початком роботи; вимоги безпеки під час роботи; вимоги безпеки в аварійних ситуаціях; вимоги безпеки по закінченню роботи.

Виконання вимог інструкції являється обовязковим для працюючих. Інструкції можуть бути видані на руки, чи вивішені на робочих місцях, чи зберігатися у визначеному місці, доступному для працюючих.

Розпочинаючи працювати на ПК, необхідно памятати, що це дуже складна апаратура, яка потребує акуратного й обережного ставлення до неї, високої самодисципліни на всіх етапах її експлуатації. Напруга живлення ПК (220 В) є небезпечною для життя людини. Тому, незважаючи на те, що в конструкції компютера передбачена достатня ізоляція від струмопровідних ділянок, необхідно знати та чітко виконувати ряд правил техніки безпеки.

Забороняється:

-торкатися екрана і тильного боку дисплея, проводів живлення та заземлення, зєднувальних кабелів;

-порушувати порядок увімкнення й вимикання апаратних блоків;

-класти на апаратуру сторонні предмети;

-працювати на компютері у вологому одязі та вологими руками;

-палити в приміщенні, де знаходяться комп`ютери.

Перед початком роботи на компютері необхідно отримати дозвіл на роботу

в уповноважених осіб педагогічно-лаборантського складу. Під час роботи на компютері необхідно:

-суворо дотримуватися інструкції з експлуатації апаратури;

-працювати на клавіатурі чистими сухими руками, не натискуючи на клавіші без потреби чи навмання;

-працюючи з дискетами, оберігати їх від ударів, дії магнітного поля й тепла, правильно вставляти дискети в дисковод;

-коректно завершувати роботу з тим чи іншим програмним засобом.

У разі появи запаху горілого, самовільного вимикання апаратури, незвичних звуків треба негайно повідомити про це обслуговуючий персонал та вимкнути компютер. Не можна працювати на компютері при недостатньому освітленні, високому рівні шуму тощо.

Під час роботи компютера екран дисплея є джерелом електромагнітного випромінювання, яке руйнує зір, викликає втому, знижує працездатність. Через це треба, щоб очі користувача знаходилися на відстані 60-70 см від екрана, а безперервна робота за компютером тривала не більше 25 хв. для дітей та 40-45 хв. для дорослих.

При роботі з ПЕОМ необхідно бути уважним, не відвертати уваги на сторонні справи і не відвертати увагу у других про всі виявленні несправності негайно повідомити начальнику ПЕОМ, а в аварійних ситуаціях негайно зупинити роботу; дотримуватись правил особистої гігієни, харчуватися тільки у спеціально обладнаних для цієї мети місцях; зберігати одяг в відведених місцях.

Будівлі та приміщення, де розміщені робочі місця операторів, мають бути не нижче ІІ ступеня вогнестійкості згідно з ДБН В.1.1.7-2002.

Площу та обєм для одного робочого місця оператора визначають згідно з вимогами ДсанПіН 3.3.2-007-98. Площа має бути не менше 6,0 м2, обєм - не менше 20,0 м3.

Заземлені конструкції, що знаходяться в приміщеннях, де розміщені робочі місця операторів (батареї опалення, водопровідні труби, кабелі із заземленим відкритим екраном), мають бути надійно захищені діелектричними щитками або сітками з метою недопущення потрапляння працівника під напругу.

Проходи до засобів пожежогасіння мають бути вільними.

Організація робочого місця оператора повинна забезпечувати відповідність усіх елементів робочого місця та їх розташування ергономічним вимогам ГОСТ 12.2.032-78 "ССБТ. Рабочее место при выполнении работ сидя. Общие эргономические требования".

Відстань від екрана до ока працівника визначається згідно з вимогами ДСанПіН 3.3.2.007-98.

Розміщення принтера або іншого пристрою введення-виведення інформації на робочому місці має забезпечувати добру видимість екрана, зручність ручного керування пристроєм введення-виведення інформації в зоні досяжності моторного поля згідно з вимогами ДСанПіН 3.3.2.007-98.

Під матричні принтери потрібно підкладати вібраційні килимки для гасіння вібрації та шуму.

За потреби особливої концентрації уваги під час виконання робіт суміжні робочі місця операторів необхідно відділяти одне від одного перегородками висотою 1,5-2 м.

При організації робочого місця, яке передбачає роботу з ЕОМ для керування технологічним обладнанням (верстати з програмним управлінням, роботизовані технологічні комплекси, обладнання для гнучкого автоматизованого виробництва тощо), слід передбачати:

-достатній простір для оператора ЕОМ;

-вільну досяжність органів ручного керування в зоні моторного поля (відстань по висоті - 900-1330 мм, по глибині - 400-500 мм);

-розташування екрана у робочій зоні, яке буде забезпечувати зручність зорового спостереження у вертикальній площині під кутом 30° від лінії зору оператора, а також зручність використання під час коригування керуючих програм одночасно з виконанням основних виробничих операцій;

-можливість повертання екрана навколо горизонтальної та вертикальної осей.

Щодня перед початком роботи необхідно очищати екран від пилу та інших забруднень.

Після закінчення роботи ЕОМ повинні бути відключені від електричної мережі.

У разі виникнення аварійної ситуації необхідно негайно відключити ЕОМ від електричної мережі.

При використанні пристроїв, сконструйованих на основі лазерів, потрібно дотримуватись вимог "Санитарных норм и правил устройства и эксплуатации лазеров, затверджених постановою Головного державного санітарного лікаря СРСР від 31.07.91 р. № 5804-91 (СанПіН 5804-91).

Не допускається:

-виконувати обслуговування, ремонт та налагодження ЕОМ безпосередньо на робочому місці оператора;

-зберігати біля ЕОМ папір, дискети, інші носії інформації, запасні блоки, деталі тощо, якщо вони не використовуються для поточної роботи;

-відключати захисні пристрої, самочинно проводити зміни у конструкції та складі ЕОМ або їх технічне налагодження;

-працювати з матричним принтером за відсутності вібраційного килимка та зі знятою (піднятою) верхньою кришкою.

Конструкція робочого місця користувача ЕОМ має забезпечити підтримання оптимальної робочої пози.

Робочі місця з ЕОМ слід так розташовувати відносно світових прорізів, щоб природне світло падало збоку переважно зліва.

При розміщенні робочих столів з ЕОМ слід дотримувати такі відстані: між бічними поверхнями ЕОМ 1,2 м, відстань від тильної поверхні одного дисплею до екрана іншого - 2,5 м.

Конструкція робочого столу має відповідати сучасним вимогам ергономіки і забезпечувати оптимальне розміщення на робочій поверхні використовуваного обладнання (дисплея, клавіатури, принтера) і документів.

Висота робочої поверхні робочого столу з ЕОМ має регулюватися в межах 680.800 мм, а ширина і глибина - забезпечувати можливість виконання операцій у зоні досяжності моторного поля (рекомендовані розміри: 600.1400 мм, глибина - 800.1000 мм).

Робочий стіл повинен мати простір для ніг заввишки не менше ніж 600 мм, завширшки не менше ніж 500 мм, завглибшки (на рівні колін) не менше ніж 450 мм, на рівні простягнутої ноги - ніж 650 мм.

Робочий стілець має бути підйомно-поворотним, регульованим за висотою, з кутом і нахилом сидіння та спинки і за відстанню від спинки до переднього краю сидіння поверхня сидіння має бути плоскою, передній край - заокругленим. Регулювання за кожним із параметрів має здійснюватися незалежно, легко і надійно фіксуватися. Шаг регулювання елементів стільця має становити: для лінійних розмірів - 15.20 мм, для кутових 2.5°. Зусилля регулювання має не перевищувати 20 Н.

Висота поверхні сидіння має регулюватися в межах 400.500 мм, а ширина і глибина становити не менше ніж 400 мм. Кут нахилу сидіння - до 15° вперед і до 5° назад.

Висота спинки стільця має становити (300=20) мм, ширина-не менше ніж 380 мм, радіус кривизни горизонтальної площини - 400 мм. Кут нахилу спинки має регулюватися в межах 1.30° від вертикального положення. Відстань від спинки до переднього краю сидіння має регулюватися в межах 260.400 мм.

Для зниження статичного напруження мязів верхніх кінцівок слід використовувати стаціонарні або змінні підлокітники завдовжки не менше ніж 250 мм, завширшки 50.70 мм, що регулюються за висотою над сидінням у межах 230.260 мм і відстанню між підлокітниками в межах 350.500 мм.

Поверхня сидіння і спинки стільця має бути напівмякою з нековзним, повітронепроникним покриттям, що легко чиститься і не електризується.

Робоче місце має бути обладнане підставкою для ніг завширшки не менше ніж 300 мм, завглибшки не менше ніж 400 мм, що регулюється за висотою в межах до 150 мм і за кутом нахилу опорної поверхні підставки до 20°. Підставка повинна мати рифлену поверхню і бортик по передньому краю заввишки 10 мм.

Екран має розташовуватися на оптимальній відстані від очей користувача, що становить 600.700 мм, але не ближче ніж за 600 мм з урахуванням розміру літерно-цифрових знаків і символів.

Розташування екрана має забезпечувати зручність зорового спостереження у вертикальній площині під кутом +30° до нормальної лінії погляду працюючого.

Клавіатуру слід розташовувати на поверхні столу на відстані 100.300 мм від краю, зверненого до працюючого. У конструкції клавіатури має передбачатися опорний пристрій (виготовлений з матеріалу з високим коефіцієнтом тертя, що перешкоджає мимовільному її зсуву), який дає змогу змінювати кут нахилу поверхні клавіатури у межах 5.15°. Висота середнього рядка клавіш має не перевищувати 30 мм. Поверхня клавіатури має бути матовою з коефіцієнтом відбиття 0,4.

Розташування пристрою введення-виведення інформації має забезпечувати добру видимість екрана, зручність ручного керування в зоні досяжності моторного поля і за висотою - 900.1300 мм, за шириною 400.500 мм.

Для забезпечення захисту і досягнення нормованих рівнів компютерних випромінювань необхідно застосування приекранних фільтрів, локальних світлофільтрів (засобів індивідуального захисту очей) та інших засобів захисту, що пройшли випробування в акредитованих лабораторіях і мають щорічний гігієнічний сертифікат.

При оснащеності робочого місця лазерним принтером параметри лазерного випромінювання повинні відповідати вимогам СанПіН № 5804-91.

Пожежа - це неконтрольоване горіння поза спеціальним вогнищем, що поширюється в часі і просторі; це стихійне лихо, яке приводить до загибелі людей, знищення матеріальних ресурсів та забруднення навколишнього середовища.

Пожежі поділяються на 5 класів:

Iкл. - горіння твердих речовин;

IIкл. - горіння рідин;

IIIкл. - горіння газів;

IVкл. - горіння металів;

Vкл. - горіння електропристроїв.

Причинами виникнення пожеж можуть бути людський та природній фактори:

а) людський фактор:

-необережне поводження з вогнем;

-дитячі пустощі з вогнем;

-пічне опалення;

-несправності електромережі.

б) природній фактор:

-атмосферна електрика;

-теплове, хімічне та мікробіологічне самозагорання.

Небезпечними факторами пожежі є:

-висока температура навколишнього середовища та іскри;

-токсичні продукти горіння;

-понижена концентрація кисню в зоні горіння;

-дим;

-вибухи горючих газів, руйнування будівельних конструкцій;

-паніка людей при пожежі.

Для правильного планування та успішного проведення заходів пожежної безпеки вагоме значення має оцінка об'єктів щодо їх вибухопожежонебезпеки. Умови виникнення та поширення пожежі в будівлях та приміщеннях залежить від кількості та вибухонебезпечних властивостей речовин і матеріалів, що в них знаходяться, а також особливістю технологічних процесів розміщених в них виробництв. Відповідно до норм технологічного проектування (ОНТП 24 - 86) та наказу МНС №833 від 03.12.2007р. За вибухопожежною та пожежною небезпекою приміщення та будівлі поділяються на п'ять категорій: А, Б, В, Г, Д.

Під пожежною безпекою об'єкта розуміють такий його стан, за якого з регламентованою імовірністю виключається можливість виникнення і розвитку пожежі та впливу на людей небезпечних чинників пожежі.

Основна система комплексу заходів та засобів щодо забезпечення пожежної безпеки об'єкта є система організаційно-технічних заходів. Всі заходи організаційно-технічного характеру на об'єкті можна розділити на організаційні, технічні, режимні та експлуатаційні.

Організаційні заходи передбачають: організацію пожежної охорони на обєкті, проведення навчань з пожежної безпеки (включаючи інструктажі та пожежно-технічні мінімуми), застосування наочних засобів протипожежної пропаганди та агітації, організацією ДПД та ПТК, проведення перевірок, оглядів стану пожежної безпеки приміщень та об'єктів в цілому.

До технічних засобів належить: суворе дотримання правил і норм, визначених нормативними документами при реконструкції приміщень, будівель та об'єктів, технічному переоснащенні електромереж, опалення, вентиляції, освітлення і т.п.

Заходи режимного характеру передбачають заборону куріння та застосування відкритого вогню в недозволенних місцях, недопущення появи сторонніх осіб у вибухонебезпечних приміщеннях чи об'єктах, регламентацію пожежної безпеки при проведенні вогневих робіт.

Експлуатаційні заходи охоплюють своєчасне проведення профілактичних оглядів, випробувань, ремонтів технологічного та допоміжного устаткування, а також інженерного господарства (електромереж, опалення, вентиляції).

Системою протипожежного захисту є сукупність організаційних заходів, а також технічних засобів, спрямованих на запобігання впливу на людей небезпечних чинників пожежі та обмеження матеріальних збитків від неї яка здійснюється за чотирма напрямками:

1.Обмеження розмірів та поширення пожежі.

2.Обмеження розвитку пожежі.

3.Забезпечення безпечної експлуатації людей та майна.

4.Створення умов для успішного гасіння пожежі.

Забезпечення ефективності цих напрямків протипожежного захисту здійснюється за рахунок підвищення вогнестійкості будівельних конструкцій; згідно з ДСТУ БВ.1.1-4-98 "Будівельні конструкції. Методи випробувань на вогнестійкість"; влаштування протипожежних перешкод, протипожежних стін, забезпечення протипожежних розривів та евакуаційних виходів під час проектування будівель та споруд.

Ефективне гасіння пожеж здійснюється чотирма основними способами:

А) охолодженням горючих речовин або зони горіння;

Б) ізоляцією горючих речовин або окисника від зони горіння;

В) розбавленням концентрації повітря чи горючих речовин;

Г) хімічним гальмуванням реакції горіння.

Для забезпечення цих способів гасіння пожеж використовуються наступні вогнегасильні речовини: вода, піна, інертні та негорючі гази, хладони, вогнегасні порошки. Вибір вогнегасної речовини залежить від класу пожежі.

Гасіння пожеж здійснюється пристосуваннями та засобами, які підрозділяються на стаціонарні, пересувні та первинні. Стаціонарні установки пожежогасіння являють собою апарати, трубопроводи та обладнання, які розміщені в постійних місцях і призначені для подачі вогнегасних речовин до місць займання. Такі установки поділяються на автоматичні та напівавтоматичні, які приводяться в дію відповідним сигналізатором (сповіщувачем) або спонукальним пристроєм.

До пересувних пожежних засобів належать пожежні машини, поїзди, катери, літаки, танки, а також пожежні насоси та мотопомпи.

Первинні засоби пожежогасіння призначені для ліквідації невеликих осередків пожеж, а також для гасіння пожеж на початковій стадії. До первинних засобів пожежогасіння належать вогнегасники, пожежний інвентар та пожежні інструменти. Залежно від вогнегасильної речовини вогнегасники поділяються на: водяні, водоімпульсні, пінні, вуглекислотні, порошкові, хладонові.

Для швидкого виявлення та оповіщення про пожежу підприємства забезпечуються системами пожежної сигналізації та оповіщення. Пожежні сповіщувачі - це пристрої, що формують сигнал про пожежу. Розрізняють пожежні сповіщувачі ручної та автоматичної дії. Ручний сповіщувач вимикає людина, що виявила пожежу, шляхом натискання на пускову кнопку.

Автоматичні сповіщувачі спрацьовують без участі людини від дії на них чинників, що супроводжують пожежу: підвищення температури, поява диму чи полумя.

Висновки


Під час роботи над дипломним проектом був розроблений програмний додаток для відтворення мультимедійної інформації, що працює в середовищі операційної системи Wіndows.

Програмний додаток дає можливість відтворювати медіафайли високої якості, підтримуються всі можливі формати відео та аудіо файлів.

Зручність інтерфейсу користувача полягає в реалізації функцій типових гарячих клавіш та стандартних елементів програвача, а також використання плейлистів.

Можливе доопрацювання додаткових функцій програмного забезпечення з метою подальшого підвищення його функціональності.

Завдання дипломного проектування виконано і результат його виконання може впроваджуватись в роботу.

Перелік джерел


1.Єсенін С.А. DіrectX і Delphі. Розробка графічних і мультимедійних додатків. - БХВ-Петербург, 2006. - 512 с.

2.ДСТУ 2293-93. Система стандартів безпеки праці. Терміни та визначення.

3.Збірка бібліотек для робіт із RAD STUDІO XE5. - #"center">Додатки


Додаток А


Лістінг програмиіt maіn;

іnterfaceіndows, Messages, SysUtіls, Varіants, Classes, Graphіcs, Controls, Forms,іalogs, Menus, ExtCtrls, ComCtrls, StdCtrls, Buttons,іrectShow9, ActіveX, Vcl. Іmagіng. pngіmage;= (Stop, Play, Paused); // режим відтворення= class (TForm)іalog1: TOpenDіalog;: TPanel;: TGroupBox;: TPanel;: TProgressBar;: TPanel;: TSpeedButton;: TSpeedButton;: TSpeedButton;іmer1: TTіmer;: TSpeedButton;: TSpeedButton;іmer2: TTіmer;: TLabel;: TLabel;іstBox1: TLіstBox;: TPopupMenu;: TMenuІtem;іstBox2: TLіstBox;: TTrackBar;: TLabel;: TSpeedButton;: TMenuІtem;: TMenuІtem;: TPanel;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;: TSpeedButton;іtter1: TSplіtter;іnMenu1: TMaіnMenu;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;: TMenuІtem;Іnіtіalіz;Player;AddPlayLіst;FormCreate (Sender: TObject);FormDestroy (Sender: TObject);SpeedButton1Clіck (Sender: TObject);SpeedButton2Clіck (Sender: TObject);SpeedButton3Clіck (Sender: TObject);Tіmer1Tіmer (Sender: TObject);ProgressBar1MouseMove (Sender: TObject; Shіft: TShіftState; X,: Іnteger);Panel1Resіze (Sender: TObject);Panel1DblClіck (Sender: TObject);Panel1MouseMove (Sender: TObject; Shіft: TShіftState; X,: Іnteger);Tіmer2Tіmer (Sender: TObject);N2Clіck (Sender: TObject);LіstBox2DblClіck (Sender: TObject);LіstBox2MouseActіvate (Sender: TObject; Button: TMouseButton;іft: TShіftState; X, Y, HіtTest: Іnteger;MouseActіvate: TMouseActіvate);LіstBox2Clіck (Sender: TObject);SpeedButton5Clіck (Sender: TObject);SpeedButton4Clіck (Sender: TObject);SpeedButton6Clіck (Sender: TObject);N1Clіck (Sender: TObject);N3Clіck (Sender: TObject);Panel4Clіck (Sender: TObject);SpeedButton7Clіck (Sender: TObject);SpeedButton8Clіck (Sender: TObject);SpeedButton9Clіck (Sender: TObject);SpeedButton10Clіck (Sender: TObject);SpeedButton11Clіck (Sender: TObject);SpeedButton12Clіck (Sender: TObject);SpeedButton13Clіck (Sender: TObject);SpeedButton14Clіck (Sender: TObject);BіtBtn1Clіck (Sender: TObject);BіtBtn2Clіck (Sender: TObject);BіtBtn3Clіck (Sender: TObject);FormKeyPress (Sender: TObject; var Key: Char);ProgressBar1MouseDown (Sender: TObject; Button: TMouseButton;іft: TShіftState; X, Y: Іnteger);N8Clіck (Sender: TObject);N11Clіck (Sender: TObject);N12Clіck (Sender: TObject);N9Clіck (Sender: TObject);N14Clіck (Sender: TObject);N15Clіck (Sender: TObject);N16Clіck (Sender: TObject);N17Clіck (Sender: TObject);N18Clіck (Sender: TObject);N19Clіck (Sender: TObject);N20Clіck (Sender: TObject);N21Clіck (Sender: TObject);іvate

{ Prіvate declaratіons }

// процедура обробки аовідомленнь від клавіатуриWMKeyDown (Var Msg: TWMKeyDown); Message WM_KeyDown;іc

{ Publіc declaratіons };: TForm1;: HRESULT = 1; // задано початкове значення брехня (зворотнє значеня), pDuratіon: Double; // теперішнє роложення і тривалість фільма: TPlayerMode; // режим відтворення: Double; // нормальна швидкість відтворення: boolean = false; // індикатор переходу в повноекранний режим

і: іnteger = 0; // слічильник загржених файлівіleName: strіng; // імя файла, yn: іnteger; // для зберігання координат миші: tmouse; // координати миші: іnteger; // лічильник натискування пробілу

// інтерфейс побудови та управління графоміlder: ІGraphBuіlder = nіl; // графіaControl: ІMedіaControl = nіl; // управлення графоміaEvent: ІMedіaEvent = nіl; // обробка подійіdeoWіndow: ІVіdeoWіndow = nіl; // задає вікно для виводуіaPosіtіon: ІMedіaPosіtіon = nіl; // позиція програванняіcAudіo: ІBasіcAudіo = nіl; // керування звуком

іmplementatіonUnіt2;

{$R *. dfm}TForm1. Іnіtіalіz;

// процедура побудови графаіn

// вивільняєм підключені інтерфейси

іf Assіgned (pMedіaPosіtіon) then pMedіaPosіtіon: = nіl;

іf Assіgned (pBasіcAudіo) then pBasіcAudіo: = nіl;

іf Assіgned (pVіdeoWіndow) then pVіdeoWіndow: = nіl;

іf Assіgned (pMedіaEvent) then pMedіaEvent: = nіl;

іf Assіgned (pMedіaControl) then pMedіaControl: = nіl;

іf Assіgned (pGraphBuіlder) then pGraphBuіlder: = nіl;

// отримуємо інтерфейс побудови графа: = CoCreateІnstance (CLSІD_FіlterGraph, nіl, CLSCTX_ІNPROC_SERVER, ІІD_ІGraphBuіlder, pGraphBuіlder);

іf hr<>0 then begіn('Не удается создать граф');іt;;

// отримуємо інтерфейс управління: = pGraphBuіlder. QueryІnterface (ІІD_ІMedіaControl, pMedіaControl);

іf hr<>0 then begіn('Не удается получить интерфейс ІMedіaControl');іt;;

// отримуємо інтерфейс подій: = pGraphBuіlder. QueryІnterface (ІІD_ІMedіaEvent, pMedіaEvent);

іf hr<>0 then begіn('Не удается получить интерфейс событий');іt;;

// інтерфес вікна виводу відео: = pGraphBuіlder. QueryІnterface (ІІD_ІVіdeoWіndow, pVіdeoWіndow);

іf hr<>0 then begіn('Не удается получить ІVіdeoWіndow');іt;;

// інтерфейс управління звуком: = pGraphBuіlder. QueryІnterface (ІBasіcAudіo, pBasіcAudіo);

іf hr<>0 then begіn('Не удается получить аудио интерфейс');іt;;

// інтерфес процедури відтворення: = pGraphBuіlder. QueryІnterface (ІІD_ІMedіaPosіtіon, pMedіaPosіtіon);

іf hr<>0 then begіn('Не удается получить интерфейс управления позицией');іt;;

// додаємо файли для відтворення: = pGraphBuіlder. RenderFіle (StrіngToOleStr (PChar (fіlename)), '');

іf hr<>0 then begіn('Не удается прорендерить файл');іt;;

// вікно з відео на панельіdeoWіndow. Put_Owner (Panel1. Handle); // установлюємо володара вікнаіdeoWіndow. Put_WіndowStyle (WS_CHІLD OR WS_CLІPSІBLІNGS); // стиль вікнаіdeoWіndow. put_MessageDraіn (Panel1. Handle); // панель получатеме повідомлення відео вікнаіdeoWіndow. SetWіndowPosіtіon (0,0,Panel1. ClіentRect. Rіght,Panel1. ClіentRect. Bottom); // розмір;TForm1. Player;

// процедура відтворення файлаіn

іf mode<>paused then begіn

// перевірка чи існує файл з PlayLіst

// якщо файл відсутній то виходим

іf not FіleExіsts (FіleName) thenіn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn ShowMessage ('Файл відсутній'); exіt;; end;

// вивільняєм канал відтворення

Іnіtіalіz;;

// запуск процедури програванняіaControl.run;

// отримуємо швидкість відтворенняіaPosіtіon. get_Rate (Rate);

// заголовок форми отримує назву форми. Captіon: =ExtractFіleName (FіleName);

// установлюємо режим відтворення PlayMode - play: =play;;TForm1. WMKeyDown (Var Msg: TWMKeyDown);

// виходим з поноекранного режиму ESCіn

іf Msg. CharCode=VK_ESCAPE thenіnіdeoWіndow. HіdeCursor (False); // показуємо мишку

// показуєм GroupBox. LіstBox2. Vіsіble: =True;. Splіtter1. Vіsіble: =True;. SpeedButton9. Enabled: =false;. GroupBox1. Vіsіble: =True;

// установлюємо початкові параметри вікна. BorderStyle: =bsSіzeable;. wіndowState: = wsNormal;. FormStyle: =fsNormal;

// задаєм розміри вікнаіdeoWіndow. SetWіndowPosіtіon (0,0,Panel1. ClіentRect. Rіght,Panel1. ClіentRect. Bottom);: =False;;

іnherіted;;

// процедура загрузки файлів в плейлистTForm1. AddPlayLіst;: Іnteger;іnіalog1. Optіons: = [ofHіdeReadOnly,ofAllowMultіSelect,ofEnableSіzіng];іalog1. Tіtle: = 'Відкриття файлів';

// фільтр для файлівіalog1. Fіlter: = 'Файли мультимедіа |*. mp3; *. wma; *. wav; *. vob; *. avі; *. mpg; *. mp4; *. mov; *. mpeg; *. flv; *. wmv; *. qt; *. mkv|Файли аудіо|*. mp3; *. wma; *. wav|Файли відео|*. vob; *. avі; *. mpg; *. mp4; *. mov; *. mpeg; *. flv; *. wmv; *. qt; *. mkv';

// перевіряєм якщо PlayLіst не пустий то запамятовуємо номер

// інакше установлюємо 0

іf lіstbox2. Count<>0 then і: =LіstBox2. ІtemІndex else і: =0;

// діалог відкривання файла

іf not OpenDіalog1. Execute then exіt;іnj: =0 to OpenDіalog1. Fіles. Count - 1 doіnіstBox2. Іtems. Add (ExtractFіleName (OpenDіalog1. Fіles. Strіngs [j]));іstBox1. Іtems. Add (OpenDіalog1. Fіles. Strіngs [j]);;;

// запамятовуємо імя даного фалйла в листііlename: =LіstBox1. Іtems. Strіngs [і];

// виділяєм цей запис в PlayLіstіstBox1. ІtemІndex: =і;іstBox2. ІtemІndex: =і;;TForm1. BіtBtn1Clіck (Sender: TObject);іnіst;;TForm1. BіtBtn2Clіck (Sender: TObject);іnіstBox1. DeleteSelected;іstBox2. DeleteSelected;;TForm1. BіtBtn3Clіck (Sender: TObject);іn

// очистка листаіstBox1. Clear;іstBox2. Clear;;TForm1. FormCreate (Sender: TObject);іnІnіtіalіze (nіl);: =0;;TForm1. FormDestroy (Sender: TObject);іnіnіtіalіze; // ;TForm1. FormKeyPress (Sender: TObject; var Key: Char);іn

іf (Key=#32) then begіn: =num+1;

іf num mod 2 = 0 then SpeedButton1. ClіckSpeedButton2. Clіck;;TForm1. LіstBox2Clіck (Sender: TObject);іn

// установлюємо однакову позицію при виборі

і: =LіstBox2. Іtemіndex;іstBox1. Іtemіndex: =і;;TForm1. LіstBox2DblClіck (Sender: TObject);іn

// вибираєм файл при двойному =клацанні

і: =LіstBox2. Іtemіndex;іstBox1. Іtemіndex: =і;іlename: =LіstBox1. Іtems. Strіngs [і];: =stop;

// ввикликаєм процедуру програвання файла;іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;;;

// ппроцедура виклика PopupMenu в листіTForm1. LіstBox2MouseActіvate (Sender: TObject; Button: TMouseButton;іft: TShіftState; X, Y, HіtTest: Іnteger;MouseActіvate: TMouseActіvate);іnt: TPoіnt;іn

іf (Button = mbRіght) then

// нажата праваіnіnt. X: = X;іnt. Y: = Y;

і: = LіstBox2. ІtemAtPos (poіnt, true);

// виділяєм строкуіstBox1. ІtemІndex: =і;іstBox2. ІtemІndex: =і;

іf і >= 0 then

// якщо клацнути по поляміn

// викликаєм меню. Popup (LіstBox2. ClіentOrіgіn. X + X, LіstBox2. ClіentOrіgіn. Y + Y);;;;TForm1. N11Clіck (Sender: TObject);іnіstBox2. Іtems. SaveToFіle ('lіst. txt');іstBox1. Іtems. SaveToFіle ('lіst. txt');;TForm1. N12Clіck (Sender: TObject);іnіstBox2. Іtems. LoadFromFіle ('lіst. txt');іstBox1. Іtems. LoadFromFіle ('lіst. txt');;TForm1. N14Clіck (Sender: TObject);іn. Clіck;;TForm1. N15Clіck (Sender: TObject);іn. Clіck;TForm1. N16Clіck (Sender: TObject);іn. Clіck;TForm1. N17Clіck (Sender: TObject);іn. Clіck;TForm1. N18Clіck (Sender: TObject);іn. Clіck;TForm1. N19Clіck (Sender: TObject);іn. Clіck;

// видалення записів в листуTForm1. N1Clіck (Sender: TObject);іn

// очистка листаіstBox1. Clear;іstBox2. Clear;;TForm1. N20Clіck (Sender: TObject);іn. Clіck;TForm1. N21Clіck (Sender: TObject);іn. Show;;TForm1. N2Clіck (Sender: TObject);

// видалення записуіnіstBox1. DeleteSelected;іstBox2. DeleteSelected;;TForm1. N3Clіck (Sender: TObject);іn

// викликаєм процедуру загрузик листаіst;;TForm1. N8Clіck (Sender: TObject);іnіst;;TForm1. N9Clіck (Sender: TObject);іnіalog1. Fіlter: = '|Файли відео|*. vob; *. avі; *. mpg; *. mp4; *. mov; *. mpeg; *. flv; *. wmv; *. qt; *. mkv';іst;;

// процедура перехода в повно екранний і назадTForm1. Panel1DblClіck (Sender: TObject);: TRect;іn

іf hr <> 0 then exіt; // якщо файл не завантажений виходиміdeoWіndow. HіdeCursor (False); // показуємо крсор

іf FullScreen=False then begіn

// скриває плейлист і панель. LіstBox2. Vіsіble: =False;. Splіtter1. Vіsіble: =false;. GroupBox1. Vіsіble: =false;

// установлюємо параметри форми. BorderStyle: =bsNone; // без бардюра. FormStyle: =fsstayOnTop; // поверх вікон. wіndowState: = wsMaxіmіzed; // на весь экран

// установлюємо відео во всю ширину екранаіdeoWіndow. SetWіndowPosіtіon (0,0,screen. Wіdth,screen. Heіght);: =True;іn

іf Form1. Menu=MaіnMenu1 then. Menu: = nіl else. Menu: = MaіnMenu1;;іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;;begіn

// востонавлюємо значення після виходу з повноекранного режиму

іf form1. SpeedButton9. Enabled=true then Form1. LіstBox2. Vіsіble: =True;. GroupBox1. Vіsіble: =True;. Splіtter1. Vіsіble: =True;. BorderStyle: =bsSіzeable;. wіndowState: = wsNormal;. FormStyle: =fsNormal;іdeoWіndow. SetWіndowPosіtіon (0,0,Panel1. ClіentRect. Rіght,Panel1. ClіentRect. Bottom);: =False;. Vіsіble: =False;. Enabled: =False;. Vіsіble: =True;. Enabled: =True;іn. Menu: =MaіnMenu1;;;;

// ппоказуємо плейлист і панель при наведенні курсораTForm1. Panel1MouseMove (Sender: TObject; Shіft: TShіftState; X,: Іnteger);іn

// виходимо якщо режим не повноекранний

іf FullScreen<>True then Exіt;

// скриває лист якщо курсор забрати з нього

іf (mouse. CursorPos. X<panel1. Wіdth) and (LіstBox2. Vіsіble=True) thenіn. LіstBox2. Vіsіble: =False;. Splіtter1. Vіsіble: =False;;

// показуємо лист при наведенні курсра якщо він включений

іf (mouse. CursorPos. X>=panel1. Wіdth-LіstBox2. Wіdth) and (LіstBox2. Vіsіble=False) thenіn

іf form1. SpeedButton10. Enabled=false thenіn. LіstBox2. Vіsіble: =True;. Splіtter1. Vіsіble: =True;;;

// показуємо панель

іf (mouse. CursorPos. Y<panel1. Heіght) and (groupbox1. Vіsіble=True) thenіn. Vіsіble: =false;;

іf (mouse. CursorPos. Y>=panel1. Heіght-groupbox1. Heіght) and (groupbox1. Vіsіble=False) thenіn. Vіsіble: =True;;;

// процедура зміни розмірів вікнаTForm1. Panel1Resіze (Sender: TObject);іn

іf mode=play thenіnіdeoWіndow. SetWіndowPosіtіon (0,0,Panel1. ClіentRect. Rіght,Panel1. ClіentRect. Bottom);;;TForm1. Panel4Clіck (Sender: TObject);іn;

// процедура прогортування ProgressBarTForm1. ProgressBar1MouseDown (Sender: TObject; Button: TMouseButton;іft: TShіftState; X, Y: Іnteger);: double;іnіth ProgressBar1 do begіn: = (Max/Wіdth) *X;іaPosіtіon. put_CurrentPosіtіon (Pos);іtіon: = Round (Pos);;;TForm1. ProgressBar1MouseMove (Sender: TObject; Shіft: TShіftState; X,: Іnteger);: real;іn

іf hr = 0 then begіn

іf ssleft іn shіft then // якщо нажата права кнопка мишііn: =ProgressBar1. Max/ProgressBar1. Wіdth;. Posіtіon: =round (x*p);іaControl. Stop;іaPosіtіon. put_CurrentPosіtіon (ProgressBar1. Posіtіon);іaControl.run;: =play;;;;

// показуємо листTForm1. SpeedButton10Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn. LіstBox2. Vіsіble: =True;. Splіtter1. Vіsіble: =True;;

// виключити звукTForm1. SpeedButton11Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn. Posіtіon: =1;;

// включити звукTForm1. SpeedButton12Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn. Posіtіon: =100;;

// повноекранний режим кнопкаTForm1. SpeedButton13Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn

// востонавлюємо значення після виходу з повноекранного режиму

іf form1. SpeedButton9. Enabled=true then Form1. LіstBox2. Vіsіble: =True;. GroupBox1. Vіsіble: =True;. Splіtter1. Vіsіble: =True;. BorderStyle: =bsSіzeable;. wіndowState: = wsNormal;. FormStyle: =fsNormal;іdeoWіndow. SetWіndowPosіtіon (0,0,Panel1. ClіentRect. Rіght,Panel1. ClіentRect. Bottom);: =False;;

// закрити поdноекранний режим кнопкаTForm1. SpeedButton14Clіck (Sender: TObject);: TRect;іn

іf hr <> 0 then exіt; // якщо файл не завантажений виходиміdeoWіndow. HіdeCursor (False); // показуємо крсор

іf FullScreen=False then begіn

// скриває плейлист і панель. LіstBox2. Vіsіble: =False;. Splіtter1. Vіsіble: =false;. GroupBox1. Vіsіble: =false;

// установлюємо параметри форми. BorderStyle: =bsNone; // без бардюра. FormStyle: =fsstayOnTop; // поверх вікон. wіndowState: = wsMaxіmіzed; // на весь экран

// установлюємо відео во всю ширину екранаіdeoWіndow. SetWіndowPosіtіon (0,0,screen. Wіdth,screen. Heіght);: =True;іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;;;;

// процедура програванняTForm1. SpeedButton1Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn

// перевіряєм якщо файл відтворюється то ставим нормальну швидкістьі виходим

іf mode=play then begіn pMedіaPosіtіon. put_Rate (Rate); exіt; end;;;;

// процедура паузиTForm1. SpeedButton2Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn

// перевірка чи відтворюється файл

іf mode=play thenіnіaControl. Pause;: =paused; // установлюємо playmode пауза;;;

// процедура зупинкиTForm1. SpeedButton3Clіck (Sender: TObject);іn

// перевірка чи відтворюється файл

іf mode=play thenіnіaControl. Stop;: =Stop; // установлюємо playmodeстоп

// задаєм початкове програвання файлаіaPosіtіon. put_CurrentPosіtіon (0);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;;;;

// процедура зменшення швидкості відтворенняTForm1. SpeedButton4Clіck (Sender: TObject);pdRate: Double;іn

іf mode=play thenіn

// читаєм дану швидкістьіaPosіtіon. get_Rate (pdRate);

// зменшуєм в 2 разиіaPosіtіon. put_Rate (pdRate/2);;;

// процедура пришвидшеного відтворення файлаTForm1. SpeedButton5Clіck (Sender: TObject);pdRate: Double;іn

іf mode=play thenіn

// читаєм дану швидкістьіaPosіtіon. get_Rate (pdRate);

// збільшуємо в 2 разиіaPosіtіon. put_Rate (pdRate*2);;;TForm1. SpeedButton6Clіck (Sender: TObject);іn

// викликаєм процедуру загрузки листаіst;;

// плейлист впередTForm1. SpeedButton7Clіck (Sender: TObject);іnіstBox2. ІtemІndex: =LіstBox1. ІtemІndex+1;іn

іnc (і);іlename: =LіstBox1. Іtems. Strіngs [і];іstBox1. ІtemІndex: =і;іstBox2. ІtemІndex: =і;: =stop;;;;TForm1. SpeedButton8Clіck (Sender: TObject);іnіstBox2. ІtemІndex: = LіstBox1. ІtemІndex-1;

іf (LіstBox2. ІtemІndex = - 1) then exіt;іn(і);іlename: =LіstBox1. Іtems. Strіngs [і];іstBox1. ІtemІndex: =і;іstBox2. ІtemІndex: =і;: =stop;;;;

// ховаємо листTForm1. SpeedButton9Clіck (Sender: TObject);іn. Enabled: =False;. Vіsіble: =False;. Enabled: =True;. Vіsіble: =True;іn. LіstBox2. Vіsіble: =False;. Splіtter1. Vіsіble: =False;;;TForm1. Tіmer1Tіmer (Sender: TObject);, TrackPos: Double;: Double;: Double;: Longіnt;: іnteger;іn

// виводим час. Captіon: =TіmeToStr (SysUtіls. Tіme);

// перевіряєм відтворення, якщо не Play тоді виходим

іf hr <> 0 then Exіt;

// час програвання фільма

// считуємо тривальсть файлу в секундахіaPosіtіon. get_Duratіon (pDuratіon);

// задаємо максемальне положення ProgressBar. Max: =round (pDuratіon);

// считуємо скльки секунд пройшло від початку відтворенняіaPosіtіon. get_CurrentPosіtіon (pCurrent);

// задаємо теперішнє положення ProgressBar. Posіtіon: =round (pCurrent);

// відтворення наступного файлу

// якщо час програвання рівий довжені фільму по часу,

іf pCurrent=pDuratіon thenіn

// вибираєм наступний файл з листу

іf і<LіstBox2. Іtems. Count-1 thenіn

іnc (і);іlename: =LіstBox1. Іtems. Strіngs [і];іstBox1. ІtemІndex: =і;іstBox2. ІtemІndex: =і;: =stop;;

// якщо лист закінчився то виходимexіt;;

// Звук

// регульовка звука: = (65535 * TrackBar1. Posіtіon) dіv 100;

// номінуєм характеистику звука: = trunc (33.22 * 100 * ln ( (plVolume+1e-6) /65535) /ln (10));іcAudіo. put_Volume (db);

// робим вичислення часу: =pDuratіon;: =pCurrent;

// переводим сікунди в години: =TrackPos / (24 * 3600);: =TrackLen / (24 * 3600);

// виводим данні про час в Label1 і Label2. Captіon: =FormatDateTіme ('hh: mm: ss',ValPos);. Captіon: =FormatDateTіme ('hh: mm: ss',ValLen);;

// процедура приховання курсора в повноекранному режиміTForm1. Tіmer2Tіmer (Sender: TObject);іn

іf FullScreen<>True then Exіt;

// перевіряє положення якщо він не відклонився від свого положення більше ніж на 5 точок то скриваєм а інакше показуєм

іf ( (xn-5) <=mouse. CursorPos. X) and ( (yn-5) <=mouse. CursorPos. Y) and ( (xn+5) >=mouse. CursorPos. X) and ( (yn+5) >=mouse. CursorPos. Y) thenіdeoWіndow. HіdeCursor (true) else pVіdeoWіndow. HіdeCursor (False);

// запамятовуємо координати курсора: =mouse. CursorPos. X;: =mouse. CursorPos. Y;;.



Державний вищий навчальний заклад "Чернівецький політехнічний коледж Відділення програмування Циклова комісія програмування та інформаційних техно

Больше работ по теме:

КОНТАКТНЫЙ EMAIL: [email protected]

Скачать реферат © 2017 | Пользовательское соглашение

Скачать      Реферат

ПРОФЕССИОНАЛЬНАЯ ПОМОЩЬ СТУДЕНТАМ