Piping video device over SSH or tcptunnel?
up vote
1
down vote
favorite
I want to attach an analog camera to an old linux computer and directly pipe the /dev/video0 to another computer, where I can use it as a device again (so /dev/video0 should go to /dev/remote0, for example)
(Reason for doing this is that the computer does not have enough power to encode the video)
Is that possible? I've seen people can pipe the data directly from the device over ssh into mplayer, but I need to have some sort of reference point for Zoneminder.
Edit: As Phil Hannent said: SSH would probably also be too resource intensive for the hardware as it has to encrypt the data it sends. So is this also possible over a program like tcptunnel?
Edit2: On the Unix & Linux stackexchange site I found a question that uses this for piping over ssh:
ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin
can that be done over tcptunnel?
linux ubuntu video ssh video-capture
add a comment |
up vote
1
down vote
favorite
I want to attach an analog camera to an old linux computer and directly pipe the /dev/video0 to another computer, where I can use it as a device again (so /dev/video0 should go to /dev/remote0, for example)
(Reason for doing this is that the computer does not have enough power to encode the video)
Is that possible? I've seen people can pipe the data directly from the device over ssh into mplayer, but I need to have some sort of reference point for Zoneminder.
Edit: As Phil Hannent said: SSH would probably also be too resource intensive for the hardware as it has to encrypt the data it sends. So is this also possible over a program like tcptunnel?
Edit2: On the Unix & Linux stackexchange site I found a question that uses this for piping over ssh:
ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin
can that be done over tcptunnel?
linux ubuntu video ssh video-capture
add a comment |
up vote
1
down vote
favorite
up vote
1
down vote
favorite
I want to attach an analog camera to an old linux computer and directly pipe the /dev/video0 to another computer, where I can use it as a device again (so /dev/video0 should go to /dev/remote0, for example)
(Reason for doing this is that the computer does not have enough power to encode the video)
Is that possible? I've seen people can pipe the data directly from the device over ssh into mplayer, but I need to have some sort of reference point for Zoneminder.
Edit: As Phil Hannent said: SSH would probably also be too resource intensive for the hardware as it has to encrypt the data it sends. So is this also possible over a program like tcptunnel?
Edit2: On the Unix & Linux stackexchange site I found a question that uses this for piping over ssh:
ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin
can that be done over tcptunnel?
linux ubuntu video ssh video-capture
I want to attach an analog camera to an old linux computer and directly pipe the /dev/video0 to another computer, where I can use it as a device again (so /dev/video0 should go to /dev/remote0, for example)
(Reason for doing this is that the computer does not have enough power to encode the video)
Is that possible? I've seen people can pipe the data directly from the device over ssh into mplayer, but I need to have some sort of reference point for Zoneminder.
Edit: As Phil Hannent said: SSH would probably also be too resource intensive for the hardware as it has to encrypt the data it sends. So is this also possible over a program like tcptunnel?
Edit2: On the Unix & Linux stackexchange site I found a question that uses this for piping over ssh:
ssh localhost dd if=/dev/video0 | mplayer tv://device=/dev/stdin
can that be done over tcptunnel?
linux ubuntu video ssh video-capture
linux ubuntu video ssh video-capture
edited Aug 11 '11 at 10:03
asked Aug 11 '11 at 9:14
skerit
43111530
43111530
add a comment |
add a comment |
3 Answers
3
active
oldest
votes
up vote
3
down vote
accepted
You can use netcat.
cat /dev/video0 | nc -l 1234
This will open a server on one host listening on port 1234
and sending uncompressed and unencrypted data from /dev/video0
to any client that connects. You can receive the data on other host by invoking:
nc videohost 1234 | mplayer tv://device=/dev/stdin
where videohost
is the host sending data from /dev/video0
.
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (mknod /tmp/videofifo p
) write the stream to it and pipe it's contents tomplayer
usingcat
. Not sure how the pipe would behave if you don't read the data from it though.
– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
add a comment |
up vote
2
down vote
I would seriously advise you against this. I recently tried streaming avi videos over an ssh:// file access and its painful. You have to remember that the video is being encrypted and then decrypted during this process.
If your computer cannot handle compressing the stream then it certainly will not be able to handle encrypting it.
Really you want to just have a tcp tunnel the raw data:
http://www.vakuumverpackt.de/tcptunnel/
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
add a comment |
up vote
0
down vote
The netcat solution didn't work for me. It either shows a pipe error, or cat
reporting Invalid input
.
This is the only solution that worked for me:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
This has the benefit of it being encoded, so you save bandwidth as a bonus.
Combine with tee and you can watch and record at the same time:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
This will open mplayer for live streaming and save it to a file containing the current datetime at the same time (example filename: 2018-11-22_01-22-10_recording.mkv
).
add a comment |
3 Answers
3
active
oldest
votes
3 Answers
3
active
oldest
votes
active
oldest
votes
active
oldest
votes
up vote
3
down vote
accepted
You can use netcat.
cat /dev/video0 | nc -l 1234
This will open a server on one host listening on port 1234
and sending uncompressed and unencrypted data from /dev/video0
to any client that connects. You can receive the data on other host by invoking:
nc videohost 1234 | mplayer tv://device=/dev/stdin
where videohost
is the host sending data from /dev/video0
.
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (mknod /tmp/videofifo p
) write the stream to it and pipe it's contents tomplayer
usingcat
. Not sure how the pipe would behave if you don't read the data from it though.
– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
add a comment |
up vote
3
down vote
accepted
You can use netcat.
cat /dev/video0 | nc -l 1234
This will open a server on one host listening on port 1234
and sending uncompressed and unencrypted data from /dev/video0
to any client that connects. You can receive the data on other host by invoking:
nc videohost 1234 | mplayer tv://device=/dev/stdin
where videohost
is the host sending data from /dev/video0
.
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (mknod /tmp/videofifo p
) write the stream to it and pipe it's contents tomplayer
usingcat
. Not sure how the pipe would behave if you don't read the data from it though.
– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
add a comment |
up vote
3
down vote
accepted
up vote
3
down vote
accepted
You can use netcat.
cat /dev/video0 | nc -l 1234
This will open a server on one host listening on port 1234
and sending uncompressed and unencrypted data from /dev/video0
to any client that connects. You can receive the data on other host by invoking:
nc videohost 1234 | mplayer tv://device=/dev/stdin
where videohost
is the host sending data from /dev/video0
.
You can use netcat.
cat /dev/video0 | nc -l 1234
This will open a server on one host listening on port 1234
and sending uncompressed and unencrypted data from /dev/video0
to any client that connects. You can receive the data on other host by invoking:
nc videohost 1234 | mplayer tv://device=/dev/stdin
where videohost
is the host sending data from /dev/video0
.
answered Aug 12 '11 at 8:06
Paweł Nadolski
922410
922410
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (mknod /tmp/videofifo p
) write the stream to it and pipe it's contents tomplayer
usingcat
. Not sure how the pipe would behave if you don't read the data from it though.
– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
add a comment |
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (mknod /tmp/videofifo p
) write the stream to it and pipe it's contents tomplayer
usingcat
. Not sure how the pipe would behave if you don't read the data from it though.
– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
Nice! Is it possible to pipe the data into a /dev/file first, and then separately opening it in mplayer?
– skerit
Aug 12 '11 at 11:25
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (
mknod /tmp/videofifo p
) write the stream to it and pipe it's contents to mplayer
using cat
. Not sure how the pipe would behave if you don't read the data from it though.– Paweł Nadolski
Aug 12 '11 at 11:42
I think creating device would be too complicated, but if you need something file-like you could try a fifo pipe (
mknod /tmp/videofifo p
) write the stream to it and pipe it's contents to mplayer
using cat
. Not sure how the pipe would behave if you don't read the data from it though.– Paweł Nadolski
Aug 12 '11 at 11:42
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'll give it a try tonight. Very interested to see how it'll turn out!
– skerit
Aug 12 '11 at 11:50
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
I'd also like to point out ipusb: it probably works even better than this. It lets you mount a usb device over the network.
– skerit
Sep 7 '11 at 21:51
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
"nc videohost 1234 | mplayer tv://device=/dev/stdin" output error "Playing tv://device=/dev/stdin. The filename option must be an integer: dev/stdin Struct tv, field filename parsing error: dev/stdin". I think this problem in my webcam or in my mplayer. "nc videohost 1234 | vlc - " work for me.
– user3439968
Feb 22 '16 at 20:24
add a comment |
up vote
2
down vote
I would seriously advise you against this. I recently tried streaming avi videos over an ssh:// file access and its painful. You have to remember that the video is being encrypted and then decrypted during this process.
If your computer cannot handle compressing the stream then it certainly will not be able to handle encrypting it.
Really you want to just have a tcp tunnel the raw data:
http://www.vakuumverpackt.de/tcptunnel/
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
add a comment |
up vote
2
down vote
I would seriously advise you against this. I recently tried streaming avi videos over an ssh:// file access and its painful. You have to remember that the video is being encrypted and then decrypted during this process.
If your computer cannot handle compressing the stream then it certainly will not be able to handle encrypting it.
Really you want to just have a tcp tunnel the raw data:
http://www.vakuumverpackt.de/tcptunnel/
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
add a comment |
up vote
2
down vote
up vote
2
down vote
I would seriously advise you against this. I recently tried streaming avi videos over an ssh:// file access and its painful. You have to remember that the video is being encrypted and then decrypted during this process.
If your computer cannot handle compressing the stream then it certainly will not be able to handle encrypting it.
Really you want to just have a tcp tunnel the raw data:
http://www.vakuumverpackt.de/tcptunnel/
I would seriously advise you against this. I recently tried streaming avi videos over an ssh:// file access and its painful. You have to remember that the video is being encrypted and then decrypted during this process.
If your computer cannot handle compressing the stream then it certainly will not be able to handle encrypting it.
Really you want to just have a tcp tunnel the raw data:
http://www.vakuumverpackt.de/tcptunnel/
answered Aug 11 '11 at 9:20
Phil Hannent
8501714
8501714
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
add a comment |
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
Right, I forgot about that. But how would you pipe device data over this?
– skerit
Aug 11 '11 at 9:31
add a comment |
up vote
0
down vote
The netcat solution didn't work for me. It either shows a pipe error, or cat
reporting Invalid input
.
This is the only solution that worked for me:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
This has the benefit of it being encoded, so you save bandwidth as a bonus.
Combine with tee and you can watch and record at the same time:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
This will open mplayer for live streaming and save it to a file containing the current datetime at the same time (example filename: 2018-11-22_01-22-10_recording.mkv
).
add a comment |
up vote
0
down vote
The netcat solution didn't work for me. It either shows a pipe error, or cat
reporting Invalid input
.
This is the only solution that worked for me:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
This has the benefit of it being encoded, so you save bandwidth as a bonus.
Combine with tee and you can watch and record at the same time:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
This will open mplayer for live streaming and save it to a file containing the current datetime at the same time (example filename: 2018-11-22_01-22-10_recording.mkv
).
add a comment |
up vote
0
down vote
up vote
0
down vote
The netcat solution didn't work for me. It either shows a pipe error, or cat
reporting Invalid input
.
This is the only solution that worked for me:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
This has the benefit of it being encoded, so you save bandwidth as a bonus.
Combine with tee and you can watch and record at the same time:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
This will open mplayer for live streaming and save it to a file containing the current datetime at the same time (example filename: 2018-11-22_01-22-10_recording.mkv
).
The netcat solution didn't work for me. It either shows a pipe error, or cat
reporting Invalid input
.
This is the only solution that worked for me:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | mplayer - -idle
This has the benefit of it being encoded, so you save bandwidth as a bonus.
Combine with tee and you can watch and record at the same time:
ssh user@host "ffmpeg -r 14 -s 640x480 -f video4linux2 -i /dev/video0 -f matroska -" | tee $(date +%Y-%m-%d_%H-%M-%S)_recording.mkv | mplayer - -idle
This will open mplayer for live streaming and save it to a file containing the current datetime at the same time (example filename: 2018-11-22_01-22-10_recording.mkv
).
edited Nov 22 at 3:22
answered Nov 21 at 23:59
confetti
1,1682724
1,1682724
add a comment |
add a comment |
Thanks for contributing an answer to Super User!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fsuperuser.com%2fquestions%2f321787%2fpiping-video-device-over-ssh-or-tcptunnel%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown