首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >fuse & gstreamer转码

fuse & gstreamer转码
EN

Stack Overflow用户
提问于 2010-08-02 20:01:22
回答 2查看 670关注 0票数 0

我正在尝试创建一个FUSE fs,它可以将所有的声音文件转码为mp3。我的第一个想法是使用gstreamer作为转码的后端。我考虑过使用这个管道:

代码语言:javascript
复制
gst-launch -v filesrc location=01\ New\ Born.flac ! decodebin ! audioconvert ! lame vbr=4 vbr-quality=9 ! id3v2mux ! appsink

fuse expect的python绑定在读取文件时调用此函数:

代码语言:javascript
复制
def read(self, length, offset):

我如何将缓冲区从gstreamer转移到fuse fs?我不知道怎么处理这件事。我以前从来没有用过appsink。

我希望我的意思很清楚。

EN

回答 2

Stack Overflow用户

发布于 2010-08-03 01:06:38

我不认为你需要费心去处理appsink。我的直觉是,代码转换部分与文件系统部分分离得越远越好。在单独的线程或进程中将代码转换为文件链接,并传递消息以告诉FUSE守护进程代码转换已经进行了多远。

我使用filesink而不是appsink,在许多工作线程/进程中进行代码转换,这些工作线程/进程将.mp3s写入到一个大小可控的缓存目录中,并让appsink阻塞,直到正在进行的代码转换文件足够长来满足请求。

这是filesink的源代码。在没有查找的情况下,它似乎只是将每个缓冲区的内容附加到文件中。http://mediatools.cs.ucl.ac.uk/nets/newvideo/browser/gst-cvs/gstreamer/plugins/elements/gstfilesink.c#L436

你也可以通过下载mp3fs或gstfs来节省大量的时间和麻烦,它们已经完成了你提到的几乎所有的事情。

票数 0
EN

Stack Overflow用户

发布于 2010-08-04 21:10:42

您是否尝试过: giosink写入任何支持GIO的位置giosrc从任何支持GIO的位置读取

使用Gio,您应该能够将FUSE视为任何文件系统。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3387506

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档