Linux 将输出从/dev/video0转储到fifo文件
我正在尝试将/dev/video0管道传输到out.raw,然后立即将其读入 omxplayer。但是我在omxplayer中没有得到任何图片(我用同样的方法尝试过) mplayer out.raw->Playing out.raw,但未显示图片) 我的命令:Linux 将输出从/dev/video0转储到fifo文件,linux,file,save,v4l2,mplayer,Linux,File,Save,V4l2,Mplayer,我正在尝试将/dev/video0管道传输到out.raw,然后立即将其读入 omxplayer。但是我在omxplayer中没有得到任何图片(我用同样的方法尝试过) mplayer out.raw->Playing out.raw,但未显示图片) 我的命令: mkfifo out.raw mplayer tv:///dev/video0 -dumpstream -dumpfile out.raw & omxplayer out.raw 你知道我为什么没有看到图片吗?不清楚你的vide
mkfifo out.raw
mplayer tv:///dev/video0 -dumpstream -dumpfile out.raw &
omxplayer out.raw
你知道我为什么没有看到图片吗?不清楚你的
video0
设备是什么。在这种情况下,它会起作用,因为mplayer会以不同的方式初始化它
其次,在许多情况下,您会发现即使将out.raw
更改为普通文件,mplayer也不会写入任何内容
对于我的笔记本电脑网络摄像头,使用以下选项将正确地向FIFO发送数据:
mencoder-tv://-tv-driver=v4l2:width=960:height=720:fps=15:outfmt=mjpeg-nosound-ovc copy-o out.fifo
但是,这规定孟码器应该以MJPEG格式从输入设备读取,并简单地将帧复制到fifo
读取FIFO的播放器没有为截断的MJPEG做好准备,因此您应该尝试对其进行转码:-ovc x264-of avi
不管怎样,您将在多次播放FIFO时遇到问题,除非播放器非常小心地处理截断的帧,并且您的输出包含大量关键帧
如果没有从FIFO读取任何内容,写入FIFO的内容最终将被阻止
如果您澄清为什么要使用FIFO,可能会有更好的解决方案。不清楚您的
video0
设备是什么。在这种情况下,它会产生不同,因为mplayer将以不同的方式初始化它
其次,在许多情况下,您会发现即使将out.raw
更改为普通文件,mplayer也不会写入任何内容
对于我的笔记本电脑网络摄像头,使用以下选项将正确地向FIFO发送数据:
mencoder-tv://-tv-driver=v4l2:width=960:height=720:fps=15:outfmt=mjpeg-nosound-ovc copy-o out.fifo
但是,这规定孟码器应该以MJPEG格式从输入设备读取,并简单地将帧复制到fifo
读取FIFO的播放器没有为截断的MJPEG做好准备,因此您应该尝试对其进行转码:-ovc x264-of avi
不管怎样,您将在多次播放FIFO时遇到问题,除非播放器非常小心地处理截断的帧,并且您的输出包含大量关键帧
如果没有从FIFO读取任何内容,写入FIFO的内容最终将被阻止
如果你澄清为什么要使用FIFO,可能会有更好的解决方案。如果可能的话,我会使用VLC
cvlc v4l2:///dev/video0 --sout=file/ps:go.mpg
- VLC也可以在CLI中工作(不仅仅是GUI),它现在似乎被称为
(TIL:)cvlc
- 如果您愿意,它还可以通过HTTP或多播进行转码和流式传输
mkfifo/tmp/out.raw
cvlc--sout=“#duplicate{dst=std{access=file,dst='/tmp/out.raw',mux=avi},dst=nodisplay}”
mplayer/tmp/out.raw
PS:我已经好几年没有使用VLC了,上面的内容还没有经过测试。我只有5分钟的时间,幸运地发现我决定回答你的问题 如果可能的话,我会改用VLC
cvlc v4l2:///dev/video0 --sout=file/ps:go.mpg
- VLC也可以在CLI中工作(不仅仅是GUI),它现在似乎被称为
(TIL:)cvlc
- 如果您愿意,它还可以通过HTTP或多播进行转码和流式传输
mkfifo/tmp/out.raw
cvlc--sout=“#duplicate{dst=std{access=file,dst='/tmp/out.raw',mux=avi},dst=nodisplay}”
mplayer/tmp/out.raw
PS:我已经好几年没有使用VLC了,上面的内容还没有经过测试。我只有5分钟的时间,幸运地发现我决定回答你的问题 VLC无法与FIFO正常交互:
核心输入错误:无法启动流输出实例,中止
VLC无法与FIFO正常交互:核心输入错误:无法启动流输出实例,中止