Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Компьютеры » Цифровое изображение » Видеостриминг с помошью ffmpeg

Модерирует : GoodCos13, xy, Maz

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Всем привет.
 
Пытаюсь организовать захват с Blackmagic Decklink и вещание его в сеть на медиасервер(wowza/linux) с помошью ffmpeg по UDP (контейнер mpegts)
Железо Intel Xeon X5650x2, 6Gb RAM; cистема Windows7 x64
 
ffmpeg Запускается вот таким батником

Код:
set INPUTOPTS=-re -f dshow -pix_fmt uyvy422 -s 1920x1080 -r 25 -i video="Decklink Video Capture":audio="Decklink Audio Capture" -ac 2 -ar 48000
 
set FFMPEGOPTS=-loglevel verbose -threads 0 -rtbufsize 1G -report
 
set AUDIO=-af aresample=44100 -acodec libvo_aacenc -ab 64000 -ar 44100 -ac 2
 
set LOGO=-vf "movie=logo_new_1920x1080_169.png [wm];[in][wm] overlay=0:0 [out]"
 
set HIGHOPTS=%LOGO% -vcodec libx264 -pix_fmt yuv420p -profile:v baseline -s 1280x720 -vb 4000k -x264opts no-scenecut:no-cabac:level=31:keyint=25:fps=25:partitions=none:no-8x8dct:ref=5:dct-decimate:vbv_maxrate=4000:vbv_bufsize=9000:interlaced=0 -aspect 16:9 %AUDIO%
 
set MIDOPTS=-vcodec libx264 -profile:v baseline -s 640x360 -vb 1024k -x264opts level=31:keyint=25:fps=25:vbv_maxrate=1024:vbv_bufsize=1024 -aspect 16:9 -q:v 0 -c:a copy
 
set LOWOPTS=-vcodec libx264 -profile:v baseline -s 320x180 -vb 256k -x264opts level=31:keyint=25:fps=25:vbv_maxrate=256:vbv_bufsize=256 -aspect 16:9 -q:v 0 -c:a copy
 
ffmpeg.exe %FFMPEGOPTS% %INPUTOPTS% %HIGHOPTS% -f mpegts - | ffmpeg %FFMPEGOPTS% -f mpegts -i - -c copy -f mpegts "udp://192.168.55.6:10193" -c copy -f mpegts "udp://192.168.55.26:10193" %MIDOPTS% -f mpegts "udp://192.168.55.6:10191" %MIDOPTS% -f mpegts "udp://192.168.55.26:10191" %LOWOPTS% -f mpegts "udp://192.168.55.6:10192" %LOWOPTS% -f mpegts "udp://192.168.55.26:10192"

 
Качества %LOWOPTS% и %MIDOPTS% стримятся без проблем. А вот с %HIGHOPTS% проблема - такое ошущение что по дороге пакеты теряются. Картинка раз в 7-10 секундр распадаётся на пиксели.
Пробовал играться с параметрами UDPстримига. Изменял buffer_size, pkt_size, fifo_size - но улучшить не удаётся(только сделать хуже =))
 
Также пробовал стримить с такими-же параметрами через VLC - проблем не возникает.
ПРобовал стримить с такими же параметрами, но через rtmp - всё круто и здорово, без лагов и распадания картинки(ну это понятно - tcp). Но вещать по rtmp - не вариант.
Какие параметры ещё можно покрутить?
 
Версия ffmpeg
ffmpeg.exe
ffmpeg version N-50911-g9efcfbe Copyright (c) 2000-2013 the FFmpeg developers
built on Mar 13 2013 21:26:48 with gcc 4.7.2 (GCC)
configuration: --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfi
bcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmp3lame --enable-libopencore-amrnb --enable-libo
bschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvo-aacenc --enable-l
vs --enable-libxvid --enable-zlib
libavutil 52. 19.100 / 52. 19.100
libavcodec 55. 0.100 / 55. 0.100
libavformat 55. 0.100 / 55. 0.100
libavdevice 54. 4.100 / 54. 4.100
libavfilter 3. 45.103 / 3. 45.103
libswscale 2. 2.100 / 2. 2.100
libswresample 0. 17.102 / 0. 17.102
libpostproc 52. 2.100 / 52. 2.100

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 19:09 22-03-2013
amnon10



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
pkt_size=1316 пробовал?
Не совсем понятно, что значит "распадаётся на пиксели"...
Но как вариянт, может не хватать битрейта, попробуй убрать ограничение в 4000к
 
Добавлено:
Наверное здесь уместно спросить....
 
Может кто нибудь пробовал использовать патчи decklink indev/outdev для ffmpeg в линуксе?

Всего записей: 85 | Зарегистр. 23-04-2003 | Отправлено: 23:08 04-07-2013
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Может кто нибудь пробовал использовать патчи decklink indev/outdev для ffmpeg в линуксе?

у меня вообще не получилось заставить работать DecklinkDuo и ffmpeg в линуксе =(
 

Цитата:
pkt_size=1316 пробовал?  

да
 
 

Цитата:
Не совсем понятно, что значит "распадаётся на пиксели"...  

позже кину скриншот

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 14:53 09-07-2013
amnon10



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Я перекопал в этом направлении уже весь и-нет.
Самой простой вариант тут
https://github.com/lu-zero/bmdtools
 
Но стримить через пайп проблема (в моем случае)
 
Из маил листов ffmpeg-devel нарыл 2 патча ин/аут
В принципе все настроил и вроде все хорошо работает но есть пару ньюнсов, которые портят все дело...

Всего записей: 85 | Зарегистр. 23-04-2003 | Отправлено: 15:57 09-07-2013
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Самой простой вариант тут
https://github.com/lu-zero/bmdtools

Именно этот вариант с Duo карточкой не взлетел =(

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 19:34 31-07-2013
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
Не совсем понятно, что значит "распадаётся на пиксели"...

http://img-fotki.yandex.ru/get/9507/24945529.3d/0_9ec2d_59f1b50d_orig

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 00:18 20-08-2013 | Исправлено: rogat1y, 00:19 20-08-2013
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
попробуй убрать ограничение в 4000к  

не могу... стриминг в интернеты. и надо регулировать максимальный битрейт.

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 17:25 24-08-2013
amnon10



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
Похоже на пакетлос..
мне кажется проблема в этих настрийках:
vbv_maxrate=4000:vbv_bufsize=9000
Реально у тебя может быть затребовано больше битрейта чем 4000к  
тем более у тебя keyint=25
И опытным путем я заметил что опция -vb в кодеке x264 не ограничивает битрейт
и если трафик жестко режется то ты получаешь пакет лос.
Попробуй поставить vbv_bufsize=2000 к примеру
изменится ли картина

Всего записей: 85 | Зарегистр. 23-04-2003 | Отправлено: 17:33 25-08-2013
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
блин.. не в энкодере похоже проблемы...
 
запустил на том же сервере, где стоит wowza, ffmpeg на прослушку udp порта и запушил туда поток.... никаких артефактов не обнаружено.

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 16:21 26-08-2013
cbah

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
всем привет. растолкуйте, пжста, неучу...
суть проблемы: имеется аудиокнига, 200 файлов мп3, с длинными именами, кучей метатегов, картинкой внутри кажного мп3 и большим битрейтом. пробовал пережать их в пакетном режиме с помощью ffmpeg.exe для сотового телепона в мп3 же, но с битрейтом 64 кб/с, убиранием метаданных вот таким макаром:
for %%a in ("*.mp3") do ffmpeg.exe -i "%%a" -acodec libmp3lame -ab 64k -ar 44100 -map_metadata -1 -y "%%~na_.mp3"
получилось здорово, все качественно пережалось, убрались все метатеги, но есть два нерешенных вопроса:
1. в сотовом телепоне с маленьким экраном длинные имена файлов раздражают. как при пакетном пережатии выставить в ffmpeg новые короткие имена файлов, можно даже три цифры: 001.mp3, 002.mp3 и т.д.?
2. как при пакетном пережатии в ffmpeg убрать встроенную в кажинный мп3 картинку?
хотелось бы решить эти два вопроса средствами ffmpeg. заранее благодарю.

Всего записей: 498 | Зарегистр. 13-11-2007 | Отправлено: 17:51 16-05-2015 | Исправлено: cbah, 18:14 16-05-2015
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
cbah
 
1. заведи к цикле переменную-счетчик и именуй файлы по этой переменной
 
2. http://stackoverflow.com/questions/20193065/how-to-remove-id3-audio-tag-image-with-ffmpeg

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 17:38 18-05-2015
cbah

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
rogat1y
эх, вам тут все просто. заведи... цикл... а я неуч. напиши, пожалуйста, если не влом, всю строчку для ффмпег.ехе для переименования мп3, а? я раньше с ффмпег встречался только через графические оболочки под виндовс... а по твоей ссылке я уже ходил раньше, оттуда и взял ключ -map_metadata -1, но он у меня почему-то не убирает картинку из мп3.

Всего записей: 498 | Зарегистр. 13-11-2007 | Отправлено: 13:38 19-05-2015 | Исправлено: cbah, 13:47 19-05-2015
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
cbah
 

Код:
@echo off
 
set /a n=1
 
setlocal EnableDelayedExpansion
 
for %%a in ("*.mp3") do (
ffmpeg.exe -i "%%a" -acodec libmp3lame -ab 64k -ar 44100 -map 0 -map_metadata 0:s:0 -y "!n!.mp3"  
set /a n=n+1
)
 

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 13:50 19-05-2015 | Исправлено: rogat1y, 13:51 19-05-2015
cbah

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
спасибо, rogat1y, мне получшело. только можно написать имена пережатых файлов в формате 001.мп3, 002.мп3 а не 1.мп3, 2.мп3? и еще. как же все-таки убрать картинку из каждого файла средствами ффмпег.ехе? я так и не разобрался...

Всего записей: 498 | Зарегистр. 13-11-2007 | Отправлено: 14:04 20-05-2015
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору
cbah
 
-map 0 -map_metadata 0:s:0 не помогает?
 
 

Код:
 
@echo off
 
set /a n=1
 
setlocal EnableDelayedExpansion
 
for %%a in ("*.mp3") do (
SET m=00!n!
SET m=!m:~-4!
 
ffmpeg.exe -i "%%a" -acodec libmp3lame -ab 64k -ar 44100 -map 0 -map_metadata 0:s:0 -y "!m!.mp3"  
set /a n=n+1
)  
 

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 14:24 20-05-2015
cbah

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
не, почему-то не помогает -map 0 -map_metadata 0:s:0 ... название меняется, как надо, только в имени еще два пробела после цифр добавляются.
 
Добавлено:
в моем коде помогают kлючи -vn и -map 0:a:
 
for %%a in ("*.mp3") do ffmpeg.exe -i "%%a" -map 0:a -acodec libmp3lame -ab 64k -ar 44100 -map_metadata -1 -y "%%~na_.mp3"  
for %%a in ("*.mp3") do ffmpeg.exe -i "%%a" -vn -acodec libmp3lame -ab 64k -ar 44100 -map_metadata -1 -y "%%~na_.mp3"  
 
только имя не меняется...
 
в твоем втором коде помогает только -vn:
 
@echo off  
   
set /a n=1  
   
setlocal EnableDelayedExpansion  
   
for %%a in ("*.mp3") do (  
SET m=00!n!  
SET m=!m:~-4!  
 
ffmpeg.exe -i "%%a" -vn -acodec libmp3lame -ab 64k -ar 44100 -map 0 -map_metadata 0:s:0 -y "!m!.mp3"    
set /a n=n+1  
)
 
и в имени тоже два пробела после цифр добавляются.
 
а в первом коде ниче не помогает...
 
а это плохо -vn и -map 0:a?

Всего записей: 498 | Зарегистр. 13-11-2007 | Отправлено: 14:58 20-05-2015 | Исправлено: cbah, 15:53 20-05-2015
rogat1y



Junior Member
Редактировать | Профиль | Сообщение | ICQ | Цитировать | Сообщить модератору

Цитата:
и в имени тоже два пробела после цифр добавляются.  

смотри чтобы после строчек
SET m=00!n!
SET m=!m:~-4!
небыло пробелов

Всего записей: 32 | Зарегистр. 15-09-2007 | Отправлено: 15:54 20-05-2015
cbah

Full Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
ура, все получилось. с -vn. пробелы были. спасибо.

Всего записей: 498 | Зарегистр. 13-11-2007 | Отправлено: 15:59 20-05-2015
DrSqaer



Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
друзья можно я вклинюсь, есть базовое видео которое крутиться всегда и транслируется мельтикастом на мониторы с android box, но нужно сделать вставки актуальных предложений в заданные промежутки времени приостанавливая трансляцию основного контента и после окончания трансляции вставки продолжать трансляцию. Как (возможно ли) это реализовать на ffmpeg?
Заранее благодарю за ответы!

Всего записей: 171 | Зарегистр. 16-01-2006 | Отправлено: 17:44 08-09-2015
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Компьютеры » Цифровое изображение » Видеостриминг с помошью ffmpeg


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru