From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=hahn.ws (client-ip=185.170.115.253; helo=mail.hahn.ws; envelope-from=public@hahn.ws; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=hahn.ws header.i=@hahn.ws header.a=rsa-sha256 header.s=dkim header.b=KOGDc2U5 Received: from mail.hahn.ws (mail.lalala.ws [185.170.115.253]) by mail.toke.dk (Postfix) with ESMTPS id 4DF93A4B1DA for ; Sun, 31 Dec 2023 17:38:53 +0100 (CET) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPA id A1616180F94 for ; Sun, 31 Dec 2023 17:38:52 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hahn.ws; s=dkim; t=1704040732; h=from:subject:date:message-id:to:mime-version:content-type; bh=q5rz8bABi4wEOCOlwOoeQa8w9GPBivb/FePa0jTFqF4=; b=KOGDc2U53HG70c/GOAOu1cbgAJuml1nZzBp0yy5GOFlOMYR+VgKTH1Ad5v/t64X1CtDoQa YhMJrj8V2RdY9gID65Gtjfwh80ncjBbNcJEz3CFxCiQOxhQSh/V33cJXohmqHc96f2vCWv uBYb00CdKPZqN3HB7e7XIx28QC+QpGk= From: "Karsten Hahn" To: galene@lists.galene.org User-Agent: SOGoMail 5.9.0 MIME-Version: 1.0 Date: Sun, 31 Dec 2023 17:38:52 +0100 Message-ID: <4b-65919900-15-73f7b000@206958677> Content-Type: multipart/alternative; boundary="----=_=-_OpenGroupware_org_NGMime-75-1704040732.426537-16------" X-Last-TLS-Session-Version: None Message-ID-Hash: S2QY7SMCDNLYNVBHVW2FYPK5PO6RSGKJ X-Message-ID-Hash: S2QY7SMCDNLYNVBHVW2FYPK5PO6RSGKJ X-MailFrom: public@hahn.ws X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: ------=_=-_OpenGroupware_org_NGMime-75-1704040732.426537-16------ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 433 Hello, at first, I have installed galene today and I am very impressed! The qu= ality is great. Thanks a lot for this application! I was thinking about streaming a complete meeting as a livestream on yo= utube. Is this possible? Has anyone had any experience with this? Maybe= a transcoder from WebRTS to RTSP is necessary? You see, I'm not really= an expert in this domain :-) Thanks for any tips and best regards, Karsten ------=_=-_OpenGroupware_org_NGMime-75-1704040732.426537-16------ Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 486 Hello,

at first, I have installed galene today and I a= m very impressed! The quality is great. Thanks a lot for this applicati= on!

I was thinking about streaming a complete meeting as a l= ivestream on youtube. Is this possible? Has anyone had any experience w= ith this? Maybe a transcoder from WebRTS to RTSP is necessary? You see,= I'm not really an expert in this domain :-)

Thanks for any = tips and best regards,
Karsten ------=_=-_OpenGroupware_org_NGMime-75-1704040732.426537-16-------- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-wm1-x32c.google.com (mail-wm1-x32c.google.com [IPv6:2a00:1450:4864:20::32c]) by mail.toke.dk (Postfix) with ESMTPS id 8B3EBA4B213 for ; Sun, 31 Dec 2023 18:58:28 +0100 (CET) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=rouillier-fr.20230601.gappssmtp.com header.i=@rouillier-fr.20230601.gappssmtp.com header.a=rsa-sha256 header.s=20230601 header.b=FMkd85Rc Received: by mail-wm1-x32c.google.com with SMTP id 5b1f17b1804b1-40d60ad5f0bso40175505e9.0 for ; Sun, 31 Dec 2023 09:58:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=rouillier-fr.20230601.gappssmtp.com; s=20230601; t=1704045447; x=1704650247; darn=lists.galene.org; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:from:to:cc:subject:date:message-id :reply-to; bh=7eUJy6fqdFvVkJf81xwFT9SQBIZYqSYKFNZ16V1Uj+c=; b=FMkd85Rcr3+Zl8+x20v2xEcuhWMbF7y9WRRKqH9f5GAX2m8NcN/qcVLtYX+N/sAAL2 HWvKMcWKgyzDCRTi7uYcUjVa0C076zPTscLBQ8lyPUZpO7wxBvtZn9SOGvZoRLP3v0oV NgM/vfoPPhrsBGjOE5SGt5rbE+zGWRFW6e8imH7cDvLr/MXF04JLIumrKTMSiZ+egCnq uKVKiNW4eCjyyRSAGJ/501pu7D/VIoMkzWtWNp4qksI+wyw8ZDxqtCS+bDaJ0FyfOVLP nnNuu76jdlN+q62K/6Mll5bI5spQAc/FDWGXU9HApJEUeO/z6WU9vFkKxOISKs1E4NC+ OdXw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1704045447; x=1704650247; h=to:in-reply-to:cc:references:message-id:date:subject:mime-version :from:content-transfer-encoding:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=7eUJy6fqdFvVkJf81xwFT9SQBIZYqSYKFNZ16V1Uj+c=; b=TvDxaEuaoCStrFtZy8TCesxduPGHdxS2j/AAVTkeC2FiqP6go/1SdrCH4CdlM+CZGX X/vk4bXY/Pa0r0EyEYbtB8D9FfsvRX6WejkNyPBp9+zRR2QqblW2P4yGp5JH3nzVXynh PBBZazKTcccfR7kd3BGPKFg0fDrNM9kNHoXf1ZQ3o/HoV4eJeLOErvKAtPgTiOLMbLvY o5+juJsBKV79fQmaTPUAmHFqJF6ObIcw4TH1UYqJytET7wr1ESR3uVNvq+j+Riv1xhvT jkhsljW5Zg4QIgpkTvvTL/DBDJT21bDw3AyJgonglZPqxeXxMeh+GO4R03fPj2CDpTsc PXNg== X-Gm-Message-State: AOJu0YzgSjzRsnTzOrrhFEbR9/53iLgsrffWQkSwnqr4XPHUmmvRTrIb Fk+ItpMKaFuoISjmYdotXz2AW8o0lzt2GaoBoAHuU/XrjIA= X-Google-Smtp-Source: AGHT+IFwiGGGMagRqhoZCWHfIaNQJMv+IGmhHSy5bTjkuuI9xp0Obzt68CWfyq+FlEgK1mBnSBjurA== X-Received: by 2002:a7b:c7cf:0:b0:40d:8369:90bd with SMTP id z15-20020a7bc7cf000000b0040d836990bdmr1172637wmk.72.1704045447471; Sun, 31 Dec 2023 09:57:27 -0800 (PST) Received: from smtpclient.apple ([37.174.89.164]) by smtp.gmail.com with ESMTPSA id o6-20020a05600c510600b0040d5ae2906esm19166118wms.30.2023.12.31.09.57.26 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Sun, 31 Dec 2023 09:57:27 -0800 (PST) Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable From: Fabrice Rouillier Mime-Version: 1.0 (1.0) Date: Sun, 31 Dec 2023 18:57:15 +0100 Message-Id: References: <4b-65919900-15-73f7b000@206958677> In-Reply-To: <4b-65919900-15-73f7b000@206958677> To: Karsten Hahn X-Mailer: iPhone Mail (21C66) Message-ID-Hash: 4XT73LF7O754EKIQPVYLJPUSEDK7GERE X-Message-ID-Hash: 4XT73LF7O754EKIQPVYLJPUSEDK7GERE X-MailFrom: fabrice@rouillier.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: Hi Just catch the window of your navigator with OBS and you are Done Fabrice > Le 31 d=C3=A9c. 2023 =C3=A0 17:38, Karsten Hahn a =C3=A9c= rit : >=20 > =EF=BB=BFHello, >=20 > at first, I have installed galene today and I am very impressed! The quali= ty is great. Thanks a lot for this application! >=20 > I was thinking about streaming a complete meeting as a livestream on youtu= be. Is this possible? Has anyone had any experience with this? Maybe a trans= coder from WebRTS to RTSP is necessary? You see, I'm not really an expert in= this domain :-) >=20 > Thanks for any tips and best regards, > Karsten From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=siobud.com (client-ip=165.227.221.230; helo=mail.siobud.com; envelope-from=sean@siobud.com; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=siobud.com header.i=@siobud.com header.a=rsa-sha256 header.s=mail header.b=ToTzmH+M Received: from mail.siobud.com (mail.siobud.com [165.227.221.230]) by mail.toke.dk (Postfix) with ESMTPS id ED996A4B251 for ; Sun, 31 Dec 2023 20:49:46 +0100 (CET) Content-Type: multipart/alternative; boundary=Apple-Mail-AD35172D-0404-4AB4-8657-3E2FACB4534E DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=siobud.com; s=mail; t=1704052182; bh=9X1hiai8zRBY/VrAD/3nHwZcT226a0ttUXssIEjlfoQ=; h=From:Subject:References:Cc:In-Reply-To:To; b=ToTzmH+M7eK2O1EZcHwU7HOvmtp+er53A/rdX8HCY6Oc+gXeKFqDZjmyFd/KiOP6b RsHzfOZ0bAcdzDdLxLcym8yfRqkHn0PbiKr7uNTAtAfAud30FMzygiAAETJJE6CqJp 9T8D/S4YTqZQ2lGJAU2W0ErfsHOJECpHssih/crM= Content-Transfer-Encoding: 7bit From: Sean DuBois MIME-Version: 1.0 Date: Sun, 31 Dec 2023 14:49:32 -0500 Message-Id: References: In-Reply-To: To: Fabrice Rouillier Message-ID-Hash: XZ74WJSQWOONZDERZ4TXRL7BGZFQPFNK X-Message-ID-Hash: XZ74WJSQWOONZDERZ4TXRL7BGZFQPFNK X-MailFrom: sean@siobud.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --Apple-Mail-AD35172D-0404-4AB4-8657-3E2FACB4534E Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable If you want something headless you can run https://github.com/centricular/gs= tcefsrc That will give you a GStreamer pipeline that can go to RTMP etc=E2=80=A6 If that sounds like what you want happy to answer questions/helpset it up.=20= > On Dec 31, 2023, at 12:58, Fabrice Rouillier wrote:= >=20 > =EF=BB=BFHi >=20 > Just catch the window of your navigator with OBS and you are Done >=20 >=20 > Fabrice >=20 >> Le 31 d=C3=A9c. 2023 =C3=A0 17:38, Karsten Hahn a =C3=A9= crit : >>=20 >> =EF=BB=BFHello, >>=20 >> at first, I have installed galene today and I am very impressed! The qual= ity is great. Thanks a lot for this application! >>=20 >> I was thinking about streaming a complete meeting as a livestream on yout= ube. Is this possible? Has anyone had any experience with this? Maybe a tran= scoder from WebRTS to RTSP is necessary? You see, I'm not really an expert i= n this domain :-) >>=20 >> Thanks for any tips and best regards, >> Karsten > _______________________________________________ > Galene mailing list -- galene@lists.galene.org > To unsubscribe send an email to galene-leave@lists.galene.org --Apple-Mail-AD35172D-0404-4AB4-8657-3E2FACB4534E Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable
If y= ou want something headless you can run https://github.com/centricular/gstcefsrc

