LINUX.ORG.RU

Сообщения magrega

 

ошибки при трансляции сложных кадров в ffmpeg

Всем привет. Вкратце ситуация такова: занимаюсь трансляциями на небольшой сервер, который смотрит не больше 700 человек. До лета 2020 года я стримил на флэше и проблем не испыватал, сейчас от флеша ушел и стримлю через hls и dash. Сегменты на сервер посылаю с помощью ffmpeg. Проблема в том, что во время стрима, если я показываю статичные картинки, слайды например, то проблем нет, вещание идет, все хорошо, но если я вывожу например скайп с лекторами, где они оба на экране разговаривают, лог покрывается ошибками о перегрузе буфера и эфир начинает зависать, пока я не выведу опять статичную картинку.

Вот часть лога с ошибками:

[dshow @ 0000000000614140] real-time buffer [e2eSoft VCam (WDM)] [video input] too full or near too full (64% of size: 100000000 [rtbufsize parameter])! frame dropped!

dshow passing through packet of type video size   921600 timestamp 249911910000 orig timestamp 249911910221 graph timestamp 249911910000 diff -221 e2eSoft VCam (WDM)
dshow passing through packet of type video size   921600 timestamp 249912310000 orig timestamp 249912310297 graph timestamp 249912310000 diff -297 e2eSoft VCam (WDM)
dshow passing through packet of type video size   921600 timestamp 249912710000 orig timestamp 249912709992 graph timestamp 249912710000 diff 8 e2eSoft VCam (WDM)
dshow passing through packet of type video size   921600 timestamp 249913110000 orig timestamp 249913110025 graph timestamp 249913110000 diff -25 e2eSoft VCam (WDM)
dshow passing through packet of type video size   921600 timestamp 249913510000 orig timestamp 249913510028 graph timestamp 249913510000 diff -28 e2eSoft VCam (WDM)
dshow passing through packet of type video size   921600 timestamp 249913910000 orig timestamp 249913910366 graph timestamp 249913910000 diff -366 e2eSoft VCam (WDM)
[dshow @ 0000000000614140] real-time buffer [e2eSoft VCam (WDM)] [video input] too full or near too full (64% of size: 100000000 [rtbufsize parameter])! frame dropped!
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
[libx264 @ 0000000000678980] frame=119801 QP=1.62 NAL=2 Slice:P Poc:24  I:0    P:121  SKIP:1079 size=952 bytes
frame=119802 fps= 25 q=0.0 size=  274701kB time=01:19:52.96 bitrate= 469.5kbits/s dup=0 drop=1 speed=   1x    
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
dshow passing through packet of type video size   921600 timestamp 249914380000 orig timestamp 249914310064 graph timestamp 249914380000 diff 69936 e2eSoft VCam (WDM)
[libx264 @ 0000000000678980] frame=119802 QP=1.12 NAL=2 Slice:P Poc:26  I:303  P:581  SKIP:316  size=126402 bytes
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
dshow passing through packet of type video size   921600 timestamp 249914710000 orig timestamp 249914710087 graph timestamp 249914710000 diff -87 e2eSoft VCam (WDM)
[libx264 @ 0000000000678980] frame=119803 QP=1.12 NAL=2 Slice:P Poc:28  I:42   P:808  SKIP:350  size=91743 bytes
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
dshow passing through packet of type video size   921600 timestamp 249915110000 orig timestamp 249915110103 graph timestamp 249915110000 diff -103 e2eSoft VCam (WDM)
[libx264 @ 0000000000678980] frame=119804 QP=1.12 NAL=2 Slice:P Poc:30  I:485  P:400  SKIP:315  size=133739 bytes
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
[libx264 @ 0000000000678980] frame=119805 QP=1.13 NAL=2 Slice:P Poc:32  I:30   P:783  SKIP:387  size=83133 bytes
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large
[libx264 @ 0000000000678980] frame=119806 QP=1.42 NAL=2 Slice:P Poc:34  I:0    P:268  SKIP:932  size=2152 bytes
[rawvideo @ 000000000067a4c0] PACKET SIZE: 921600, STRIDE: 1920
Past duration 0.656242 too large

Я пытался увеличивать -rtbufsize 100M до 150мб, но дело это не поменяло. Прикладываю файл настроек, на случай, если он поможет прояснить дело.

<?php
// переход director на 960x720 раскоментить

$hdready = false;
$fps = 25;
$archive = in_array('archive', $argv);

