Тёмный

Realtime Communication with WebRTC in Flutter & Dart 

Flutter Explained
Подписаться 37 тыс.
Просмотров 55 тыс.
50% 1

This video is sponsored by getstream.io. If you want to know more, check out: getstream.io/flutterexplained
If you want to see me live code, join me at: kick.com/devcafe
WebRTC is an Open Source Standard to allow Apps real-time communication between peers. This is great, but we want to improve that by using Flutter & Dart as the main language.
GitHub Repository: github.com/md-weber/webrtc_tu...
Free Stun Server: gist.github.com/mondain/b0ec1...
If you like our work and want to support us, feel free to join us on Patreon.
/ flutterexp
Timeline:
00:00 Introduction
01:03 Getting Started with WebRTC
03:50 Showcase of the Solution
05:24 Explain the Boilerplate
13:02 Create a room to connect with (caller)
18:06 Join a room (calleee)
22:10 Showcase of the result
23:20 Problems that I faced during development
24:09 Wrap up
Join this channel to get access to perks:
/ @flutterexplained
** New Mentorship Program to boost your Flutter career **
gumroad.com/products/ydgtfV
Disclaimer Flutter Explained (Max & Mahtab) are a participant in the Amazon Services LLC Associates Program, an affiliate advertising program designed to provide a means for sites to earn advertising fees by advertising and linking to www.amazon.com.
** Social Medias **
Website: flutter-explained.dev
Say hi to Max
Twitter: / flutter_exp
GitHub Max: github.com/md-weber
LinkedIn: / max-weber-9889a3ba
Discord: / discord
Say hi to Mahtab
Twitter Mahtab: / mahtab_dev
GitHub Mahtab: github.com/mt-tadayon

Наука

Опубликовано:

 

28 июн 2024

Поделиться:

Ссылка:

Скачать:

Готовим ссылку...

Добавить в:

