我正在尝试将/dev/video0 通过管道传输到 out.raw,然后立即读入 omx播放器。但是我在 omxplayer 中没有得到任何图片(我尝试了同样的方法 mplayer out.raw -> 播放 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
但是,这指定 MEncoder 应该以 MJPEG 格式从 INPUT 设备读取,并简单地将帧复制到 fifo。
读取 FIFO 的播放器不会为截断的 MJPEG 做好准备,因此您应该尝试对其进行转码:-ovc x264 -of avi
。
无论如何,除非播放器在处理截断帧的方式上非常小心,并且您的输出包含大量关键帧,否则您将不止一次地遇到问题。
如果没有从 FIFO 读取任何内容,写入它最终会阻塞。
如果您弄清楚为什么要使用 FIFO,也许会有更好的解决方案。
关于linux - 将/dev/video0 的输出转储到 fifo 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37720612/