Сап, аноны. Я знаю, что среди вас есть гуру ffmpeg и кодирования, поэтому прошу помощи в сложной задачке, которую хотелось бы решить.Исходные данные таковы: есть два компа в одной локалке. С компа 1 нужно стримить экранный видеопоток на комп 2, на котором запущен RTMP сервер, причём делать это с минимальной нагрузкой на комп 1. На компе 1 установлена Windows XP, и нет возможности это поменять, поэтому всякие OBS и прочее подобное отлетает сразу.Я пробовал стримить ffmpeg'ом напрямую на RTMP сервер, это работает, но при этом загрузка процессора на первом компе достигает 70-80% (из-за того, что видео кодируется в x264 перед передачей). При этом если стримить на тот же самый сервер поток, который не надо кодировать - загрузки процессора практически нет. Из-за этого у меня родилась совершенно логичная мысль - а что если гнать без всякого сжатия по сети (гигабит всё же) видеопоток, и пережимать его уже на втором компе? Ведь ffmpeg поддерживает tcp стримы, и может их слушать. Но вот именно в этом месте я и застрял. Я запускаю на втором компе ffmpeg, который слушает порт, потом запускаю поток на первом компе. И получаю ошибки пикрелейтед (первый скрин с компа 1, второй - с компа 2).Внимание, вопрос - как это победить? Как передать несжатый видеопоток через ffmpeg'овский tcp стрим? Пробовал включать опции 'analyzeduration' и 'probesize' - эффекта никакого.
>>1674123 (OP)Ты даже параметры не показал, с которыми запускаешь.
>>1674123 (OP)>>1674129Да совсем уже голова закипела, забыл. Прошу прощения.Комп 2 (который слушает)ffmpeg -f rawvideo -i tcp://172.17.9.2:15969?listen=1 -vcodec libx264 -r 25 -acodec libmp3lame -b:a 128k -f flv "rtmp://172.17.9.2:1935/"Комп 1 (который передает)ffmpeg -f dshow -i video="screen-capture-recorder" -c copy -f rawvideo tcp://172.17.9.2:15969
>>16741362516620 /1024 /1024 = 2,4 чуть-чуть не влезает
>>1674156Да это там уже хуйня полная. Я попробовал уже гнать по tcp самый обычный видеофайл с заранее определенным форматом (а не rawvideo) - всё равно не работает.
>>1674162>с заранее определенным форматомДавай скрыны с руганью. Пока подозрения на слабость 1-го комплюктера и относительную узость канала
>>1674172Сейчас закрыл все окошки командной строки, открыл заново, вбил команды - и о чудо, оно работает. Впрочем, особой радости оно мне не принесло - даже при ограничении в 10 кадров в секунду битрейт радостно несется к 700-800 мегабитам. А там уже и роутеру начинает становиться немного тяжеловато, да и комп такой сетевой поток тоже переваривает с некоторым трудом. Короче говоря, затею надо считать провальной. Без предварительного кодирования на первом компе вряд ли что-то выйдет дельное, выдающее хотя бы 25-30 фпс. А с одновременным кодированием на первом компе работать не получится.
>>1674215Ожидаемо. Попробуй другие кодеки. Или покрути профили 264-го. Эдакая прекомпрессияА дожимать до приемлемого минимума - на втором ~780 Мб фактически вхолостую - некоторый перебор
>>1674252WebM'ы там всякие... Кстати, WMV в статику охуенно тащит. Правда, не знаю про поддержку потокового вещания и его ffmpeg'ом
Утро, свежая голова - и проблема вроде бы таки решена. Решил использовать mpeg2video - и оно работает. Загрузка процессора на XP - 10-15%. Уже хороший результат. Может быть ещё лучше смогу сделать.
>>1674123 (OP)А обязательно в 264? Почему бы не попробовать в mpeg2, всяко меньше сырого потока, но менее затратно для процессора. По крайне мере у меня поток с такими параметрами MPEG2 Video 720x576 (16:9) 25fps 4200kbps дает скорость потока 3,5 Мбит/сек. Правда и поток у меня идет UDP мультикастом в отдельной VLAN на нормальном коммутаторе. Поток спокойно транскодируется из mpeg4 на i5-4670 и загружает процессор не более 5%, думаю хватит даже старенького c2d для подобной задачи.
>>1674492А я так и сделал, читай предыдущий пост. В 264 я его уже кодирую на машине с 7, там загрузка не важна. А на XP хватаю в mpeg2. И оно работает вполне прилично.
>>1674493Не обновил тред перед отправкой поста, лол.
>>1674491Лучше уже скорее нет. Оставляй так.
ОП снова тут, есть ещё вопросец по ffmpeg. Пытаюсь с rtmp писать стрим в файлы, разделяя по времени их.Вот примерно так: ffmpeg -i rtmp://192.168.16.82:1935 -f segment -strftime 1 -segment_time 10 -segment_format avi E:\record\CAM1_%Y-%m-%d_%H-%M-%S.aviФвйлы создаются, видео пишется, но с ошибкой. Первый файл создается нормально (идёт 10 секунд). Второй файл создается и имеет длину 20 сек, но из них первые 10 секунд - статичная картинка. Третий файл имеет длину 30 сек, первые 20 - тоже самое, и так далее. Есть ли фикс для этого?
>>1676583-reset_timestamps 1 на выходе.
>>1676687Ты охуенен. Заработало сразу. Спасибо большое, анон.