define('ffmpeg', 		'c:/ffmpeg/bin/ffmpeg.exe');
define('local_param', 	''); // '-r 25'
//-crf 8 
//-qp 8 
//-force_key_frames expr:gte(t,n_forced*3) 
//-preset fast -tune zerolatency 
//-g 50 -keyint_min 50 
//-x264-params keyint=75:scenecut=0
define('codec_param',	'-c:v libx264 -preset fast -tune zerolatency -profile:v baseline -level:v 3.0 -b:v 448k -c:a aac -profile:a aac_low -b:a 64k -g '.($fps*2).' -pix_fmt yuv420p');
define('codec_archive', '-c:v libx264 -preset fast -profile:v main -c:a aac -pix_fmt yuv420p');
define('remote_dest',	'rtmp://*************');
define('local_dest',	strtr(__DIR__, array("\\"=>'/')).'/archive-'.date('Y-m-d-H-i-s').'.mp4');

//-x264-params min-keyint=24
//-c:a libfdk_aac
//-codecs
//-pix_fmts
/*
$encode .= ' -f tee';
if (false !== $video) $encode .= ' -map 0:v';
if (false !== $audio) $encode .= ' -map 0:a';
$encode .= ' -use_fifo true -fifo_options "drop_pkts_on_overflow=1:attempt_recovery=1:recovery_wait_time=1" "';
$encode .= '[onfail=ignore:f=flv]'.remote_dest;
$encode .= '|[onfail=ignore]'.local_dest;
$encode .= '"';
*/

ob_start();
passthru(ffmpeg.' -list_devices true -f dshow -i dummy 2>&1');

$ss = ob_get_contents();
ob_end_clean();

$keyboard=fopen("php://stdin","r");

$dev_a = array();
$dev_v = array();
$type = null;
foreach(explode("\n", $ss) as $s) {
	$s = trim($s);
	if ('' != $s) {
		if (false !== strpos($s, 'video devices')) {
			$type = 'v';
		}
		else if (false !== strpos($s, 'audio devices')) {
			$type = 'a';
		}
		elseif (null !== $type) {
			$p = strpos($s, ']  "');
			if (false !== $p) {
				$name = substr($s, $p+4, -1);
				if ('a' == $type) {
					$dev_a[] = $name;
				}
				else {
					$dev_v[] = $name;
				}
			}
		}
	}
}

$video = false;
if ($dev_v) {
	foreach($dev_v as $i=>$name) {
		echo '['.$i.'] '.$name."\n";
	}
	for(;;) {
		echo 'Select video: ';
		$key = fgets($keyboard);
		if ('' == $key) break;
		$key = intval($key);
		if (isset($dev_v[$key])) {
			$video = $key;
			break;
		}
	}
}

$audio = false;
if ($dev_a) {
	foreach($dev_a as $i=>$name) {
		echo '['.$i.'] '.$name."\n";
	}
	for(;;) {
		echo 'Select audio: ';
		$key = fgets($keyboard);
		if ('' == $key) break;
		$key = intval($key);	
		if (isset($dev_a[$key])) {
			$audio = $key;
			break;
		}
	}
}

$encode = ffmpeg;
if (false !== $video) $encode .= ' -f dshow -rtbufsize 100M -video_size '.($hdready ? '960x720' : '640x480').' -framerate '.$fps.' -i video="'.$dev_v[$video].'"';
if (false !== $audio) $encode .= ':audio="'.$dev_a[$audio].'"';
$encode .= ' '.local_param;
if ($hdready) $encode .= ' -vf scale=960:720,setsar=4/3,setdar=4/3';
if ($archive) {
	$encode .= ' '.codec_archive;
	$encode .= ' '.local_dest;
}
else {
	$encode .= ' -report '.codec_param;
	$encode .= ' -f fifo -fifo_format flv -map 0:v -map 0:a -drop_pkts_on_overflow 1 -attempt_recovery 1 -recovery_wait_time 1';
	$encode .= ' -f flv "'.remote_dest.'"'; //  live=1
}
echo "\n{$encode}\n";

echo "\n\nStart encoding... <q>-stop \n\n";
passthru($encode);

echo "\n\nDone. Press any key...";
shell_exec('pause');

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

Лог

 , ,

magrega ()

не могу залогиниться в postfix

Всем привет. Продолжаю осваивать дебиан и сейчас делаю свою почту. Проблема в том, что вроде бы все сделал, установил postfix и dovecot, установил thunderbird, но никак не могу зайти в почту, хотя вроде как логин с паролем верные. Делал все по данному гиду:

гид

Единственное, что когда создавал пароль для аккаунта в mysql, зашифровал его в мд5, хотя по гиду там

