Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 将输出从/dev/video0转储到fifo文件_Linux_File_Save_V4l2_Mplayer - Fatal编程技术网

Linux 将输出从/dev/video0转储到fifo文件

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

我正在尝试将/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

你知道我为什么没有看到图片吗?

不清楚你的
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),它现在似乎被称为
    cvlc
    (TIL:)
  • 如果您愿意,它还可以通过HTTP或多播进行转码和流式传输
参考:

编辑 好的,我尝试了我古老的Linux Mint(VLC2.0.6和mplayer,而不是omxplayer)。mux=XXX可以是您的另一个选择,请参阅

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),它现在似乎被称为
    cvlc
    (TIL:)
  • 如果您愿意,它还可以通过HTTP或多播进行转码和流式传输
参考:

编辑 好的,我尝试了我古老的Linux Mint(VLC2.0.6和mplayer,而不是omxplayer)。mux=XXX可以是您的另一个选择,请参阅

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正常交互:
核心输入错误:无法启动流输出实例,中止