我正在尝试通过管道将/dev/video0发送到out.raw,然后立即在omxplayer中读取它。但是我在omxplayer中没有看到图片(我用mplayer out.raw ->播放out.raw,但是没有显示图片)
我的命令:
mkfifo out.raw
mplayer tv:///dev/video0 -dumpstream -dumpfile out.raw &
omxplayer out.raw你知道为什么我拍不到照片吗?
发布于 2017-04-06 09:10:22
在这种情况下,不清楚你的video0设备是什么,这是有区别的,因为mplayer会以不同的方式初始化它。
其次,在许多情况下,您会发现即使将out.raw更改为普通文件,mplayer也不会写入任何内容。
对于我的笔记本电脑摄像头,使用以下命令可以正确地将数据发送到先进先出:mencoder tv:// -tv driver=v4l2:width=960:height=720:fps=15:outfmt=mjpeg -nosound -ovc copy -o out.fifo
但是,这指定MEncoder应该以MJPEG格式从输入设备读取,并简单地将帧复制到先进先出。
播放器读取先进先出没有准备好截断的MJPEG,所以你应该尝试转码它:-ovc x264 -of avi。
无论如何,玩FIFO都会不止一次遇到问题,除非播放器非常小心地处理截断的帧,并且您的输出包含许多关键帧。
如果没有从FIFO读取任何内容,则写入FIFO的操作最终会阻塞。
也许如果你弄清楚为什么要使用FIFO,可能会有更好的解决方案。
发布于 2017-04-07 08:02:03
如果可能的话,我会使用VLC。
cvlc v4l2:///dev/video0 --sout=file/ps:go.mpg cvlc (TIL:)参考:https://wiki.videolan.org/Documentation:Streaming_HowTo/Receive_and_Save_a_Stream/
编辑好吧,我试了一下我的旧版Linux Mint (vlc 2.0.6和mplayer而不是omxplayer)。您可以选择另一种mux=XXX,请参阅VLC Muxers
mkfifo /tmp/out.raw
cvlc <video_input> --sout="#duplicate{dst=std{access=file,dst='/tmp/out.raw',mux=avi},dst=nodisplay}"
mplayer /tmp/out.rawPS:我已经很多年没有使用VLC了,上面的是未经测试的。我只有5分钟的时间消磨时间,幸运的是我发现了你的问题,我决定回答。
https://stackoverflow.com/questions/37720612
复制相似问题