INSERT INTO virtual_users (`id`, `domain_id`, `email`, `password`)
  VALUES (1, 1, 'mail@eax.me',
    ENCRYPT('s3cr3t', CONCAT('$6$', SUBSTRING(SHA(RAND()), -16))));

который не поддерживается. Когда понял, что не могу залогиниться, вообще убрал шифровку, вручную вбив в таблицу нужный пароль через phpadmin, но залогиниться так и не получается. Не понимаю, в чем проблема. По логам тоже неясно, пишет, мол, ошибка авторизации, но конкретики нет никакой.

Jul 15 00:04:22 debiantryout postfix/master[5337]: daemon started -- version 3.4.10, configuration /etc/postfix
Jul 15 00:04:27 debiantryout dovecot: master: Warning: Killed with signal 15 (by pid=5343 uid=0 code=kill)
Jul 15 00:04:28 debiantryout dovecot: master: Dovecot v2.3.4.1 (f79e8e7e4) starting up for imap, lmtp (core dumps disabled)
Jul 15 00:05:35 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 17 secs): user=<alexp@magrega.ru.eu.org>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=</D8cKm2qJIV/AAAB>
Jul 15 00:06:07 debiantryout dovecot: imap-login: Aborted login (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<CLYNLW2qQoV/AAAB>
Jul 15 00:06:07 debiantryout dovecot: imap-login: Aborted login (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<+0cOLW2qRIV/AAAB>
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: connect from localhost[127.0.0.1]
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: improper command pipelining after EHLO from localhost[127.0.0.1]: QUIT\r\n
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: disconnect from localhost[127.0.0.1] ehlo=1 quit=1 commands=2
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: connect from localhost[127.0.0.1]
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: lost connection after CONNECT from localhost[127.0.0.1]
Jul 15 00:06:07 debiantryout postfix/smtpd[5585]: disconnect from localhost[127.0.0.1] commands=0/0
Jul 15 00:06:34 debiantryout postfix/smtpd[5585]: connect from localhost[127.0.0.1]
Jul 15 00:06:34 debiantryout postfix/smtpd[5589]: connect from localhost[127.0.0.1]
Jul 15 00:06:34 debiantryout postfix/smtpd[5585]: improper command pipelining after EHLO from localhost[127.0.0.1]: QUIT\r\n
Jul 15 00:06:34 debiantryout postfix/smtpd[5585]: disconnect from localhost[127.0.0.1] ehlo=1 quit=1 commands=2
Jul 15 00:06:34 debiantryout postfix/smtpd[5589]: disconnect from localhost[127.0.0.1] ehlo=1 quit=1 commands=2
Jul 15 00:06:34 debiantryout dovecot: imap-login: Aborted login (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<bieoLm2qYoV/AAAB>
Jul 15 00:06:34 debiantryout dovecot: imap-login: Aborted login (no auth attempts in 0 secs): user=<>, rip=127.0.0.1, lip=127.0.0.1, secured, session=<RUuoLm2qZIV/AAAB>
Jul 15 00:08:19 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 17 secs): user=<alexp>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<v7joM22qboV/AAAB>
Jul 15 00:08:58 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 23 secs): user=<alexp@magrega.ru.eu.org>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<ZEHkNW2qdIV/AAAB>
Jul 15 00:09:52 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 17 secs): user=<alexp@magrega.ru.eu.org>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<xLZvOW2qfIV/AAAB>
Jul 15 00:10:57 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 16 secs): user=<alexp>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<QVFdPW2qfoV/AAAB>
Jul 15 00:11:43 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 23 secs): user=<alexp@magrega.ru.eu.org>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<AoC3P22qgIV/AAAB>
Jul 15 00:15:09 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 114 secs): user=<alexp>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<pMCLRm2qgoV/AAAB>
Jul 15 00:20:31 debiantryout dovecot: imap-login: Disconnected (auth failed, 3 attempts in 21 secs): user=<alexp>, method=PLAIN, rip=127.0.0.1, lip=127.0.0.1, TLS, session=<+UFFX22qioV/AAAB>

Пробовал разные связки пароль\логин, вроде логин и пароль или логин@домен\пароль.

 , , ,

magrega ()

Стрим на собственный сервер

В общем, задача такая: есть свой LAMP сервер дома, на котором работает сайт на вордпрессе. Хочется сделать пост, в котором будет окно с видеотрансляцией моего экрана, типа как твич. Как это осуществить я не понимаю совсем, может кто-то объяснить насколько это возможно вообще и с чего начать?

Лампа работает из-под вмбокса на вин10. Допустим, на вин10 запустить стрим игры, чтобы шло на сервак с лампой. Что мне понадобиться? Чем снимать картинку с экрана, чем энкодить, как направить на серв?

 , , , ,

