Can I stream 3 AXIS IP Cameras to 3 Live Streams on YouTube at the same time.

John Zapf

Member
Thanks, some good info there. I know screen connect was not being installed right but I googled it and googled it and googled it and there was no setup information. They got bought by another company and changed their name to connectwise and stopped supporting it a long time ago.

For me as an IT person the secreenconnect is very nice as I can get to all my client's workstations and Servers quick and easy. I wish they still kept up the support for linux.

Here is a picture of my home office servers and workstation setup. A bunch of that equipment 's been changed out since I took this picture. That rack used to be full of servers years ago and now I just have the one server with VMware ESXi on it running my Domain Controller, Exchange e-mail server, Web server, SMTP server, Backup server, Media Server, etc. I love VMware ESXi, virtual machines are awesome. It's so easy to duplicate, backup, restore... And FYI VMware blows Microsoft hyper V away.
 

Attachments

  • My Servers and Workstation.jpg
    My Servers and Workstation.jpg
    540.9 KB · Views: 5

John Zapf

Member
Also not sure if you have this link, but here's the link to my YouTube channel and you can see the three streams running there. Those will be eventually moving to the OBS studio box. https://www.youtube.com/@artisticimages

I'm really working my network here full time. Those three cameras record 24/7 to a hard drive on this server and they're putting out about 50 megs a second each. I go back and clean it up after a while I just have it there so if people find a good timestamp of something going on I can make a video. But during nesting season I save it all and earlier this year I have about 14 terabytes of data on a drive, she had 3 clutches.

On top of recording the three cameras they are also all streaming to YouTube. Right now the camera is streamed directly from each camera to YouTube there's a software in there that compresses it and links up YouTube it's a really cool setup but it's very limited.

Once the obs studio is in the camera's stream to YouTube that way. But I'm still going to always have the direct feed from the camera recording on the server, that's the best recording I can get from the cameras. HD 60fps, as clean as it gets. I know obs studio would record but that's kind of second generation and plus I have things that I'm going to be adding to the stream from obs and I don't want that on the recording.
 
Last edited:

AaronD

Active Member
Thanks, some good info there. I know screen connect was not being installed right but I googled it and googled it and googled it and there was no setup information. They got bought by another company and changed their name to connectwise and stopped supporting it a long time ago.

For me as an IT person the secreenconnect is very nice as I can get to all my client's workstations and Servers quick and easy. I wish they still kept up the support for linux.

Here is a picture of my home office servers and workstation setup. A bunch of that equipment 's been changed out since I took this picture. That rack used to be full of servers years ago and now I just have the one server with VMware ESXi on it running my Domain Controller, Exchange e-mail server, Web server, SMTP server, Backup server, Media Server, etc. I love VMware ESXi, virtual machines are awesome. It's so easy to duplicate, backup, restore... And FYI VMware blows Microsoft hyper V away.
Also not sure if you have this link, but here's the link to my YouTube channel and you can see the three streams running there. Those will be eventually moving to the OBS studio box. https://www.youtube.com/@artisticimages

I'm really working my network here full time. Those three cameras record 24/7 to a hard drive on this server and they're putting out about 50 megs a second each. I go back and clean it up after a while I just have it there so if people find a good timestamp of something going on I can make a video. But during nesting season I save it all and earlier this year I have about 14 terabytes of data on a drive, she had 3 clutches.

On top of recording the three cameras they are also all streaming to YouTube. Right now the camera is streamed directly from each camera to YouTube there's a software in there that compresses it and links up YouTube it's a really cool setup but it's very limited.

Once the obs studio is in the camera's stream to YouTube that way. But I'm still going to always have the direct feed from the camera recording on the server, that's the best recording I can get from the cameras. HD 60fps, as clean as it gets. I know obs studio would record but that's kind of second generation and plus I have things that I'm going to be adding to the stream from obs and I don't want that on the recording.
Nice!

There's also this plugin, by the way:
And you can put the quality setting way up to where you're almost saturating your drives...

But if you have something that works, then that's fine too.

And FYI <insert competitor> blows Microsoft <insert product> away.
Why am I not surprised? :-)
 

John Zapf

Member
So just an update. I'm doing a lot more work to get ready to do this. The new Cisco switch came in today and I was ordering CAT6 patch cables and the cat 8 patch cables were less money so I got them so no bottleneck there. So tomorrow I'm gonna clean up the server rack and change out all the wiring and the switch with the least amount of down time for everything. And then slowly bring the streams online with the OBS Server. I have to deal with the viewers and the YouTube link going down. I will loose all my thumbs up, 18K on one stream but there is nothing I can do. I want to be on HLS. I will keep you posted. I really appreciate all your help.
 

Attachments

  • New Switch.jpg
    New Switch.jpg
    671.2 KB · Views: 1

John Zapf

Member
I am still having a problem with this syntax For Windows I don't know how to open these separately it kind of opens them up the same way I do it two times and it says Are you sure you want to open another instance and then if I change the settings in one it changes the settings in the other.

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --profile "Fountain" --collection "Fountain Cam Scene" &

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --profile "Feeder" --collection "Feeder Cam Scene" &

