Онлайн-трансляції. Зробив - поділюся досвідом. - Форум
Субота, 10.12.2016, 06:57
Нове на сайті Головна Реєстрація Вхід
Вітаю Вас, Гість · RSS
Оновити Нові повідомлення · Особисті повідомлення Особисті повідомлення() · Відомості про учасників форумуУчасники · Читаємо правила форумуПравила форуму · Знайти на форуміПошук · Підписатися на отримання новинRSS · Тільки для VIP-користувачівПриватний форум ]
Сторінка 1 з 11
Форум » Молодіжний форум » Моє хоббі » Онлайн-трансляції. Зробив - поділюся досвідом. (Як зробити онлайн трансляцію з веб-камери, та ретрансляцію)
Онлайн-трансляції. Зробив - поділюся досвідом.
RuskatДата: П`ятниця, 04.03.2016, 05:02 | Повідомлення # 1
Лейтенант
Група: VIP-користувач
Повідомлень: 62
« 3 »
Країна: Україна
Статус: :-(
Вітаю, вас, шановні. Часи йдуть, а я одружився  biggrin Набуваю життєвого досвіду і виховую синочка з дружиною. Ну, тобто ми з дружиною сина виховуємо  biggrin ...
А трохи раніше....
Був у нас такий Інтернет-провайдер, БКМ. Ну, він і зраз є... Просто раніше він був іншим, бо начальник там був інший, живий. IvOl, царство йому небесне. Так от там була маса цікавих сервісів... 
  • Форуми
  • ФотоХостинг
  • Інтернет-радіо
  • Можна було свій сайт розмістити.
  • Онлайн веб-камери
  • ...І ще багато-багато чого.
  • Але зараз, про камери лише скріни в пам'яті лишилися, бо власник змінився. І все зникло...

Такі ресурси занедбали...  sad
Так от... У мене було бажання Зробити свою трансляцію. Не через якийсь там сервіс, а щоб воно все у мене було.... І архівувало відео на вказаний період. От я на сутках, а часом камера щось цікаве "узріла". ПотрібноЗнайти сегменти того часу і зібрати в купку.... І я порившись на просторах великого і могутнього знайшов таке діло... Окрім того всього можна і ретранслювати телеканали з тою ж архівацією відео....
робиться це все за допомогою 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-користувач
    Повідомлень: 62
    « 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-користувач
    Повідомлень: 62
    « 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-користувач
    Повідомлень: 62
    « 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  biggrin На камерах архів на 3 дні та 12 годин...
    Що встиг "впіймати"....
    </a>


    Зроблений в Білій Церкві | Мій домашній сайт | Велопортал.

    Повідомлення відредагував Ruskat - П`ятниця, 04.03.2016, 06:01
     
    ViktorДата: Субота, 05.03.2016, 18:09 | Повідомлення # 5
    Генерал-майор
    Група: Модератор
    Повідомлень: 1466
    « 10 »
    Країна: Російська Федерація
    Статус: :-(
    Жаль, что в Ставище нет веб-камер. А точнее нет веб-камер онлайн в реальном времени.

    Санкт-Петербург
     
    RuskatДата: Субота, 26.03.2016, 13:30 | Повідомлення # 6
    Лейтенант
    Група: VIP-користувач
    Повідомлень: 62
    « 3 »
    Країна: Україна
    Статус: :-(
    Так, прикро, але, якщо є хоча б камери, то все можна організувати.

    Зроблений в Білій Церкві | Мій домашній сайт | Велопортал.
     
    Форум » Молодіжний форум » Моє хоббі » Онлайн-трансляції. Зробив - поділюся досвідом. (Як зробити онлайн трансляцію з веб-камери, та ретрансляцію)
    Сторінка 1 з 11
    Пошук: