我试着用vlc和mpg123播放器通过gnuradio播放mp3音乐。遵循本站点的示例http://www.opendigitalradio.org/Simple_FM_transmitter_using_gnuradio
这些命令包括:
$ mkfifo stream_32k.fifo
$ mpg123 -r32000 -m -s http://maxxima.mine.nu:8000 >stream_32k.fifo使用我自己的mp3流,我遵循了这个示例,但是有一次我忘了把
$ mkfifo stream_32k.fifo发送到终端,而不是只键入
$ mpg123 -r32000 -m -s http://localhost:8080/mp3 >stream_32k.fifo直接送到航站楼。结果是一个没有突出显示的.fifo文件(就像用mkfifo创建的文件一样)。
当它与gnuradio一起使用时,用mkfifo制作的fifo文件只能播放一次,并且它的大小总是返回到0字节。
而我在没有使用mkfifo的情况下意外创建的那个文件保留了很长一段时间,我可以随时访问它,事实证明这对我更有好处。
以这种方式制作fifos有什么缺点吗?还有人能告诉我我到底做了什么吗?
非常感谢!
发布于 2015-04-04 07:34:13
您刚刚创建了一个常规文件。因此,它将字节保存在磁盘上,而真正的FIFO与永久磁盘存储无关,它本质上是内存中的一个缓冲区,您可以给它一个“磁盘名称”,以便面向文件的命令可以与它一起工作。缺点是,当你正在写一个永久磁盘文件时,你不能同时从它读取(一般来说,这取决于写程序实际是如何写的,但你不能依赖它)。
如果你认为文件名中有.fifo就是一个先进先出,那就错了。先进先出实用程序是使文件名附加到mkfifo的工具。
如果您想在保留文件的同时播放流,可以使用tee等实用程序
mkfifo stream.fifo
mpg123 ...... | tee saved_stream.mp3 > stream.fifo然后像往常一样在stream.fifo上玩游戏。Tee将“捕获”通过它的字节,并将它们保存到磁盘。
https://stackoverflow.com/questions/28291271
复制相似问题