Онлайн-трансляції. Зробив - поділюся досвідом.
|
|
Ruskat | Дата: П`ятниця, 04.03.2016, 05:02 | Повідомлення # 1 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Вітаю, вас, шановні. Часи йдуть, а я одружився Набуваю життєвого досвіду і виховую синочка з дружиною. Ну, тобто ми з дружиною сина виховуємо ... А трохи раніше.... Був у нас такий Інтернет-провайдер, БКМ. Ну, він і зраз є... Просто раніше він був іншим, бо начальник там був інший, живий. IvOl, царство йому небесне. Так от там була маса цікавих сервісів...
- Форуми
- ФотоХостинг
- Інтернет-радіо
- Можна було свій сайт розмістити.
- Онлайн веб-камери
- ...І ще багато-багато чого.
- Але зараз, про камери лише скріни в пам'яті лишилися, бо власник змінився. І все зникло...
Такі ресурси занедбали... Так от... У мене було бажання Зробити свою трансляцію. Не через якийсь там сервіс, а щоб воно все у мене було.... І архівувало відео на вказаний період. От я на сутках, а часом камера щось цікаве "узріла". ПотрібноЗнайти сегменти того часу і зібрати в купку.... І я порившись на просторах великого і могутнього знайшов таке діло... Окрім того всього можна і ретранслювати телеканали з тою ж архівацією відео.... робиться це все за допомогою FFmpeg. По крокам....
Йдемо сюди (ресурс, що займається збірками FFmpeg) Вантажимо 32-bit або 64-bit архівчик, відповідно до розрядності ОС Windows Створюємо папку десь при корню диска. Наприклад L:\ffmpeg Туди ж "Вигрібаємо" зміст нашого архіву. Там же ж має опинися файлик ff-prompt.bat. Це командний рядок того ж FFmpeg, але його (шлях до FFmpeg) потрібно помістити у змінні оточення вінди... (Орієнтуюся по він-7) Права кнопка миші на "Мой компьютер" - Свойства - Дополнительные параметры системы - кнопка Переменные среды. Переменные среды пользователя для *Користувач*. Знаходимо параметр РАТН, двічі по ньому кляцаємо, з'явиться віконечко з написами вгорі "Имя переменной", внизу "Значение переменной". Щоб нічого не наплутати, виділяємо ВСЕ, що є в полі "Значение переменной", та вставимо його у звичайний блокнот. Я маю такий зміст: D:\Program Files\GPAC Вставляємо, наприклад так: ;L:\ffmpeg\bin і матимемо D:\Program Files\GPAC;L:\ffmpeg\bin. Потім копіюємонаше творіння з блокнота назад в поле "Значение переменной", видаляючи старий зміст. Зберігаємо. Зміни мають задіятися одразу. Викликаємо Командний рядок (cmd) та пропишемо у ньому ffmpeg. Якщо все гаразд, томає нижче з'явитися таке щось: C:\Users\Ruskat>ffmpeg ffmpeg version N-78646-g10fa50c Copyright © 2000-2016 the FFmpeg developers built with gcc 5.3.0 (GCC) . Версії будуть інші.
Для чого це робилося? Якщо Є бажання стрімити в інтернет через HLS, то з безкоштовних рішень це єдине найкраще. А тепер код...
Щоб знайти веб_камеру серед інших пристроїв, в командному рядку напишемо: ffmpeg -f dshow -list_devices true -i dummy Вивалить щось типу такого:
[dshow @ 000000000040a2a0] DirectShow video devices (some may be both video and audio devices) [dshow @ 000000000040a2a0] "DroidCam Source 3" [dshow @ 000000000040a2a0] Alternative name "@device_pnp_\\?\root#media#0000 #{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" [dshow @ 000000000040a2a0] "WebcamMax Capture" [dshow @ 000000000040a2a0] Alternative name "@device_pnp_\\?\root#media#0002 #{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" [dshow @ 000000000040a2a0] "Wirecast Virtual Camera" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{860BB310-5D01-11D0- BD3B-00A0C911CE86}\{9AB5CCFD-2B50-4AFD-A2EE-017D732E43A9}" [dshow @ 000000000040a2a0] "XSplitBroadcaster" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{860BB310-5D01-11D0- BD3B-00A0C911CE86}\{VHSplitProc}_XSplitBroadcaster_1_staticsource_VIDEO" [dshow @ 000000000040a2a0] DirectShow audio devices [dshow @ 000000000040a2a0] "╨Ы╨╕╨╜. ╨▓╤Е╨╛╨┤ (Realtek High Definit" [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\╨Ы╨╕╨╜. ╨▓╤Е╨╛╨┤ (Realtek High Definit" [dshow @ 000000000040a2a0] "XSplitBroadcaster" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\{VHSplitProc}_XSplitBroadcaster_1_staticsource_AUDIO" [dshow @ 000000000040a2a0] "Realtek Digital Input (Realtek " [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\Realtek Digital Input (Realtek " [dshow @ 000000000040a2a0] "╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (DroidCam Virtual Audi" [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (DroidCam Virtual Audi" dummy: Immediate exit requested
Зроблений в Білій Церкві | Мій домашній сайт.
|
|
| |
Ruskat | Дата: П`ятниця, 04.03.2016, 05:04 | Повідомлення # 2 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Тепер зформуємо команду (Відео БЕЗ звуку)
ffmpeg -loglevel panic -f dshow -i video="@device_pnp_\\?\root#media#0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" -c:v libx264 -preset veryfast -threads 2 -b:v 1500k -profile:v high -level 4.2 -metadata title="BB stream - Мудрого 64_2" -metadata service_provider="Ruskat A\V studio" -metadata service_name="Online camera" -g 10 -f segment -segment_list D:/cams/mudrogo_64_2/s.m3u8-segment_time 10 -segment_list_size 30240-segment_wrap 30240 D:/cams/mudrogo_64_2/s_%03d.ts -vf "fps=1/240"-y -update 1 D:/cams/mudrogo_64_2/or.jpg -vf fps=1/120-y -update 1 -s 320x180 D:/cams/mudrogo_64_2/sm.jpg Пояснення... "@device_pnp_\\?\root#media#0000#{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" або ж "DroidCam Source 3" - джерело, звідки треба брати відео. -c:v libx264 -preset veryfast -threads 2 -b:v 1500k -profile:v high -level 4.2 -metadata title="BB stream - Мудрого 64_2" -metadata service_provider="Ruskat A\V studio" -metadata service_name="Online camera" Кодувальник Н264 та параметри йому, А Також мета-теги, що можна змінити.
-f segment -segment_list D:/cams/mudrogo_64_2/s.m3u8 - Команда формувати плейлист і шлях, куди його зберігати. Такий собі список із сегментами з відео що оновлюється. Цей же ж плейлист і буде наданий плеєру для відтворення відео на веб-сторінці.
-segment_time 10 - Тривалість кожного сегменту 10 секунд. -segment_list_size 30240 - Кількість сегментів, яка має бути у m3u8 списку. -segment_wrap 30240 - Кількість сегментів, яка буде знаходитися у папці. при досягненнімежі, наприклад 30240 Файли будуть перезаписуватися по новій, циклічно. І так постійно, але з новими даними. D:/cams/mudrogo_64_2/s_%03d.ts - Шлях, де створюватимуться файли/сегменти з фактичним виглядом s_%03d.ts-s_001.ts. Тобто це як шаблон, по якому іменувати файли. розширення .*ts, це практично той же МР4, тільки позиціонується як Транспортний файл для веб-трансляцій (transport stream). -vf "fps=1/240" -y -update 1 D:/cams/mudrogo_64_2/or.jpg - Це чисто я захотів (-vf-відеофільтр). раз у 4 хвилини "відригувати" скрін з відео того ж розміру, що й відео в ту ж папку. -y -update 1 - дозволяти перезаписувати те ж саме зображення новим за вказаним інтервалом у 240 секунд. -vf fps=1/120 -y -update 1 -s 320x180 D:/cams/mudrogo_64_2/sm.jpg Той же, практично, відеофільтр, що дає задачку "відригувати",але раз на 2 хвилини зображення з розмірами 320x180 пікселів туди ж. 30240 сегментів множимо на 10 секунд = 302 400 секунд всього, або ж 84 години, або ж 4 доби. Тобто я сам встановлюю, на який термін я хочу архівувати відео.
Зроблений в Білій Церкві | Мій домашній сайт.
|
|
| |
Ruskat | Дата: П`ятниця, 04.03.2016, 05:30 | Повідомлення # 3 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Згадаємо, що нам видала команда ffmpeg -f dshow -list_devices true -i dummy
Код[dshow @ 000000000040a2a0] DirectShow video devices (some may be both video and audio devices) (Відео девайси) [dshow @ 000000000040a2a0] "DroidCam Source 3" [dshow @ 000000000040a2a0] Alternative name "@device_pnp_\\?\root#media#0000 #{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" [dshow @ 000000000040a2a0] "WebcamMax Capture" [dshow @ 000000000040a2a0] Alternative name "@device_pnp_\\?\root#media#0002 #{65e8773d-8f56-11d0-a3b9-00a0c9223196}\global" [dshow @ 000000000040a2a0] "Wirecast Virtual Camera" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{860BB310-5D01-11D0- BD3B-00A0C911CE86}\{9AB5CCFD-2B50-4AFD-A2EE-017D732E43A9}" [dshow @ 000000000040a2a0] "XSplitBroadcaster" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{860BB310-5D01-11D0- BD3B-00A0C911CE86}\{VHSplitProc}_XSplitBroadcaster_1_staticsource_VIDEO" [dshow @ 000000000040a2a0] DirectShow audio devices (Аудіо девайси) [dshow @ 000000000040a2a0] "╨Ы╨╕╨╜. ╨▓╤Е╨╛╨┤ (Realtek High Definit" [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\╨Ы╨╕╨╜. ╨▓╤Е╨╛╨┤ (Realtek High Definit" [dshow @ 000000000040a2a0] "XSplitBroadcaster" [dshow @ 000000000040a2a0] Alternative name "@device_sw_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\{VHSplitProc}_XSplitBroadcaster_1_staticsource_AUDIO" [dshow @ 000000000040a2a0] "Realtek Digital Input (Realtek " [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\Realtek Digital Input (Realtek " [dshow @ 000000000040a2a0] "╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (DroidCam Virtual Audi" [dshow @ 000000000040a2a0] Alternative name "@device_cm_{33D9A762-90C8-11D0- BD43-00A0C911CE86}\╨Ь╨╕╨║╤А╨╛╤Д╨╛╨╜ (DroidCam Virtual Audi" Обираємо джерела і конфігуруємо код зі звуком. На прикладі використано програму-відео мікшер XSplitBroadcaster. Вона дозволяє наносити дату, час, лого, написи.... Приклади покажу нижче.
Код ffmpeg -loglevel panic -f dshow -i -vcodec ayuv -i video="XSplitBroadcaster":audio="XSplitBroadcaster" -c:v libx264 -preset veryfast -threads 2 -b:v 1500k -profile:v high -level 4.2 -metadata title="BB stream - Мудрого 64_2" -metadata service_provider="Ruskat A\V studio" -metadata service_name="Online camera" -g 10 -f segment -segment_list D:/cams/mudrogo_64_2/s.m3u8 -segment_time 10 -segment_list_size 30240 -segment_wrap 30240 D:/cams/mudrogo_64_2/s_%03d.ts -vf "fps=1/240" -y -update 1 D:/cams/mudrogo_64_2/or.jpg -vf fps=1/120 -y -update 1 -s 320x180 D:/cams/mudrogo_64_2/sm.jpg Потім цей код вставляємо в командний рядок і виконуємо. Якщо все ОК, то процес піде...
Також можна зробити відео-конвертер. Бо самі розумієте, що таке відео по 10 секунд зклепати в одне, коли якась подія на хвилину, дві, 10... Створимо папку якусь, зайдемо в неї і створимо файл з назвою, наприклад conv.bat з таким змістом:
Код [color=#828282]@echo off REM Clean up any pre-existing temporary files http://www.microsoftbob.com/post/How-to-Merge-a-Folder-of-MP4-Files-with-FFmpeg.aspx if exist foobar.txt del foobar.txt REM Create a file list of individual transport streams for /f "usebackq delims=|" %%a in (`dir /b *.ts`) do ( echo file %%a>>foobar.txt ) REM Remux transport streams from the file list into merged WEBM file REM ffmpeg -f concat -i foobar.tmp -c:v libvpx-vp9 -b:v 1000K -speed 1 -bufsize 1240k -tile-columns 6 -frame-parallel 1 -an out.webm ffmpeg -f concat -i foobar.txt -metadata service_provider="Ruskat A\V studio" -c:v libvpx-vp9 -b:v 700K -speed 1 -bufsize 1024k -tile-columns 6 -frame-parallel 1 -threads 6 -an -y out.webm REM Clean up temporary files if exist foobar.txt del foobar.txt REM if exist *.ts del *.ts І накидаємо в цю ж папку сегменти з розширенням *.ts. Після цього запускаємо conv.bat двічі клікнувши по ньому. Зпочатку створиться файл foobar.txt зі списком файлів з розширенням *.ts, далі піде конвертація у новітній файл з компресором vp9 та розширенням *.webm. Чому .webm? Бо він краще зтискає і не втрачає якості. Деякі рядку закоментовані, наприклад, як видаляти *.ts після конвертації.... Якщо бажаєте зклеїти інші відео формати, то змініть *.ts на *.mp4 чи *.avi і клейте. Команда та ж, тільки зі звуком: Код @echo off REM Clean up any pre-existing temporary files http://www.microsoftbob.com/post/How-to-Merge-a-Folder-of-MP4-Files-with-FFmpeg.aspx if exist foobar.txt del foobar.txt REM Create a file list of individual transport streams for /f "usebackq delims=|" %%a in (`dir /b *.mp4`) do ( echo file %%a>>foobar.txt ) REM Remux transport streams from the file list into merged WEBM file REM ffmpeg -f concat -i foobar.tmp -c:v libvpx-vp9 -b:v 1000K -speed 1 -bufsize 1240k -tile-columns 6 -frame-parallel 1 -an out.webm ffmpeg -f concat -i foobar.txt -metadata service_provider="Ruskat A\V studio" -c:v libvpx-vp9 -deinterlace -b:v 2500K -speed 1 -bufsize 1240k -threads 6 -tile-columns 6 -frame-parallel 1 -c:a libopus -b:a 96k -y out.webm REM Clean up temporary files REM if exist foobar.txt del foobar.txt REM if exist *.ts del *.ts
Зроблений в Білій Церкві | Мій домашній сайт.
Повідомлення відредагував Ruskat - П`ятниця, 04.03.2016, 05:32 |
|
| |
Ruskat | Дата: П`ятниця, 04.03.2016, 06:00 | Повідомлення # 4 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| -c:v libvpx-vp9 -deinterlace -b:v 2500K -speed 1 -bufsize 1240k -threads 6 -tile-columns 6 -frame-parallel 1 - Кодек відео - webm - vp9 -c:a libopus -b:a 96k -y out.webm - Кодек аудіо - Теж новітній - *.opus - Краща якість при меньшому розмірі. Також можна погратися з бітрейтом відео -b:v 2500K. 1280*720 при бітрейті 1000 кб/с не погано виглядають... Звук -b:a 96k можна і на 56 кб/с норм слухати. Банальний конвертер з *.avi у *.webm
Код ffmpeg -i D:/papka/file.avi -metadata service_provider="--" -c:v libvpx-vp9 -deinterlace -b:v 2500K -speed 1 -bufsize 1240k -threads 6 -tile-columns 6 -frame-parallel 1 -c:a libopus -b:a 96k -y D:/papka/out.webm Ну, а ось мої результати. Доречі, це все крутиться на моєму сервері, що вмене вдома. Задовбався по хостингах лазити. Купив домен в зоні *.nl і назвав 7rs На камерах архів на 3 дні та 12 годин... Що встиг "впіймати".... </a>
Зроблений в Білій Церкві | Мій домашній сайт.
Повідомлення відредагував Ruskat - П`ятниця, 04.03.2016, 06:01 |
|
| |
Viktor | Дата: Субота, 05.03.2016, 18:09 | Повідомлення # 5 |
Генерал-майор
Група: Адміністратор
Повідомлень: 1983
« 11 »
Країна:
Статус:
| Жаль, что в Ставище нет веб-камер. А точнее нет веб-камер онлайн в реальном времени.
Санкт-Петербург
|
|
| |
Ruskat | Дата: Субота, 26.03.2016, 13:30 | Повідомлення # 6 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Так, прикро, але, якщо є хоча б камери, то все можна організувати.
Зроблений в Білій Церкві | Мій домашній сайт.
|
|
| |
Ruskat | Дата: Субота, 17.03.2018, 17:18 | Повідомлення # 7 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Всіх вітаю!!! Ну що там з камерами в Ставищах? Є бажаючи транслювати? Реал ІР не треба. Й до того ж... А ніякими законопроектами чи чим там не передбачається встановлення камер?
Зроблений в Білій Церкві | Мій домашній сайт.
Повідомлення відредагував Ruskat - Субота, 17.03.2018, 22:00 |
|
| |
Viktor | Дата: Неділя, 18.03.2018, 11:06 | Повідомлення # 8 |
Генерал-майор
Група: Адміністратор
Повідомлень: 1983
« 11 »
Країна:
Статус:
| Цитата Ruskat ( ) Ну що там з камерами в Ставищах?
Камеры то поставили (https://www.facebook.com/groups/StavyshcheStable/search/?query=камер), только вот транслировать он-лайн ни кто не собирается.
Санкт-Петербург
|
|
| |
Ruskat | Дата: Неділя, 18.03.2018, 12:45 | Повідомлення # 9 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Viktor, то то скоріше не для всіх, а лише для певних спостерігачів. А треба так, як на Майдані - щоб всі бачили.
Зроблений в Білій Церкві | Мій домашній сайт.
|
|
| |
Viktor | Дата: Неділя, 18.03.2018, 14:02 | Повідомлення # 10 |
Генерал-майор
Група: Адміністратор
Повідомлень: 1983
« 11 »
Країна:
Статус:
| Ruskat, пока, к сожалению, камер с просмотром нет и похоже, что не предвидится.
Санкт-Петербург
|
|
| |
Ruskat | Дата: Субота, 07.04.2018, 00:42 | Повідомлення # 11 |
Сержант
Група: VIP-користувач
Повідомлень: 49
« 3 »
Країна:
Статус:
| Доброї пори доби, панове Ставищани! А взагалі, як ви думаєте, чи потрібна в Ставищах хоч десь онлайн-камера? Найкраще вона пасуватиме там, де є інтернет :-)
Зроблений в Білій Церкві | Мій домашній сайт.
|
|
| |