Мой плейлист
Посмотреть позже
Комментарии : 142   
@raghav042
@raghav042 7 месяцев назад
after 2 years, still one of the simplest, rare and useful video on flutter webrtc with firestore
@ravikovind
@ravikovind 2 года назад
Please create full series on Flutter WebRTC and explain every single point. you are doing excellent work, sir. thanks for the video.
@The12nit
@The12nit 2 года назад
AMAZING I couldn't understand the flutter webRTC plugin my self and you help me understand it, thank you!!!!
@touqeer2728
@touqeer2728 Год назад
Best practical implementation on webrtc with flutter. Really helpful for me. God bless you.
@mamuch7665
@mamuch7665 3 года назад
Please do make sure this isn't just a one-off video but a series on WebRTC and Flutter. That would really be a treat. continue doing the excellent work. bless!
@FlutterExplained
@FlutterExplained 2 года назад
I hope that the Documentation gets added on that end then maybe this is a great Live Streaming topic :)
@yourcompany6708
@yourcompany6708 2 года назад
@@FlutterExplained not working on web (chrome)......only working on phones
@Jo-tb6ur
@Jo-tb6ur 2 года назад
Awesome video. You havr been recording since and your videos have helped a lot. Thank you
@FlutterExplained
@FlutterExplained 2 года назад
You are most welcome Jo. It is always a joy if someone gets the help he searches :)
@marodonthemorone
@marodonthemorone 2 года назад
thanks for explaining, really helpful!
@AioriaPoderoso
@AioriaPoderoso 2 года назад
I need more of this, webRTC is a great topic
@sanmeetsingh4538
@sanmeetsingh4538 2 года назад
Awesome explanation ☺️ !
@R0ckFreAK4eva
@R0ckFreAK4eva 2 года назад
I would love a tutorial on Graphql and Flutter in this format, learned a lot! Thank you. :)
@FlutterExplained
@FlutterExplained 2 года назад
Fantastic, thank you for your feedback :)
@prashantmaharana3467
@prashantmaharana3467 2 года назад
Thankyou for the tutorial
@macelux7202
@macelux7202 Год назад
Excellent work! Could you also explain how audio calls work ?
@shubhamtariyal439
@shubhamtariyal439 2 года назад
If you don't hear audio, make sure to set audio to true in openUserMedia function
@raghav042
@raghav042 2 года назад
Very helpful video ❤️ Please make tutorial on flutter pion webrtc also
@tusharranjan2509
@tusharranjan2509 2 года назад
Great video! Cleared lot of concept for me. So, I implemented it, on Android device. With some ui change I made it work. On the same connection (WiFi), the video stream was rendered for both side. But no Audio. But when tested on different connections, nothing happened. Even though firebase was being populated with candidates, offer and answer SDP.
@kamalpreetsingh7777
@kamalpreetsingh7777 Год назад
great video ! very helpful. one question - how to create own stun server?
@techwiththomas5690
@techwiththomas5690 2 года назад
Hey, first of all thanks for the tutorial. I created my own App using my own websocket and coturn server. After days I realized (confirmed by your showcase), that the video call only works flawlessly when one FIRST activates the webcames on each side BEFORE creating/joining the room. How would I get around that so the user could open and close the webcam WHENEVER he wants to?
@pr749
@pr749 2 года назад
great video! Very helpful. Small feedback regarding wording. Please try to use exact names for the callee or caller. Like just use participant A and participant B. It becomes very confusing if you use callee is remote for the remote. Was still very clear to follow, but maybe some will struggle a bit there if they are already new to the whole coding process by itself!
@FlutterExplained
@FlutterExplained 2 года назад
Very good idea, I will try in the future and I work currently on a more specific work on the WebRTC topic :)
@rupamkarmakar7266
@rupamkarmakar7266 2 года назад
Please make more videos on Flutter WebRTC
@deniztb4192
@deniztb4192 2 года назад
Thank you it was great. is it possible to record or save voice calls on server to have them?
@FlutterExplained
@FlutterExplained 2 года назад
Yes that should be possible, but I believe you would not need WebRTC for that. WebRTC is mostly for communication between two computers, there are way easier possibilities to record a camera :)
@hardikdabhi943
@hardikdabhi943 2 года назад
Can we create many to many peer connection using core webRTC. or we need to use Framework like Jitsi?
@harshmirdhwal
@harshmirdhwal 2 года назад
This video is a gem
@FlutterExplained
@FlutterExplained 2 года назад
I am glad you liked it :)
@shyambihariswami8250
@shyambihariswami8250 4 месяца назад
Helpfull video 🤟
@adri_eu
@adri_eu 2 года назад
Hi Max, thanks for your great explanation. How would you implement calling someone? By push notification linked to the room id? How can you trigger call behavior on a mobile device? Any ideas?
@FlutterExplained
@FlutterExplained 2 года назад
I guess you would need to have a room for a specific user and send him a push notification of the callers room so that he can join. The Notification could trigger the default call on the phone.
@FlutterExplained
@FlutterExplained 2 года назад
But to be frank it sounds like you would need to create some native implementations.
@pierrecourtois5167
@pierrecourtois5167 2 года назад
There's a small bug in the github where the roomId is never updated when creating a room. A quick fix consist in removing the var at the line 58 of signaling.dart and converting roomId from a String? to a regular String before returning it. It fixes another problem that I was having where the rooms were never deleted even after everyone left them, because the condition check on the roomId not being null was always false (in hangup function, line 208). Hope that helps anyone with that problem
@FlutterExplained
@FlutterExplained 2 года назад
Great thank you I will directly check it!
@kabal6748
@kabal6748 2 года назад
can you PLEASE make a tutorial to use a phone camera as a webcam using webrtc? your tutorials are awesome!
@nagak3300
@nagak3300 3 дня назад
Thanks for the video. This was very helpful for understanding. For running this code as a web app, Where should I provide my Firestore details ? In Index.html in the firebaseConfig variable ?
@ardeshirojan1468
@ardeshirojan1468 2 месяца назад
Fixes: Just set up a firebase project and enable firebase datastore , then go over rules and change "write if false" to "write if true" then everything is going to work well enough
@jobflutter4539
@jobflutter4539 2 года назад
How I can open app when app is in background or how to implement callkeep
@sripranav
@sripranav 2 года назад
how to change camera view front or back, or close completely?
@suhailn2508
@suhailn2508 2 года назад
hi , please make a datachannel video with firebase and webrtc for messaging too, expecting from you , thank you for this great content
@IqbalSingh-es7bb
@IqbalSingh-es7bb 2 года назад
hello your tutorial make my day thanks can you please do this flutter webrtc with node js and socket
@shubhamtariyal439
@shubhamtariyal439 2 года назад
How to implement group video chat? Also I want to show buttons to open/close camera and mic, can you please help me with it?
@ramsmart8939
@ramsmart8939 2 года назад
It's a great effort. Keep going ❤️. This example is a one to one or one to many?
@FlutterExplained
@FlutterExplained 2 года назад
The video is about one - to - one communication.
@ramsmart8939
@ramsmart8939 2 года назад
@@FlutterExplained for one to many just change the _remote renderer into list.
@blessingsnthara
@blessingsnthara 2 года назад
@@ramsmart8939 were you able to implement this?
@naveenbharadwaj5059
@naveenbharadwaj5059 2 года назад
@@ramsmart8939 can you be more specific ? I'm trying to scale from 5-10 users in a meeting
@naveenbharadwaj5059
@naveenbharadwaj5059 2 года назад
Can anyone guide me to create mesh topology ? I want to scale users from 2 to atleast 5 users
@TheTahmeed
@TheTahmeed Год назад
Call does not work on different network. Like one device from broadband and another from mobile data. How to fix it??
@shubhamtariyal439
@shubhamtariyal439 2 года назад
Hi! Can we do video recording, chat, etc? or is it better to use services like Agora? I am confused which one to use(agora or web rtc)
@FlutterExplained
@FlutterExplained 2 года назад
I believe Agora uses WebRTC under the hood. So Agora is like a layer above to make the usage easier :)
@shubhamtariyal439
@shubhamtariyal439 2 года назад
@@FlutterExplained can you make a tutorial for video recording using web_rtc?
@alisampson6639
@alisampson6639 2 года назад
Thanks so much Sir.. But I want to ask how you can navigate back from the call screen after one party hangs up just like how every video call app works.
@001Debjeet
@001Debjeet 2 года назад
make a new screen after the call ends navigate to that screen
@techredefined6708
@techredefined6708 Год назад
Can we also add a feature like whiteboard to this ?
@sagorhossain6315
@sagorhossain6315 Год назад
excellent explanation..!❤ but here only one user can join..how can i implement the system to join multiple user..?
@naveenbharadwaj5059
@naveenbharadwaj5059 2 года назад
is it possible to share screen from one client to another ? like we do in gmeet,zoom
@FlutterExplained
@FlutterExplained 2 года назад
Yes it is, actually it is quite easy you just have to change inside of the openUserMedia the navigator.mediaDevices.getUserMedia to navigator.mediaDevices.getDisplayMedia. With that you get asked instead of sharing your webcam to share your monitor from the browser :), I hope that helps.
@techknowledgebase4504
@techknowledgebase4504 2 года назад
How to play audio stream in background when app not open?
@lmagentur7705
@lmagentur7705 2 года назад
i followed your code and tried to run everything on my ios device. it works perfectly fine. one thing i dont understand actually: if i create a room i get my video camera up and showing. if i just press open cam and mic like you did in the showcase i get an error Not found video track for RTCMediaStream. Do you have any idea what happens here?? Since creating a room gets the stream without any issue
@testrentech7802
@testrentech7802 Год назад
It's possible to one to many connection like live video streaming using this code?
@gourav7315
@gourav7315 2 года назад
Can I share screen using webrtc, Please make a video bon that
@hopetechnologie2969
@hopetechnologie2969 6 месяцев назад
hello, good work, can this work on mobile version of flutter ? Or just in web browser
@venkatavinaib6017
@venkatavinaib6017 2 года назад
Hey, I've been trying to implement the same thing which you did, but somehow I'm not getting any ice candidates for the video. Only the audio is working. Am I missing something?
@troyuit
@troyuit 2 года назад
Same here. When I tested on the ios and android the callee candidate collection were missing video ice candidates. And list of ice candidate in callee collection is always shorter than caller.
@jishnuraj1670
@jishnuraj1670 2 года назад
Does this work when the app is exported for Android?
@hdcutz2936
@hdcutz2936 Год назад
Similarly how to transfer pre-recorded video like this?
@yourcompany6708
@yourcompany6708 2 года назад
can i use for confrencing with multiple people ?????????????????????
@gourav7315
@gourav7315 2 года назад
Can i make chat web app using webrtc
@funnynews341
@funnynews341 2 года назад
Can you make videos about xmpp combine with WebRTC for building chat app?
@marwanaladwan4421
@marwanaladwan4421 Год назад
In my case there is a desktop app (not developed using flutter) connected with external camera and the app just displays what the camera records. In my flutter app, I want to recieve that video from the desktop app and display it in my flutter app. Is that possible using WebRTC?
@slymanyonga7226
@slymanyonga7226 Год назад
I don't know how to setup the firebase part, can you help,
@vishnugudavalli5472
@vishnugudavalli5472 Год назад
Give a brief info about webrtc automation using selenium
@marodonthemorone
@marodonthemorone 2 года назад
22:45 the best part 😂
@rajenderkatkuri7642
@rajenderkatkuri7642 2 года назад
Hey!! can we share *files* with a similar layout.
@Manish-ez8yq
@Manish-ez8yq 8 месяцев назад
very nice demonstration of webRTC, I love it. I face an issue which is when I make the website live and then create room and join from different systems, I cannot get the video connection. But when I tried it on same system it is working. eventually any one will use video calling from independent systems. please anybody could help me in this.
@minaraouf4120
@minaraouf4120 Год назад
Can I do this on mobile, not the web? And what are the steps?
@romeoangelesjr4414
@romeoangelesjr4414 2 года назад
Question: Will this only work for P2P connections? Or it could work like MS Teams?
@FlutterExplained
@FlutterExplained 2 года назад
Hi Romeo, it could work like teams. P2P is just how the connection is happening between two peers, one of the peer can be a distribution. As I mentioned you have a "room" that multiple people can connect to. My example is just for one person so far.
@cherriepie
@cherriepie 2 года назад
18:58 I don't understand the ICE candidates, why are there so many of them there?
@FlutterExplained
@FlutterExplained 2 года назад
Hi Cherrie, the ICE candidates are every possible connections that both clients can have should one fail the Webrtc will immediately try to connect via another ICE that’s why there are some more. I hope that helps 😊 feel free to read the Mozilla mdn documentation to that topic.
@stephenselvaraj8960
@stephenselvaraj8960 2 года назад
Super :)
@MuskanChaudhary-yt4ly
@MuskanChaudhary-yt4ly 2 месяца назад
Does this work for group video call? like if i want 5 people to be in the session?
@boulbabadobani4597
@boulbabadobani4597 2 года назад
Can I use webRTC with mobiles (without browser)?
@nayantala
@nayantala 3 года назад
Please Do explain it thoroughly, I have used it with flutter, I do have few questions about it.
@FlutterExplained
@FlutterExplained 3 года назад
I tried my best :)
@nayantala
@nayantala 2 года назад
@@FlutterExplained I know you did
@awaisjamil7047
@awaisjamil7047 Год назад
Hi @Flutter Explained I want to create app where flutter app can communicate with VR(unity) app using webrtc and Flutter app can discover vr headsets and connect to it and start sending and receiving text messages, please guide
@dennyraymond7505
@dennyraymond7505 2 года назад
hi i have a problem when hang up, the webcam light still on, are you got the same problem too?
@dennyraymond7505
@dennyraymond7505 2 года назад
fixed it. i accidentally assigned new localstream every time i init a room
@gofullstack
@gofullstack 2 года назад
I just don't know why I can't wrap my head around this thing. In my case I need to send the video from one end (client) to the others just like the live feature we've got here.
@livesoko
@livesoko Год назад
Hola, did you ever figure this out?
@garenkarapetian709
@garenkarapetian709 Год назад
Which version of Flutter was this written for???? I keep running into a multitude of incompatibility issues after running flutter pub upgrade.
@FlutterExplained
@FlutterExplained Год назад
True, it has been a while, if I find time in the next week I will work a bit on the web rtc project.
@gopikrishnan8999
@gopikrishnan8999 5 месяцев назад
How to set video off on and mic on and off in this code
@abdarhmanabuhejleh6548
@abdarhmanabuhejleh6548 2 года назад
I want to use Flutter WebRTC with a server so I can record the video call , can you help me ??? I want to make it global calls not locally , and I am having a trouble with that . any hints plz :(
@althafaralijaffarali1803
@althafaralijaffarali1803 2 года назад
Is it possible to create an enterprise level app using this?. If it so how can we make it hackerproof? Thanks for sharing your knowledge ❤️.
@FlutterExplained
@FlutterExplained 2 года назад
Yes I guess there are already a lot of companies that use WebRTC. bloggeek.me/massive-applications-using-webrtc/
@trongnhannguyenle5941
@trongnhannguyenle5941 9 месяцев назад
When I call from 2 Android devices to each other, it works fine, but when I call from an iPhone device to an Android device, the error "PlatformException(mediaStream AddTrack: Stream is null, null, null, null)" appears. , can you help me? Thank you very much.
@blessingsnthara
@blessingsnthara 2 года назад
I am trying to implement a one to many stream flutter app from following your tutorial, i have made a few changes to your code. when one user joins a room to watch other users stream it works perfectly but when a second user tries to also join the room it gives an error (Error: InvalidStateError: Failed to execute 'setRemoteDescription' on 'RTCPeerConnection': Failed to set remote answer sdp: Called in wrong state: stable)
@abdarhmanabuhejleh6548
@abdarhmanabuhejleh6548 2 года назад
can you share the code plz : (
@blessingsnthara
@blessingsnthara 2 года назад
@@abdarhmanabuhejleh6548 Thank you for your reply. I had to use RTMP protocol because I couldn't find a solution with webrtc. Nice coding!
@BhupeshRajShakya
@BhupeshRajShakya 2 года назад
hey can make video on data modal classes Please ??
@FlutterExplained
@FlutterExplained 2 года назад
Sure sounds like a topic a lot of people would be interested. I will add it to my list.
@kamal-xd7id
@kamal-xd7id Год назад
So, is WebRTC only limited to 1:1 communication or 2 max. How about live streaming from one broadcaster to 100s of viewers. Can it not be solved by WebRTC?
@FlutterExplained
@FlutterExplained Год назад
Yes it can be solved. Actually most of the video streaming offerings we use work like that (Google Meetup for example) but our example here is just for two participents. I can imagine that the complexity rises quite harsh from 1:1 vs 100 members but it should be solvable.
@user-hi6tf5ke8y
@user-hi6tf5ke8y 9 месяцев назад
Is this working in iOS and Android apps? My RTCPeerConnectionState keeps failing.
@FlutterExplained
@FlutterExplained 9 месяцев назад
Mhhh last time I checked it worked but feel free to crate a GitHub issue and I’ll have a look
@baopham6963
@baopham6963 2 года назад
so how to fix permission from android 10 to ... when we use share screen mobile android ios EglBase14Impl: Using OpenGL ES version 2 D/OrientationAwareSC( 4730): OrientationAwareScreenCapturer: initialized and orientation isPortrait? false D/AndroidRuntime( 4730): Shutting down VM E/AndroidRuntime( 4730): FATAL EXCEPTION: main E/AndroidRuntime( 4730): Process: com.asss, PID: 4730 E/AndroidRuntime( 4730): java.lang.SecurityException: Media projections require a foreground service of type ServiceInfo.FOREGROUND_SERVICE_TYPE_MEDIA_PROJECTION , please help me
@mahmoudabdulfattah7294
@mahmoudabdulfattah7294 2 года назад
thank you very much but, kindly I need more details even if paid please.
@luckyme6098
@luckyme6098 2 года назад
You should have tell about the package name at the beginning.....
@althafaralijaffarali1803
@althafaralijaffarali1803 2 года назад
Bro make a video on end to end encryption 🙃
@amjaddaher5032
@amjaddaher5032 Месяц назад
thanks ..every thing was working good...but suddenly : ICE Connection state changed: RTCIceConnectionState.RTCIceConnectionStateChecking connection state changed: RTCPeerConnectionState.RTCPeerConnectionStateConnecting ICE Connection state changed: RTCIceConnectionState.RTCIceConnectionStateDisconnected connection state changed: RTCPeerConnectionState.RTCPeerConnectionStateFailed
@rajk-oq7vc
@rajk-oq7vc Год назад
hi sir i used u r code but remote video is not streaming
@devsda1
@devsda1 Год назад
Try adding the await keyword to signaling.openUserMedia(_localRenderer, _remoteRenderer);
@rajenderkatkuri7642
@rajenderkatkuri7642 2 года назад
Hey!! will this work for Android ?
@3kdevelopers185
@3kdevelopers185 2 года назад
Sir, Please make a Video on How to localize (pdf text change to user selected language text) Pdf document in flutter??? ❤️ From Pakistan
@FlutterExplained
@FlutterExplained 2 года назад
Sounds quite difficult you problably need not only a translation package of your choice but also a pdf generator. I will add it to my video list thanks for the suggestion.
@eqatardotcom4520
@eqatardotcom4520 Год назад
Hi I am looking for a help on webrtc
@sever010
@sever010 Год назад
Richtig Gutes Video . Hast du auch einen Deutschen Kanal ?
@FlutterExplained
@FlutterExplained Год назад
Hi danke dir, ich arbeite derzeit daran einige Videos ins deutsche zu übersetzen. Je nachdem wie es ankommt. Feedback ist immer willkommen :) ru-vid.com/show-UCqmeXH2B1_X-k3po9ODJnBw
@michereff16
@michereff16 10 месяцев назад
How to use this without Firebase?
@FlutterExplained
@FlutterExplained 10 месяцев назад
If you do not want to use firebase you can do it with nearly every Real time DB provider such as Supabase etc. If you would like to create your own Server or want to host it yourself it getting tricky, you will need a Signiling server as explained here: antmedia.io/webrtc-signaling-servers-everything-you-need-to-know/
@michereff16
@michereff16 10 месяцев назад
@@FlutterExplained Thank you very much for replying! This webRTC stuff is the most complicated stuff I had to deal with so far haha. I'm currently learning dart/flutter and I wasn't able to figure it out how to actually use this package.
@FlutterExplained
@FlutterExplained 10 месяцев назад
Yeah same for me the video took me more than a month. Still working on the next video but could not find the time to invest 🙃
@mazekaty
@mazekaty Год назад
just support dart web ?
@gofullstack
@gofullstack 2 года назад
It's obvious that webrtc with Flutter is hell. I've been trying to do something with it on my own with no success even as an experienced developer who has done something with webrtc in the past. Now I can't even get the app to run after installing the newer version of flutter webrtc
@shubhammaurya1698
@shubhammaurya1698 11 месяцев назад
more then 2 people Can join meeting
@FlutterExplained
@FlutterExplained 11 месяцев назад
Yes they can but it will be a very big enhancement because you will have to keep track of the different rooms and how to connect them. I was not able to take a look into that but I am sure there are quite some good tutorials out there on how to create it. The easiest way is probably to follow along a web tutorial and convert it to Dart and Flutter.
@kamalCode
@kamalCode 2 года назад
Flutter Multivendor E-commerce app
@MuhammadIbrahim-cc4kb
@MuhammadIbrahim-cc4kb 4 месяца назад
peerConnectionSetRemoteDescription(): WEBRTC_SET_REMOTE_DESCRIPTION_ERROR: Failed to set remote answer sdp: Called in wrong state: stable E/flutter ( 6806): [ERROR:flutter/runtime/dart_vm_initializer.cc(41)] Unhandled Exception: Unable to RTCPeerConnection::setRemoteDescription: peerConnectionSetRemoteDescription(): WEBRTC_SET_REMOTE_DESCRIPTION_ERROR: Failed to set remote answer sdp: Called in wrong state: stable
@joachimsmityt
@joachimsmityt 2 года назад
Thank you very much for this wonderful tutorial! In 99% of the cases the "peerConnection?.onTrack" callback is not fired in the joinRoom method. I've spent several days now on this problem but I can't find the solution. Can you help me? Thanks
@devsda1
@devsda1 Год назад
Try adding the await keyword to signaling.openUserMedia(_localRenderer, _remoteRenderer);
Далее
WebRTC Crash Course
1:10:06
Просмотров 220 тыс.
Olive can see you 😱
01:00
Просмотров 20 млн
Never waste PASTA SAUCE @itsQCP
00:19
Просмотров 2,4 млн
🎤Пою РЕТРО Песни ✧˖°
3:04:48
Просмотров 1,7 млн
Best 30 Flutter Widgets, Packages & Tips
5:11
Просмотров 118 тыс.
How To Create A Video Chat App With WebRTC
28:53
Просмотров 898 тыс.
35 Flutter Tips That Will Change Your Life
10:53
Просмотров 294 тыс.
Learn WebRTC for Making Video Calling Apps💛
20:51
Самый СТРАННЫЙ смартфон!
0:57
Просмотров 32 тыс.
ДЕШЕВЫЙ НОУТБУК C OZON ЗА 17000р
13:00
Собери ПК и Получи 10,000₽
1:00
Просмотров 1,6 млн
Mac Studio на intel и 96gb? #apple #macstudio
0:50
Просмотров 202 тыс.