magrega ()

https на локальном wordpress

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

Есть локальный wordpress на LAMP, на который захожу из-вне по внешнему айпи, домена никакого нет, просто по айпи адресу. Эта лампа у меня на виртуальном дебиан 10 в вм боксе, который стоит на вин10.

Задача: сделать соединение безопасным, чтобы я подключался по https.

Я пытался сделать самописный сертификат ОпенССЛ и установить его плагином really simple SSL, но он его не видит. И пытался сделать бесплатный сертификат от летсенскрипт, но по голому айпи он сертификат не дает.

Насколько вообще возможно это сделать, не имея хостинга или купленного домена, а просто держа сервак дома?

 , , ,

magrega ()

Права юзера на новые файлы

Всем привет! Вопрос довольно простой, но я не смог найти как подступиться. Я работаю на debian 10 на виртуальной машине из-под вин10. Подключаюсь по фтп, чтобы брать какие-то файлы. Работаю из под рут, но есть фтп пользователь alex. Проблема в том, что я дал права доступа на домашнюю папку алекса, он может записывать там и менять всё, но когда я копирую новый файл из-под рут в эту папку, чтобы, например, потом выгрузить их в вин, у алекса нет доступа к нему, нужно вручную прописывать права именно на этот файл.

Можно ли как-то настроить так, чтобы все файлы, попадающие в папку алекса, сразу становились его по праву?

 , ,

magrega ()

Явный SSL\TSL для vsftpd

Здравствуйте, дорогие специалисты! Очень прошу помощи как новичок. Пытаюсь сделать шифрованное соединение для своего фтп. Сделал сертификат, WinSCP пускает, но через несколько мгновений теряет соединение. Успеваю открыть файл один, пройти пару папок и пропадает соединение:

Превышено время ожидания (соединение потока передачи данных)
Не могу получить содержимое каталога

а иногда и не пускает, просто очень долго висит тут, пока не выходит время ожидания:

imgur

Когда отключаю ufw и захожу просто по фтп - всё работает как надо. Всё происходит локально. Запустил Debian 10 в VM box на вин10 и пытаюсь подключиться с вин10 на дебиан по winSCP.

вот файрвол

Status: active

To                         Action      From
--                         ------      ----
21/tcp                     ALLOW       Anywhere                  
22/tcp                     ALLOW       Anywhere                  
60000:65535/tcp            ALLOW       Anywhere                  
Samba                      ALLOW       Anywhere                  
OpenSSH                    ALLOW       Anywhere                  
20/tcp                     ALLOW       Anywhere                  
80/tcp                     ALLOW       Anywhere                  
443/tcp                    ALLOW       Anywhere                  
3306/tcp                   ALLOW       Anywhere                  
990/tcp                    ALLOW       Anywhere                  
989/tcp                    ALLOW       Anywhere                  
40000:50000/tcp            ALLOW       Anywhere                  
10000:30000/tcp            ALLOW       Anywhere                  
50000:60000/tcp            ALLOW       Anywhere                  
10000:11000/tcp            ALLOW       Anywhere                  
21/tcp (v6)                ALLOW       Anywhere (v6)             
22/tcp (v6)                ALLOW       Anywhere (v6)             
60000:65535/tcp (v6)       ALLOW       Anywhere (v6)             
Samba (v6)                 ALLOW       Anywhere (v6)             
OpenSSH (v6)               ALLOW       Anywhere (v6)             
20/tcp (v6)                ALLOW       Anywhere (v6)             
80/tcp (v6)                ALLOW       Anywhere (v6)             
443/tcp (v6)               ALLOW       Anywhere (v6)             
3306/tcp (v6)              ALLOW       Anywhere (v6)             
990/tcp (v6)               ALLOW       Anywhere (v6)             
989/tcp (v6)               ALLOW       Anywhere (v6)           

а вот конфиг vsftpd

>rsa_cert_file=/etc/ssl/certs/vsftpd.pem
>rsa_private_key_file=/etc/ssl/private/vsftpd.key
>ssl_enable=YES
>listen_port=990
>allow_anon_ssl=NO
>force_local_data_ssl=YES
>force_local_logins_ssl=YES
>ssl_tlsv1=YES
>ssl_sslv2=NO
>ssl_sslv3=NO
>require_ssl_reuse=NO
>ssl_ciphers=HIGH
>force_dot_files=YES
>user_config_dir=/etc/vsftpd_user_conf

 , , , ,

magrega ()

RSS подписка на новые темы