gstreamer音频文件截取问题,高手请进!!

Kity90 2010-07-20 02:33:19
最近在用C语言做linux下的一个音乐播放器,用gstreamer做播放后台,其中一部分要实现音频剪切功能,现在能够知道bitrate,type和需要截取的时间段,我想通过比特率和一对时间点来获取起始和终止偏移量,但不知用何函数获取音频文件这一部分,望前辈指点,先谢啦!加Q:1427945415,非诚勿扰,谢谢。
...全文
157 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
Kity90 2010-07-23
  • 打赏
  • 举报
回复
不好意思,差点忘了结贴了
最后合并于格式转换程序中,用gst_element_seek控制起止时间。
您的方法估计也行,不过感觉不太舒服,呵呵,不管怎样还是给分吧,谢啦。
wwwunix 2010-07-21
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 kity90 的回复:]

恩,再次感谢。这个貌似确实可以截得文件,但是这样的文件截取不完整,因为有些音频文件是变比特率的,那么这样的方法是会出错的,看来还得另想办法
[/Quote]
基本原理是一样的。变比特率的文件,你在计算时也采用动态计算。即每次获取一帧数据后,都检查下一帧的比特率,重新计算需要的字节数就行了。
Kity90 2010-07-20
  • 打赏
  • 举报
回复
恩,再次感谢。这个貌似确实可以截得文件,但是这样的文件截取不完整,因为有些音频文件是变比特率的,那么这样的方法是会出错的,看来还得另想办法
wwwunix 2010-07-20
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 kity90 的回复:]
你是说用C标准库中的文件操作吗?哦,这个还能打开并处理音频格式的文件?资料查阅中。。。。。。谢谢
[/Quote]
是的。这些函数可以处理所有的文件。
Kity90 2010-07-20
  • 打赏
  • 举报
回复
你是说用C标准库中的文件操作吗?哦,这个还能打开并处理音频格式的文件?资料查阅中。。。。。。谢谢
wwwunix 2010-07-20
  • 打赏
  • 举报
回复
直接用seek()和read()两个函数就可以了。
Kity90 2010-07-20
  • 打赏
  • 举报
回复
。。。。。。
感谢楼上的哥哥参与讨论,这个算术题我还是会做的。。。。。。
问题是函数实现获取文件中的这两个偏移量,谢谢指点
wwwunix 2010-07-20
  • 打赏
  • 举报
回复
举个例子:
加入采样率为44KHZ(44100HZ),双声道,16位的音频文件。求时间第20秒的位置
则每秒钟的声音数据为44100x2x(16/2)=176400 Bytes
那么第20秒的位置为:
176400x20=3528000 Bytes
也就是说假设声音数据的开始位置为offset=0
那么第20秒的位置为offset=3528000

23,116

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