I just don't get why this part is so complicated I can build anything in the world I just don't know how to open two sessions of this with all the right settings and each one totally separate!

John
 

AaronD

Active Member
I am still having a problem with this syntax For Windows I don't know how to open these separately it kind of opens them up the same way I do it two times and it says Are you sure you want to open another instance and then if I change the settings in one it changes the settings in the other.

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --profile "Fountain" --collection "Fountain Cam Scene" &

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --profile "Feeder" --collection "Feeder Cam Scene" &

I just don't get why this part is so complicated I can build anything in the world I just don't know how to open two sessions of this with all the right settings and each one totally separate!

John

Code:
cd "C:\Program Files\obs-studio\bin\64bit"
start "" "obs64.exe" --multi --profile "Fountain" --collection "Fountain Cam Scene"
start "" "obs64.exe" --multi --profile "Feeder" --collection "Feeder Cam Scene"
Windows doesn't do & on the end. It has a whole separate command just for that, with its own syntax, and you need to be in the correct directory already before you do that.
And from obs --help, the --multi flag keeps it from complaining.

Told you it was clunky. It gets even worse if you want it to wait and close everything in a particular order too. In Bash, that would be:
Bash:
obs --multi --profile "Fountain" --collection "Fountain Cam Scene" &
PID_FOUNTAIN=$!

obs --multi --profile "Feeder" --collection "Feeder Cam Scene" &
PID_FEEDER=$!

...

kill -TERM "$PID_FEEDER"

kill -TERM "$PID_FOUNTAIN"
The special variable $! is the process id of what was just forked off. There are several handy things like that.

---

Here's a complete Windows batch script that I used to use to start a hybrid meeting - local and remote - with two independent copies of OBS on the same machine:
Code:
@echo off
echo Starting the Meeting...