That will give you a GStreamer pipelin= e that can go to RTMP etc=E2=80=A6

If that sounds like what you want happy to answer questions/helpset it= up. 

On Dec 31, 20= 23, at 12:58, Fabrice Rouillier <fabrice@rouillier.fr> wrote:

<= /blockquote>
=EF=BB=BF= Hi

Just catch the window of your navigator w= ith OBS and you are Done


Fa= brice

Le 31 d=C3=A9= c. 2023 =C3=A0 17:38, Karsten Hahn <public@hahn.ws> a =C3=A9crit :

=
=EF=BB=BFHello,

at first, I have installed galene today and I am very impressed! The q= uality is great. Thanks a lot for this application!
<= blockquote type=3D"cite">
I was thinking about streaming a complete meeting as a livestream= on youtube. Is this possible? Has anyone had any experience with this? Mayb= e a transcoder from WebRTS to RTSP is necessary? You see, I'm not really an e= xpert in this domain :-)

Thanks for any t= ips and best regards,
Karsten
______________________________________= _________
Galene mailing list -- galene@lists.galene.org
To unsubscribe send an email to galene-leave@lists.galene.org
= --Apple-Mail-AD35172D-0404-4AB4-8657-3E2FACB4534E-- From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=irif.fr (client-ip=2001:660:3301:8000::1:2; helo=korolev.univ-paris7.fr; envelope-from=jch@irif.fr; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=irif.fr header.i=@irif.fr header.a=rsa-sha256 header.s=dkim-irif header.b=czCdv9O0 Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) by mail.toke.dk (Postfix) with ESMTPS id 37969A4B33F for ; Mon, 1 Jan 2024 02:38:18 +0100 (CET) Received: from potemkin.univ-paris7.fr (potemkin.univ-paris7.fr [IPv6:2001:660:3301:8000::1:1]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 4011cANs029751 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Mon, 1 Jan 2024 02:38:10 +0100 Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by potemkin.univ-paris7.fr (8.14.4/8.14.4/relay2/82085) with ESMTP id 4011cAEb007440; Mon, 1 Jan 2024 02:38:10 +0100 Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id 7A08A2B242; Mon, 1 Jan 2024 02:38:09 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=irif.fr; h= content-type:content-type:mime-version:user-agent:references :in-reply-to:subject:subject:from:from:message-id:date:date :received:received; s=dkim-irif; t=1704073088; x=1704937089; bh= sRFFec//gHK+YrEgbrJtO+k7kgb4yGaAmi+mGmyyw3c=; b=czCdv9O0OytCHjwu epE/Js6kGLL7K0WXqU537XSJHBHX7zAZqY3UkD+uWLBY8HADJpqnoF2SURHeZjcH qD6iB9rZTGFmtfwwpmo/dtpjF118r143w5rqT+ACgruy2bJMFD25xRun/FaSR5Kd mu/evUpMOT38cGpObj4YbWgH9HXXd2Z2UpM6+Oxqdq2hHZ5vH7tilONXSQNeSwqJ R0pYav+0qM55+l+nMjFIpmKhwRPVRQ6bKwHO+UIUqJREOZ/+gDr82L5/JzFjb8S7 ms0glhx2Zxi0uLai8KWNP3Oe17/eAgX35KcDpYDjLR4zURtIJSrwIrGSSQoIcXlb QlG8wA== X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id pMoabbiYxAkz; Mon, 1 Jan 2024 02:38:08 +0100 (CET) Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id A2FD32B396; Mon, 1 Jan 2024 02:38:07 +0100 (CET) Date: Mon, 01 Jan 2024 02:38:07 +0100 Message-ID: <87v88d3kao.wl-jch@irif.fr> From: Juliusz Chroboczek To: Fabrice Rouillier In-Reply-To: References: <4b-65919900-15-73f7b000@206958677> User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/29.1 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset=US-ASCII X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]); Mon, 01 Jan 2024 02:38:10 +0100 (CET) X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (potemkin.univ-paris7.fr [194.254.61.141]); Mon, 01 Jan 2024 02:38:10 +0100 (CET) X-Miltered: at korolev with ID 65921782.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-Miltered: at potemkin with ID 65921782.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 65921782.000 from potemkin.univ-paris7.fr/potemkin.univ-paris7.fr/null/potemkin.univ-paris7.fr/ X-j-chkmail-Enveloppe: 65921782.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/ X-j-chkmail-Score: MSGID : 65921782.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Score: MSGID : 65921782.000 on potemkin.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham X-j-chkmail-Status: Ham Message-ID-Hash: JYVKLUIRC7BCOAB3FLMCTZNSQ7CAX5NA X-Message-ID-Hash: JYVKLUIRC7BCOAB3FLMCTZNSQ7CAX5NA X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: >> I was thinking about streaming a complete meeting as a livestream on youtube. > Just catch the window of your navigator with OBS and you are Done Right. Galene does not do any multiplexing: when a meeting consists of multiple streams, then all of the streams are sent to all participants. Youtube requires a single stream, so at some point somebody needs to decode the videos, build a mosaic view, and then recode the videos. It cannot be the Galene server, since the server does not do any recoding (that's what makes it cheap and fast). The best place is the browser, which already knows how to decode WebRTC streams. So rendering in the browser and recoding using OBS seems like a perfectly fine solution. Another solution would be to perform the recoding in the browser itself, but I'm not sure how easy it would be. Happy new year! -- Juliusz From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=hahn.ws (client-ip=185.170.115.253; helo=mail.hahn.ws; envelope-from=public@hahn.ws; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=hahn.ws header.i=@hahn.ws header.a=rsa-sha256 header.s=dkim header.b=Vh1HNr0U Received: from mail.hahn.ws (mail.lalala.ws [185.170.115.253]) by mail.toke.dk (Postfix) with ESMTPS id 4A8DDA4B464 for ; Mon, 1 Jan 2024 11:51:35 +0100 (CET) Received: from [127.0.0.1] (localhost [127.0.0.1]) by localhost (Mailerdaemon) with ESMTPA id 08A1C181A4C; Mon, 1 Jan 2024 11:51:33 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=hahn.ws; s=dkim; t=1704106294; h=from:subject:date:message-id:to:cc:mime-version:content-type: in-reply-to; bh=8zBGrhk99Gc66Lw5Y3h1M26tCIqk49azxEGh+Xvlzrg=; b=Vh1HNr0Uf+dKEUlPxuNfIgkUmFsNnk1Ko1TzoGw7gPMIjekFdoCE3+ZnV4744bN156RhgO GSqlDClkY+KRtCqVANKNmqd2tbiONfcHQL/koeYgZ7oveHU7/+95ugDp4K4ENKM0i5eGIA eolmdhASQLfF8XRSCG3Ru8sk8oGDYOI= From: "Karsten Hahn" In-Reply-To: <87v88d3kao.wl-jch@irif.fr> Content-Type: multipart/alternative; boundary="----=_=-_OpenGroupware_org_NGMime-75-1704106293.729171-19------" Date: Mon, 01 Jan 2024 11:51:33 +0100 To: "Juliusz Chroboczek" MIME-Version: 1.0 Message-ID: <4b-65929900-1b-73f7b000@206958776> User-Agent: SOGoMail 5.9.0 X-Last-TLS-Session-Version: None Message-ID-Hash: JNQTOPYD6TWERN4CSWOMKFO5H37DZJJG X-Message-ID-Hash: JNQTOPYD6TWERN4CSWOMKFO5H37DZJJG X-MailFrom: public@hahn.ws X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Fabrice Rouillier , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtubelivestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: ------=_=-_OpenGroupware_org_NGMime-75-1704106293.729171-19------ Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 1366 Hi all, thans for the prompt feedback and a happy new year 2024. Good explanation of the functionality of WebRTC. In fact the combinatio= n of the streams serverside will be a problem. So I'll try the client s= ide OBS solution. On the oher hand I found serveral articles about headless chrome and pu= ppeteer ... I'll read more about it. Thanks a lot for your information and best greetings, Karsten Am Montag, Januar 01, 2024 02:38 CET, schrieb Juliusz Chroboczek : =C2=A0>> I was thinking about streaming a complete meeting as a livestr= eam on youtube. > Just catch the window of your navigator with OBS and you are Done Right. Galene does not do any multiplexing: when a meeting consists of multipl= e streams, then all of the streams are sent to all participants. Youtube requires a single stream, so at some point somebody needs to decode the videos, build a mosaic view, and then recode the videos. It cannot be the Galene server, since the server does not do any recoding (that's what makes it cheap and fast). The best place is the browser, which already knows how to decode WebRTC streams. So rendering in the browser and recoding using OBS seems like a perfect= ly fine solution. Another solution would be to perform the recoding in the browser itself, but I'm not sure how easy it would be. Happy new year! -- Juliusz ------=_=-_OpenGroupware_org_NGMime-75-1704106293.729171-19------ Content-Type: text/html; charset=utf-8 Content-Transfer-Encoding: quoted-printable Content-Length: 1682 Hi all,

thans for the prompt feedback and a happy new = year 2024.

Good explanation of the functionality of WebRTC. = In fact the combination of the streams serverside will be a problem. So= I'll try the client side OBS solution.

On the oher hand I f= ound serveral articles about headless chrome and puppeteer ... I'll rea= d more about it.

Thanks a lot for your information and best = greetings,

Karsten

Am Montag, Januar 01, 2024 02:= 38 CET, schrieb Juliusz Chroboczek <jch@irif.fr>:
 >> I was= thinking about streaming a complete meeting as a livestream on youtube= .

> Just catch the window of your navigator with OBS and = you are Done

Right.

Galene does not do any multip= lexing: when a meeting consists of multiple
streams, then all of t= he streams are sent to all participants.

Youtube requires a = single stream, so at some point somebody needs to
decode the video= s, build a mosaic view, and then recode the videos. It
cannot be t= he Galene server, since the server does not do any recoding
(that'= s what makes it cheap and fast). The best place is the browser,
wh= ich already knows how to decode WebRTC streams.

So rendering= in the browser and recoding using OBS seems like a perfectly
fine= solution. Another solution would be to perform the recoding in the
browser itself, but I'm not sure how easy it would be.

Hap= py new year!

-- Juliusz ------=_=-_OpenGroupware_org_NGMime-75-1704106293.729171-19-------- From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp001-out.apm-internet.net (smtp001-out.apm-internet.net [85.119.248.222]) by mail.toke.dk (Postfix) with ESMTPS id 997E0A4B48B for ; Mon, 1 Jan 2024 12:18:21 +0100 (CET) Received: (qmail 98367 invoked from network); 1 Jan 2024 11:18:20 -0000 X-APM-Out-ID: 17041079009836 X-APM-Authkey: 255286/0(253943/0) 49 Received: from unknown (HELO zimbra003.verygoodemail.com) (85.119.248.218) by smtp001.apm-internet.net with SMTP; 1 Jan 2024 11:18:20 -0000 Received: from localhost (localhost [127.0.0.1]) by zimbra003.verygoodemail.com (Postfix) with ESMTP id 371A2820F6; Mon, 1 Jan 2024 11:18:20 +0000 (GMT) Received: from zimbra003.verygoodemail.com ([127.0.0.1]) by localhost (zimbra003.verygoodemail.com [127.0.0.1]) (amavis, port 10026) with ESMTP id nlADXC4xCcGS; Mon, 1 Jan 2024 11:18:20 +0000 (GMT) Received: from smtpclient.apple (unknown [192.67.4.106]) by zimbra003.verygoodemail.com (Postfix) with ESMTPSA id 06711820F2; Mon, 1 Jan 2024 11:18:20 +0000 (GMT) From: Tim Panton Message-Id: <2849BC57-F30F-48E7-8E13-2A99C0295E25@pi.pe> Content-Type: multipart/alternative; boundary="Apple-Mail=_EB6F45A7-ADB4-4478-AB99-DC6CA4BA46B9" Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\)) Date: Mon, 1 Jan 2024 11:18:08 +0000 In-Reply-To: <87v88d3kao.wl-jch@irif.fr> To: Juliusz Chroboczek References: <4b-65919900-15-73f7b000@206958677> <87v88d3kao.wl-jch@irif.fr> X-Mailer: Apple Mail (2.3774.300.61.1.2) X-MailFrom: tim@pi.pe X-Mailman-Rule-Hits: max-size X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; news-moderation; no-subject; digests; suspicious-header Message-ID-Hash: YBB3N47YH7DJKSMM2V3TE4NDA3AULKO6 X-Message-ID-Hash: YBB3N47YH7DJKSMM2V3TE4NDA3AULKO6 X-Mailman-Approved-At: Mon, 01 Jan 2024 16:52:20 +0100 CC: Fabrice Rouillier , Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: --Apple-Mail=_EB6F45A7-ADB4-4478-AB99-DC6CA4BA46B9 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=utf-8 > On 1 Jan 2024, at 01:38, Juliusz Chroboczek wrote: >=20 >>> I was thinking about streaming a complete meeting as a livestream on = youtube. >=20 >> Just catch the window of your navigator with OBS and you are Done >=20 > Right. >=20 > Galene does not do any multiplexing: when a meeting consists of = multiple > streams, then all of the streams are sent to all participants. >=20 > Youtube requires a single stream, so at some point somebody needs to > decode the videos, build a mosaic view, and then recode the videos. = It > cannot be the Galene server, since the server does not do any recoding > (that's what makes it cheap and fast). The best place is the browser, > which already knows how to decode WebRTC streams. >=20 > So rendering in the browser and recoding using OBS seems like a = perfectly > fine solution. Another solution would be to perform the recoding in = the > browser itself, but I'm not sure how easy it would be. There is a sort of halfway house I=E2=80=99ve done where you screen = capture (ie mix) a div in the =E2=80=98host=E2=80=99 browser and send = that as a webRTC stream to a local recording process (in my case pipe = and ffmpeg - but it could be a gstreamer pipeline). This works pretty well -=20 = https://github.com/pipe/rdv-show/blob/4793900b6d661153da1962d0a694ee71fbfd= fccb/rdv-show/js/host.js#L64=EF=BF=BC rdv-show/rdv-show/js/host.js at 4793900b6d661153da1962d0a694ee71fbfdfccb = =C2=B7 pipe/rdv-show github.com =20 I=E2=80=99ve played with media stream recorder, but then you need to = have a web server to capture and store the media file chunks. Happy to help if that=E2=80=99s useful. T. >=20 > Happy new year! >=20 > -- Juliusz > _______________________________________________ > Galene mailing list -- galene@lists.galene.org > To unsubscribe send an email to galene-leave@lists.galene.org --Apple-Mail=_EB6F45A7-ADB4-4478-AB99-DC6CA4BA46B9 Content-Type: multipart/related; type="text/html"; boundary="Apple-Mail=_A9E82A05-5348-4385-94C3-4BFB8DA3C94D" --Apple-Mail=_A9E82A05-5348-4385-94C3-4BFB8DA3C94D Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=utf-8

On 1 Jan 2024, at 01:38, Juliusz Chroboczek = <jch@irif.fr> wrote:

I was thinking about streaming a = complete meeting as a livestream on = youtube.

Just = catch the window of your navigator with OBS and you are = Done

Right.

Galene does not do any = multiplexing: when a meeting consists of multiple
streams, then all = of the streams are sent to all participants.

Youtube requires a = single stream, so at some point somebody needs to
decode the videos, = build a mosaic view, and then recode the videos.  It
cannot be = the Galene server, since the server does not do any recoding
(that's = what makes it cheap and fast).  The best place is the = browser,
which already knows how to decode WebRTC streams.

So = rendering in the browser and recoding using OBS seems like a = perfectly
fine solution.  Another solution would be to perform = the recoding in the
browser itself, but I'm not sure how easy it = would be.

There is a sort of = halfway house I=E2=80=99ve done where you screen capture (ie mix) a div = in the =E2=80=98host=E2=80=99 browser and send that as a webRTC stream = to a local recording process (in my case pipe and ffmpeg - but it could = be a gstreamer pipeline).

This works pretty = well - 

I=E2= =80=99ve played with media stream recorder, but then you need to have a = web server to capture and store the media file = chunks.

Happy to help if that=E2=80=99s = useful.


T.


Happy new year!

-- = Juliusz
_______________________________________________
Galene = mailing list -- galene@lists.galene.org
To unsubscribe send an email = to = galene-leave@lists.galene.org

= --Apple-Mail=_A9E82A05-5348-4385-94C3-4BFB8DA3C94D Content-Transfer-Encoding: base64 Content-Disposition: inline; filename=rdv-show.png Content-Type: image/png; x-unix-mode=0666; name="rdv-show.png" Content-Id: <3F467A85-6C56-496C-A4AA-7FF2CABD0C37> iVBORw0KGgoAAAANSUhEUgAAAoAAAAFACAYAAAAszc0KAAAAAXNSR0IArs4c6QAAAERlWElmTU0A KgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAACgKADAAQAAAAB AAABQAAAAABvE1SKAAABzGlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6eG1wbWV0YSB4bWxu czp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAiPgogICA8cmRmOlJE RiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRmLXN5bnRheC1ucyMi PgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAgICAgICB4bWxuczpl eGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAgIDxleGlmOkNvbG9y U3BhY2U+MTwvZXhpZjpDb2xvclNwYWNlPgogICAgICAgICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+ MTAyNDwvZXhpZjpQaXhlbFhEaW1lbnNpb24+CiAgICAgICAgIDxleGlmOlBpeGVsWURpbWVuc2lv bj41MTI8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICA8L3JkZjpEZXNjcmlwdGlvbj4KICAg PC9yZGY6UkRGPgo8L3g6eG1wbWV0YT4KMyImCQAAQABJREFUeAHsnQd8FVX2xw8k9N5bAoQSeu+9 d7BgQUXsfXV3dV39u7rWLa5tLbvq2lFRQEGl915DC713SEgIBAKEFJL8z+++TDJ5eS+ZQEKSl9/1 g+9l3p2Ze7933pvfnHvOucVStAgLCZAACZAACZAACZBAkSFQvMj0lB0lARIgARIgARIgARIwBCgA eSGQAAmQAAmQAAmQQBEjQAFYxAac3SUBEiABEiABEiABCkBeAyRAAiRAAiRAAiRQxAhQABaxAWd3 SYAESIAESIAESIACkNcACZAACZAACZAACRQxAhSARWzA2V0SIAESIAESIAESoADkNUACJEACJEAC JEACRYwABWARG3B2lwRIgARIgARIgAQoAHkNkAAJkAAJkAAJkEARI0ABWMQGnN0lARIgARIgARIg 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 j6d1PAYPHuytWoHeXkydF1MKdAvZOBIgARIgARIggTQC58+fl/fefVe++vJLuZKUVKgiT9M6UUjf QDJdvnxZatWqJS/99a9yyy23FLqpXws9BaBFgq8kQAIkQAIkUEgIYBp40vffyw8//CC7du4UXSvO LEOGdCTWsnHWayHpUoFrJsSe9Q/W1iQV22XKlJEBAwbI/Q88IL179y5wbc5JgygAc0KLdUmABEiA BEigABGIioqS+fPny7Jly2T37t1yLjpaLsXGSrxGpnKC79oGCmK6bNmyZnWPmjVrSvt27WTYiBHS r29f8dfp38JeKAAL+wiy/SRAAiRAAiSgBCIiIiQ8PFwwRXzp0iVJwcohahlkuQoCav3z0/yLWN6t cuXKUr9+fSmva/36UqEA9KXRZF9IgARIgARIgARIwAEBRgE7gMQqJEACJEACJEACJOBLBCgAfWk0 2RcSIAESIAESIAEScECAAtABJFYhARIgARIgARIgAV8iQAHoS6PJvpAACZAACZAACZCAAwIUgA4g sQoJkAAJkAAJkAAJ+BIBCkBfGk32hQRIgARIgARIgAQcEKAAdACJVUiABEiABEiABEjAlwhQAPrS aLIvJEACJEACJEACJOCAAAWgA0isQgIkQAIkQAIkQAK+RIAC0JdGk30hARIgARIgARIgAQcEKAAd QGIVEiABEiABEiABEvAlAhSAvjSa7AsJkAAJkAAJkAAJOCBAAegAEquQAAmQAAmQAAmQgC8RoAD0 pdFkX0iABEiABEiABEjAAQEKQAeQWIUESIAESIAESIAEfIkABaAvjSb7QgIkQAIkQAIkQAIOCFAA OoDEKiRAAiRAAiRAAiTgSwQoAH1pNNkXEiABEiABEiABEnBAgALQASRWIQESIAESIAESIAFfIkAB 6Eujyb6QAAmQAAmQAAmQgAMCFIAOILEKCZAACZAACZAACfgSAQpAXxpN9oUESIAESIAESIAEHBCg AHQAiVVIgARIgARIgARIwJcIUAD60miyLyRAAiRAAiRAAiTggAAFoANIrEICJEACJEACJEACvkSA AtCXRpN9IQESIAESIAESIAEHBCgAHUBiFRIgARIgARIgARLwJQIUgL40muwLCZAACZAACZAACTgg QAHoABKrkAAJkAAJkAAJkIAvEaAA9KXRZF9IgARIgARIgARIwAEBCkAHkFiFBEiABEiABEiABHyJ AAWgL40m+0ICJEACJEACJEACDghQADqAxCokQAIkQAIkQAIk4EsEKAB9aTTZFxIgARIgARIgARJw QIAC0AEkViEBEiABEiABEiABXyJAAehLo8m+kAAJkAAJkAAJkIADAhSADiCxCgmQAAmQAAmQAAn4 EgEKQF8aTfaFBEiABEiABEiABBwQoAB0AIlVSIAESIAESIAESMCXCFAA+tJosi8kQAIkQAIkQAIk 4IAABaADSKxCAiRAAiRAAiRAAr5EgALQl0aTfSEBEiABEiABEiABBwQoAB1AYhUSIAESIAESIAES 8CUCFIC+NJrsCwmQAAmQAAmQAAk4IEAB6AASq5AACZAACZAACZCALxGgAPSl0WRfSIAESIAESIAE SMABAQpAB5BYhQRIgARIgARIgAR8iQAFoC+NJvtCAiRAAiRAAiRAAg4IUAA6gMQqJEACJEACJEAC JOBLBCgAfWk02RcSIAESIAESIAEScECAAtABJFYhARIgARIgARIgAV8iQAHoS6PJvpAACZAACZAA CZCAAwIUgA4gsQoJkAAJkAAJkAAJ+BIBCkBfGk32hQRIgARIgARIgAQcEKAAdACJVUiABEiABEiA BEjAlwhQAPrSaLIvJEACJEACJEACJOCAAAWgA0isQgIkQAIkQAIkQAK+RIAC0JdGk30hARIgARIg ARIgAQcEKAAdQGIVEiABEiABEiABEvAlAhSAvjSa7AsJkAAJkAAJkAAJOCBAAegAEquQAAmQAAmQ AAmQgC8RoAD0pdFkX0iABEiABEiABEjAAQEKQAeQWIUESIAESIAESIAEfIkABaAvjSb7QgIkQAIk QAIkQAIOCFAAOoDEKiRAAiRAAiRAAiTgSwQoAH1pNNkXEiABEiABEiABEnBAgALQASRWIQESIAES IAESIAFfIkAB6Eujyb6QAAmQAAmQAAmQgAMCFIAOILEKCZAACZAACZAACfgSAQpAXxpN9oUESIAE SIAESIAEHBCgAHQAiVVIgARIgARIgARIwJcIUAD60miyLyRAAiRAAiRAAiTggAAFoANIrEICJEAC JEACJEACvkSAAtCXRpN9IQESIAESIAESIAEHBCgAHUBiFRIgARIgARIgARLwJQIUgL40muwLCZAA CZAACZAACTggQAHoABKrkAAJkAAJkAAJkIAvEaAA9KXRZF9IgARIgARIgARIwAEBCkAHkFiFBEiA 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 eXn3zncmdpWWYl2I76U7mMKS/BlHGA1PAktD0XLtzgPGWyaySH0Da3/jqv0RARHA2S0BqG4gAiIg AiIgAiIgAoFFQDGAgXW8tbciIAIiIAIiIAIiYBKA6gQiIAIiIAIiIAIiEGAEJAAD7IBrd0VABERA BERABERAAlB9QAREQAREQAREQAQCjIAEYIAdcO2uCIiACIiACIiACEgAqg+IgAiIgAiIgAiIQIAR kAAMsAOu3RUBERABERABERABCUD1AREQAREQAREQAREIMAISgAF2wLW7IiACIiACIiACIiABqD4g AiIgAiIgAiIgAgFGQAIwwA64dlcEREAEREAEREAEJADVB0RABERABERABEQgwAhIAAbYAdfuioAI iIAIiIAIiIAEoPqACIiACIiACIiACAQYAQnAADvg2l0REAEREAEREAERkABUHxABERABERABERCB ACMgARhgB1y7KwIiIAIiIAIiIAISgOoDIiACIiACIiACIhBgBCQAA+yAa3dFQAREQAREQAREQAJQ fUAEREAEREAEREAEAoyABGCAHXDtrgiIgAiIgAiIgAhIAKoPiIAIiIAIiIAIiECAEZAADLADrt0V AREQAREQAREQAQlA9QEREAEREAEREAERCDACEoABdsC1uyIgAiIgAiIgAiLQ7VbdWVEQAREQAREQ gW+OQJDZrYo6q6++YdYFL9REQAQ6jUAXq7crt4Ktur7nHdsQdKXorfo73tELERABERABEegIgR5B VvPeKavbXGpBPbt2ZE36rgiIQAcJ9LQ6y72WY6trs6y7YVB2u3Wrv1XlPdejCIiACIiACHSYQFA9 bA41lXar8rIFXVekUYeBagUi0AEC9UF1dq2myipra6xHcwFoQRqddYCrvioCIiACIvA1AhB9XXBv 6doNfxKAX8OjN0TgYRIIqsfp2NW64lzsak3nY9Ozh7kx+i0REAEREAEREAEREIFOIyAB2Gno9cMi IAIiIAIiIAIi0DkEJAA7h7t+VQREQAREQAREQAQ6jYAEYKeh1w+LgAiIgAiIgAiIQOcQkADsHO76 VREQAREQAREQARHoNAISgJ2GXj8sAiIgAiIgAiIgAp1DQAKwc7jrV0VABERABERABESg0whIAHYa ev2wCIiACIiACIiACHQOAQnAzuGuXxUBERABERABERCBTiMgAdhp6PXDIiACIiACIiACItA5BP4f LUXbEgyCAwUAAAAASUVORK5CYII= --Apple-Mail=_A9E82A05-5348-4385-94C3-4BFB8DA3C94D-- --Apple-Mail=_EB6F45A7-ADB4-4478-AB99-DC6CA4BA46B9-- From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=irif.fr (client-ip=2001:660:3301:8000::1:2; helo=korolev.univ-paris7.fr; envelope-from=jch@irif.fr; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (2048-bit key; unprotected) header.d=irif.fr header.i=@irif.fr header.a=rsa-sha256 header.s=dkim-irif header.b=mUVUwt33 Received: from korolev.univ-paris7.fr (korolev.univ-paris7.fr [IPv6:2001:660:3301:8000::1:2]) by mail.toke.dk (Postfix) with ESMTPS id E957CA4B536 for ; Mon, 1 Jan 2024 16:54:08 +0100 (CET) Received: from mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [81.194.30.253]) by korolev.univ-paris7.fr (8.14.4/8.14.4/relay1/82085) with ESMTP id 401Fs2oN009731; Mon, 1 Jan 2024 16:54:02 +0100 Received: from mailhub.math.univ-paris-diderot.fr (localhost [127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTP id 139772E22D; Mon, 1 Jan 2024 16:54:01 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=irif.fr; h= content-transfer-encoding:content-type:content-type:mime-version :user-agent:references:in-reply-to:subject:subject:from:from :message-id:date:date:received:received; s=dkim-irif; t= 1704124440; x=1704988441; bh=M3lcP2fJKRjRF/DDOgIDIq339Gw9LtgPr51 wpV1qBP0=; b=mUVUwt33TFN+mlcbKeiV1dTy4s6c8q+oYPgvuy6CwJ2OXYr+NLY vXviIHc6A0+aQyoWEEs5zJV6me2nqNWkYWM7grS9Z4KhFF69KRszH9+epEmTfHQj KuM244lgCNbVrGxgM5cJOxFp8oOWrAfhL9KeqkVQZ53dOJ60TFaee8yTYqPur2qQ H/ikq020iqRnPn+F8xsS8PZsiYqasD/vwiAcxAJPgFcHyX6yr/AsEfspAnFfdNcd 0KHfw4QRe7NUe+R6A98rezyO8ciGfuWZ/HdAb2mDbmrUvYArK0uUS7w/7tEA8Xzy wEAJzuomYCgpA8jG19GLCtza2BaTCFhnQAA== X-Virus-Scanned: amavisd-new at math.univ-paris-diderot.fr Received: from mailhub.math.univ-paris-diderot.fr ([127.0.0.1]) by mailhub.math.univ-paris-diderot.fr (mailhub.math.univ-paris-diderot.fr [127.0.0.1]) (amavisd-new, port 10023) with ESMTP id diCODDc3faC5; Mon, 1 Jan 2024 16:54:00 +0100 (CET) Received: from pirx.irif.fr (unknown [78.194.40.74]) (Authenticated sender: jch) by mailhub.math.univ-paris-diderot.fr (Postfix) with ESMTPSA id EA6B52E28D; Mon, 1 Jan 2024 16:53:59 +0100 (CET) Date: Mon, 01 Jan 2024 16:53:59 +0100 Message-ID: <87ttnx2go8.wl-jch@irif.fr> From: Juliusz Chroboczek To: Tim Panton In-Reply-To: <2849BC57-F30F-48E7-8E13-2A99C0295E25@pi.pe> References: <4b-65919900-15-73f7b000@206958677> <87v88d3kao.wl-jch@irif.fr> <2849BC57-F30F-48E7-8E13-2A99C0295E25@pi.pe> User-Agent: Wanderlust/2.15.9 (Almost Unreal) Emacs/29.1 Mule/6.0 MIME-Version: 1.0 (generated by SEMI-EPG 1.14.7 - "Harue") Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 X-Greylist: Sender IP whitelisted, not delayed by milter-greylist-4.2.7 (korolev.univ-paris7.fr [194.254.61.138]); Mon, 01 Jan 2024 16:54:03 +0100 (CET) X-Miltered: at korolev with ID 6592E01A.000 by Joe's j-chkmail (http : // j-chkmail dot ensmp dot fr)! X-j-chkmail-Enveloppe: 6592E01A.000 from mailhub.math.univ-paris-diderot.fr/mailhub.math.univ-paris-diderot.fr/null/mailhub.math.univ-paris-diderot.fr/ X-j-chkmail-Score: MSGID : 6592E01A.000 on korolev.univ-paris7.fr : j-chkmail score : . : R=. U=. O=. B=0.000 -> S=0.000 X-j-chkmail-Status: Ham Message-ID-Hash: QPR3YZPIUCTODETUL4ID73KASHHBIG5I X-Message-ID-Hash: QPR3YZPIUCTODETUL4ID73KASHHBIG5I X-MailFrom: jch@irif.fr X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Fabrice Rouillier , Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: PiAgICAgQW5vdGhlciBzb2x1dGlvbiB3b3VsZCBiZSB0byBwZXJmb3JtIHRoZSByZWNvZGluZyBp biB0aGUgYnJvd3Nlcg0KPiAgICAgaXRzZWxmLCBidXQgSSdtIG5vdCBzdXJlIGhvdyBlYXN5IGl0 IHdvdWxkIGJlLg0KPiANCj4gVGhlcmUgaXMgYSBzb3J0IG9mIGhhbGZ3YXkgaG91c2UgSeKAmXZl IGRvbmUgd2hlcmUgeW91IHNjcmVlbiBjYXB0dXJlIChpZSBtaXgpIGENCj4gZGl2IGluIHRoZSDi gJhob3N04oCZIGJyb3dzZXIgYW5kIHNlbmQgdGhhdCBhcyBhIHdlYlJUQyBzdHJlYW0gdG8gYSBs b2NhbA0KPiByZWNvcmRpbmcgcHJvY2VzcyAoaW4gbXkgY2FzZSBwaXBlIGFuZCBmZm1wZWcgLSBi dXQgaXQgY291bGQgYmUgYSBnc3RyZWFtZXINCj4gcGlwZWxpbmUpLg0KDQpIb3cgZG8geW91IHB1 c2ggdGhlIHN0cmVhbSBpbnRvIGZmbXBlZz8NCg== From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from smtp001-out.apm-internet.net (smtp001-out.apm-internet.net [85.119.248.222]) by mail.toke.dk (Postfix) with ESMTPS id F239BA4B56E for ; Mon, 1 Jan 2024 17:02:10 +0100 (CET) Received: (qmail 33054 invoked from network); 1 Jan 2024 16:02:10 -0000 X-APM-Out-ID: 17041249303305 X-APM-Authkey: 255286/0(253943/0) 75 Received: from unknown (HELO zimbra003.verygoodemail.com) (85.119.248.218) by smtp001.apm-internet.net with SMTP; 1 Jan 2024 16:02:10 -0000 Received: from localhost (localhost [127.0.0.1]) by zimbra003.verygoodemail.com (Postfix) with ESMTP id 7A459820F4; Mon, 1 Jan 2024 16:02:10 +0000 (GMT) Received: from zimbra003.verygoodemail.com ([127.0.0.1]) by localhost (zimbra003.verygoodemail.com [127.0.0.1]) (amavis, port 10026) with ESMTP id 3F4DcmxMwS8F; Mon, 1 Jan 2024 16:02:10 +0000 (GMT) Received: from smtpclient.apple (unknown [192.67.4.106]) by zimbra003.verygoodemail.com (Postfix) with ESMTPSA id 4BC9A81F33; Mon, 1 Jan 2024 16:02:10 +0000 (GMT) Content-Type: text/plain; charset=utf-8 Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3774.300.61.1.2\)) From: Tim Panton In-Reply-To: <87ttnx2go8.wl-jch@irif.fr> Date: Mon, 1 Jan 2024 16:01:59 +0000 Content-Transfer-Encoding: quoted-printable Message-Id: <1A9DE6FE-040A-4203-BCEA-C5F6990EEAC2@pi.pe> References: <4b-65919900-15-73f7b000@206958677> <87v88d3kao.wl-jch@irif.fr> <2849BC57-F30F-48E7-8E13-2A99C0295E25@pi.pe> <87ttnx2go8.wl-jch@irif.fr> To: Juliusz Chroboczek X-Mailer: Apple Mail (2.3774.300.61.1.2) Message-ID-Hash: GNRAIBZ5MA5OBASNOK6ETAZFHM7WHQ4W X-Message-ID-Hash: GNRAIBZ5MA5OBASNOK6ETAZFHM7WHQ4W X-MailFrom: tim@pi.pe X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Fabrice Rouillier , Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: > On 1 Jan 2024, at 15:53, Juliusz Chroboczek wrote: >=20 >> Another solution would be to perform the recoding in the browser >> itself, but I'm not sure how easy it would be. >>=20 >> There is a sort of halfway house I=E2=80=99ve done where you screen = capture (ie mix) a >> div in the =E2=80=98host=E2=80=99 browser and send that as a webRTC = stream to a local >> recording process (in my case pipe and ffmpeg - but it could be a = gstreamer >> pipeline). >=20 > How do you push the stream into ffmpeg? I have a bit of |pipe| (java) code that opens a webrtc connection, gets = the single (mixed) stream and strips the ICE/SRTP off and feeds the RTP = to ffmpeg.=20 You could write something similar in pion pretty easily I think.=20 Also I know some people have done gstreamer pipelines that do the SRTP = and the ffmpeg bit. T. From mboxrd@z Thu Jan 1 00:00:00 1970 Authentication-Results: mail.toke.dk; spf=pass (mailfrom) smtp.mailfrom=siobud.com (client-ip=165.227.221.230; helo=mail.siobud.com; envelope-from=sean@siobud.com; receiver=) Authentication-Results: mail.toke.dk; dkim=pass (1024-bit key; unprotected) header.d=siobud.com header.i=@siobud.com header.a=rsa-sha256 header.s=mail header.b=N8oWFNgR Received: from mail.siobud.com (mail.siobud.com [165.227.221.230]) by mail.toke.dk (Postfix) with ESMTPS id 8CFBFA4B5B4 for ; Mon, 1 Jan 2024 17:17:55 +0100 (CET) Date: Mon, 1 Jan 2024 11:17:52 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=siobud.com; s=mail; t=1704125873; bh=uyRdJbKgJEZT6Jo5umW/GtwiNYE4yWuJGzyo9N03FCU=; h=From:To:Cc:Subject:References:In-Reply-To; b=N8oWFNgRbR0Yc8DV21cAu1Vnsoj31GiQ8Hah/Hfk789KjphcMM4+l5/rii82sgsVk aVy6XkpRHWEJMwgeBmy2yfC8GKlUNVlAFUlmtMB/6J9Z1XnTR4L2RV1CY3CASWbHsW bYD+KKPQXMARAA0lw91jRX/4uNlxulED58Q8ku4E= From: Sean DuBois To: Tim Panton Message-ID: References: <4b-65919900-15-73f7b000@206958677> <87v88d3kao.wl-jch@irif.fr> <2849BC57-F30F-48E7-8E13-2A99C0295E25@pi.pe> <87ttnx2go8.wl-jch@irif.fr> <1A9DE6FE-040A-4203-BCEA-C5F6990EEAC2@pi.pe> MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Disposition: inline Content-Transfer-Encoding: base64 In-Reply-To: <1A9DE6FE-040A-4203-BCEA-C5F6990EEAC2@pi.pe> Message-ID-Hash: RFWFOMVMFBQL2KD44J7MSLI5M5XGCNPF X-Message-ID-Hash: RFWFOMVMFBQL2KD44J7MSLI5M5XGCNPF X-MailFrom: sean@siobud.com X-Mailman-Rule-Misses: dmarc-mitigation; no-senders; approved; emergency; loop; banned-address; member-moderation; nonmember-moderation; administrivia; implicit-dest; max-recipients; max-size; news-moderation; no-subject; digests; suspicious-header CC: Juliusz Chroboczek , Fabrice Rouillier , Karsten Hahn , galene@lists.galene.org X-Mailman-Version: 3.3.9 Precedence: list Subject: [Galene] Re: Whole meeting as a youtube livestream? List-Id: =?utf-8?q?Gal=C3=A8ne_videoconferencing_server_discussion_list?= Archived-At: List-Archive: List-Help: List-Owner: List-Post: List-Subscribe: List-Unsubscribe: T24gTW9uLCBKYW4gMDEsIDIwMjQgYXQgMDQ6MDE6NTlQTSArMDAwMCwgVGltIFBhbnRvbiB3cm90 ZToNCj4gDQo+IA0KPiA+IE9uIDEgSmFuIDIwMjQsIGF0IDE1OjUzLCBKdWxpdXN6IENocm9ib2N6 ZWsgPGpjaEBpcmlmLmZyPiB3cm90ZToNCj4gPiANCj4gPj4gICAgQW5vdGhlciBzb2x1dGlvbiB3 b3VsZCBiZSB0byBwZXJmb3JtIHRoZSByZWNvZGluZyBpbiB0aGUgYnJvd3Nlcg0KPiA+PiAgICBp dHNlbGYsIGJ1dCBJJ20gbm90IHN1cmUgaG93IGVhc3kgaXQgd291bGQgYmUuDQo+ID4+IA0KPiA+ PiBUaGVyZSBpcyBhIHNvcnQgb2YgaGFsZndheSBob3VzZSBJ4oCZdmUgZG9uZSB3aGVyZSB5b3Ug c2NyZWVuIGNhcHR1cmUgKGllIG1peCkgYQ0KPiA+PiBkaXYgaW4gdGhlIOKAmGhvc3TigJkgYnJv d3NlciBhbmQgc2VuZCB0aGF0IGFzIGEgd2ViUlRDIHN0cmVhbSB0byBhIGxvY2FsDQo+ID4+IHJl Y29yZGluZyBwcm9jZXNzIChpbiBteSBjYXNlIHBpcGUgYW5kIGZmbXBlZyAtIGJ1dCBpdCBjb3Vs ZCBiZSBhIGdzdHJlYW1lcg0KPiA+PiBwaXBlbGluZSkuDQo+ID4gDQo+ID4gSG93IGRvIHlvdSBw dXNoIHRoZSBzdHJlYW0gaW50byBmZm1wZWc/DQo+IA0KPiBJIGhhdmUgYSBiaXQgb2YgfHBpcGV8 IChqYXZhKSBjb2RlIHRoYXQgb3BlbnMgYSB3ZWJydGMgY29ubmVjdGlvbiwgZ2V0cyB0aGUgc2lu Z2xlIChtaXhlZCkgc3RyZWFtIGFuZCBzdHJpcHMgdGhlIElDRS9TUlRQIG9mZiBhbmQgZmVlZHMg dGhlIFJUUCB0byBmZm1wZWcuIA0KPiANCj4gWW91IGNvdWxkIHdyaXRlIHNvbWV0aGluZyBzaW1p bGFyIGluIHBpb24gcHJldHR5IGVhc2lseSBJIHRoaW5rLiANCj4gDQo+IEFsc28gSSBrbm93IHNv bWUgcGVvcGxlIGhhdmUgZG9uZSBnc3RyZWFtZXIgcGlwZWxpbmVzIHRoYXQgZG8gdGhlIFNSVFAg IGFuZCB0aGUgZmZtcGVnIGJpdC4NCj4gDQo+IA0KPiBULg0KPiANCj4NCkNhbiB5b3UgcHVzaCBX ZWJSVEMgKFdISVApIGRpcmVjdGx5PyBZb3UgY2FuJ3QgdXNlIFlvdVR1YmUsIGJ1dCB5b3UgaGF2 ZQ0KYSBmZXcgb3RoZXIgb3B0aW9ucy4NCg0KaHR0cHM6Ly93ZWJydGNoYWNrcy5jb20vd2VicnRj LWNyYWNrcy10aGUtd2hpcC1vbi1vYnMNCg0KPiANCj4gDQo+IF9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fDQo+IEdhbGVuZSBtYWlsaW5nIGxpc3QgLS0gZ2Fs ZW5lQGxpc3RzLmdhbGVuZS5vcmcNCj4gVG8gdW5zdWJzY3JpYmUgc2VuZCBhbiBlbWFpbCB0byBn YWxlbmUtbGVhdmVAbGlzdHMuZ2FsZW5lLm9yZw0K