echo - Display Settings (extend)
REM (From https://superuser.com/a/1116541 on 2021-05-02)
REM     - /internal calls the internal screen (your primary display)
REM     - /external changes to the external screen (im not sure how well it handles when there is more than 1 screen)
REM     - /clone duplicates displays
REM     - /extend switches to extended settings
"C:\Windows\System32\DisplaySwitch.exe" /extend

REM wait 3000ms to settle down (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 3000 >nul



echo - Audio Processing
cd "C:\Program Files (x86)\VB\Voicemeeter"
start "" voicemeeter8.exe

REM wait 5000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 5000 >nul



echo - OBS Slave  (Video Switch for Audience, and Recorder)
cd "C:\Program Files\obs-studio\bin\64bit"
start "" obs64.exe --disable-updater --multi --studio-mode --profile "Meeting_Slave" --collection "Meeting_Slave" --scene "Meeting"

REM wait 30000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 30000 >nul

echo - OBS Master (Video Switch for Meeting)
REM start "" obs64.exe --disable-updater --multi --studio-mode --profile "Meeting_Master" --collection "Meeting_Master" --scene "Camera - Selfie" --startvirtualcam
start "" obs64.exe --disable-updater --multi --studio-mode --profile "Meeting_Master" --collection "Meeting_Master" --scene "Camera - PTZ" --startvirtualcam

REM wait 30000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 30000 >nul




echo - Online Meeting
cd "C:\Program Files\Google\Chrome\Application"
start "" chrome.exe https://meet.jit.si/OurMeeting#config.faceLandmarks.enableFaceCentering=false

REM wait 10000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 10000 >nul



echo - Manual Instructions
cd "C:\Users\Us\Documents\OurMeeting"
"%windir%\system32\notepad.exe" "Manual Instructions.txt"



echo - Display Settings (clone)
REM (From https://superuser.com/a/1116541 on 2021-05-02)
REM     - /internal calls the internal screen (your primary display)
REM     - /external changes to the external screen (im not sure how well it handles when there is more than 1 screen)
REM     - /clone duplicates displays
REM     - /extend switches to extended settings
"C:\Windows\System32\DisplaySwitch.exe" /clone

REM wait 3000ms to settle down (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 3000 >nul



echo Post Processing...
echo - File Directory
cd "C:\Users\Us"
start "" "Videos\Captures"

REM wait 2000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 2000 >nul



echo - Video Editor
cd "C:\Program Files\Shotcut"
start "" shotcut.exe

REM wait 30000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 30000 >nul



echo - Image Editor
cd %USERPROFILE%
start "" "C:\Program Files\GIMP 2\bin\gimp-2.10.exe"

REM wait 30000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 30000 >nul



echo - Upload to YouTube
cd "C:\Program Files\Google\Chrome\Application"
start "" chrome.exe "https://studio.youtube.com/channel/@OurChannel/videos/upload"

REM wait 10000ms to show the window (192.0.2.x does not exist per RFC 3330)
ping 192.0.2.1 -n 1 -w 10000 >nul



echo - Manual Instructions
cd "C:\Users\Us\Documents\OurMeeting"
start "" "%windir%\system32\notepad.exe" "Post Processing.txt"
Changing directories for every app, ping something that doesn't exist instead of sleeping, and some manual instructions in Notepad because not everything could be automated. Yuck! But it did technically work...as long as you followed those instructions.

The first Notepad is called directly, not started, so it waits for that window to close before moving on. The instructions in that file say to NOT CLOSE IT until the meeting is done! And that file also describes how to close everything else first. Linux can just have a dialog with an OK button, and do all the rest in the script itself.
 
Last edited:

John Zapf

Member
Thank you. and do you know if there is a way to down size the picture in picture frames. they are small but still taking up a tone of bandwith as they were still 1920x1080. they are small and need to be sized at a small res but cant see were to do that.
Screenshot 2023-08-13 212203.jpg
here to do that.
 

John Zapf

Member
Is there a way to separate the settings? when I change bitrate in one it changes it on all of them. Sorry, almost there.
 

AaronD

Active Member
Thank you. and do you know if there is a way to down size the picture in picture frames. they are small but still taking up a tone of bandwith as they were still 1920x1080. they are small and need to be sized at a small res but cant see were to do that.View attachment 96773here to do that.
The canvas has a fixed size, that you set in the global settings. *That* (after the final rescale that I really don't see the point of using) is what goes to the encoder. Just the one constant-sized grid of pixels. When you shrink things, they necessarily have fewer pixels after that.

Is there a way to separate the settings? when I change bitrate in one it changes it on all of them. Sorry, almost there.
Hmm... It could be that I had the same connection between instances, but I didn't notice because I wanted them to be as similar as possible except for the content itself. Some settings are supposed to be in the Profile, and others in the Scene Collection, so if you change both, they *should* be independent. But every once in a while, someone finds something that doesn't get separated. If you can isolate exactly what does or doesn't, you might get better attention on it to make it its own thread.

That looks to me like a copy of the single final output, sent to a bunch of different platforms: YouTube, Facebook, Twitch, etc. I don't think it sends different scenes to the same platform.

BUT... Before you get too far along, you might see if you can use the same camera in all 3 instances of OBS at the same time, since they do *all* appear in *all* of the streams. Historically, media access was exclusive for performance reasons, and not every system has removed that restriction yet. I've seen mixed reports about modern Windows. If it *is* still exclusive, then you *will* need to figure out how to do *everything* in a *single* instance of OBS, including different scenes going to different simultaneous streams, all to the same platform.
 

John Zapf

Member
Yes I can use the cameras as many times as I want other than bandwidth limitations. So I was able to tailor the streams with commands in the Media Sorce:

rtsp://root:Nascar427!@10.0.0.32/axis-media/media.amp?videocodec=h265&resolution=640x360&profile=H265-Stream

also I could tailor it even further with individual profiles in the camera, so that helps a lot.

Now the only thing I need is to be able to separate the bit rate in settings from all three streams. Two streams can do 4000 but one stream I need to do it at 6000. And I only have 20 up so I need every little bit I can get. If I had better Internet service here that wouldn't be an issue.

So is there anyting that you know of I can add to this?

"C:\Program Files\obs-studio\bin\64bit\obs64.exe" --multi --profile "Feeder Profiler" --collection "Feeder Cam Scene" &

--bitrate? or anything else?
 
Last edited:

John Zapf

Member
I don't know let me look at this I just opened up another session and it says 4000 for the bit rate and the other one still says 6000 so maybe I got a typo somewhere
 

John Zapf

Member
ya, that was my bad. tyop in the --profile, all is good now. Man that can get crazy with the stream keys etc gotta really pay attention to that.
 

John Zapf

Member
So I just wanted to let you know this. I use AXIS cameras because they have so much control you can do just about anything with the camera. So within the camera you can make however many profiles you want. You can make a profile for streaming you can make a profile that you want to record all with their individual sizes frame rates and compression etc. And then you can just do the stream command and specify the profile that you want to use.

For instance, for the feeder Cam the mainstream that's on its own URL I stream at 1080P. And then for the picture and picture one I made a profile for it to stream at 640x360 compression of 50. That helped a lot. on the Olive stream.

Main Stream rtsp://login:password@ip/axis-media/media.amp?streamprofile=H265-Stream
Small low res stream rtsp://login:password@ip/axis-media/media.amp?streamprofile=Low-Res

and then in the cameras you can set up as many schedules as you want to turn on infrared at whatever time and off whatever time to start recording at whatever time and turn off at whatever time and use whatever profile you want to use like I said the the settings and axis cameras are pretty much unlimited it's amazing.

So I'm getting there.
 

AaronD

Active Member
Looks like you're getting there! And yes, those typos can be a pain! If it's not an *exact* match, OBS will load whatever the last instance saved.
 

John Zapf

Member
Yeah but I'm not very happy. It's crashed three Times Now streams just stop and nothing in the crash report that's not what I wanted to see. The other system I used never went down one time in six months and this has gone down three times in one day. I don't know what's going on very low CPU usage only about 30% GPU usage. Not dropping any frames I don't get it.

And I don't know when it goes down. So it's not good it's just sitting there buffering and I have no idea it went down. And I'm telling you during nesting season when I have 1800 people on a stream going down won't be good.
 
Top