做过音频处理的朋友进来一下

dahuatttt 2013-09-22 09:59:59
问题1: 2个假设同编码同设置的音频文件要混合成1个音频文件,是否还是需要先解码成pcm后再混?或者说各有各的处理比如mp3和ogg。

问题2: 假设无论如何都需要先解码,2段pcm用什么算法混一起?

问题3: 假设无论如何都需要先解码再混合再编码,多次之后是不是音质下降严重(因为每次重新编码都应该会造成质量损失吧?)

问题4: ogg有没有相关函数可以做这事?
...全文
293 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
jiandingzhe 2013-09-26
  • 打赏
  • 举报
回复
引用 7 楼 dahuatttt 的回复:
[quote=引用 6 楼 jiandingzhe 的回复:] [quote=引用 4 楼 dahuatttt 的回复:] [quote=引用 2 楼 jiandingzhe 的回复:] 当然总是从压缩的数据(ogg、mp3等)转成非压缩的时间-幅度数据,然后再做处理。 是否能直接处理,要看位数、采样率是否一致。如果不一致就要转化成一致的才行,比如时间上差值、幅度上缩放。 反复解压、修改、再压缩,质量会下降。如果只是对完全一样的数据,用完全一样的方法压缩、解压,质量不会下降。
谢谢。顺带问下采样率放大用什么算法?比如22050放大到44100。
引用 3 楼 jiandingzhe 的回复:
另外,混一起你直接取平均值就行了啊
取平均好奇怪啊!那我先测试下吧。[/quote] 采样率放大不需要复杂的算法,通常用线性插值就行。如果觉得不爽就用更高端的,二次插值什么的。 混一起当然是取平均了。混一起之前,注意区分声道。文件通常都是俩声道的。如果你要写适应性更强的代码,就要读取文件的声道数,然后按那个处理声道。[/quote] 谢谢。 刚要动手又想到一个混合的问题。。。16位采样的数据,是16位作为一个整数去计算还是作为2个signed char分别算,还是16位作为一个float去算?[/quote] 当然不可能是两个signed char。 具体是16位整形还是半精度浮点,这都是可能的,取决于原本是怎么存储的。
赵4老师 2013-09-25
  • 打赏
  • 举报
回复
引用 12 楼 dahuatttt 的回复:
引用 11 楼 zhao4zhong1 的回复:
推荐使用NCTAudioStudio控件处理音频。
看到价格退缩了。
搜破解版不难吧。
dahuatttt 2013-09-25
  • 打赏
  • 举报
回复
引用 15 楼 zhao4zhong1 的回复:
有人告你侵犯版权说明你发了!
言之有理。。。
赵4老师 2013-09-25
  • 打赏
  • 举报
回复
有人告你侵犯版权说明你发了!
dahuatttt 2013-09-25
  • 打赏
  • 举报
回复
引用 13 楼 zhao4zhong1 的回复:
引用 12 楼 dahuatttt 的回复:
[quote=引用 11 楼 zhao4zhong1 的回复:] 推荐使用NCTAudioStudio控件处理音频。
看到价格退缩了。
搜破解版不难吧。[/quote]我胆小,怕人家告我。。。不过算法简单的自己也就那么搞下了。
dahuatttt 2013-09-24
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
推荐使用NCTAudioStudio控件处理音频。
看到价格退缩了。
赵4老师 2013-09-24
  • 打赏
  • 举报
回复
推荐使用NCTAudioStudio控件处理音频。
aizibion 2013-09-23
  • 打赏
  • 举报
回复
其他不清楚,但这点可以肯定 “假设无论如何都需要先解码再混合再编码,多次之后是不是音质下降严重” 如果不是采用有损压缩算法,多次编解码并不会造成质量下降。
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
引用 6 楼 jiandingzhe 的回复:
[quote=引用 4 楼 dahuatttt 的回复:] [quote=引用 2 楼 jiandingzhe 的回复:] 当然总是从压缩的数据(ogg、mp3等)转成非压缩的时间-幅度数据,然后再做处理。 是否能直接处理,要看位数、采样率是否一致。如果不一致就要转化成一致的才行,比如时间上差值、幅度上缩放。 反复解压、修改、再压缩,质量会下降。如果只是对完全一样的数据,用完全一样的方法压缩、解压,质量不会下降。
谢谢。顺带问下采样率放大用什么算法?比如22050放大到44100。
引用 3 楼 jiandingzhe 的回复:
另外,混一起你直接取平均值就行了啊
取平均好奇怪啊!那我先测试下吧。[/quote] 采样率放大不需要复杂的算法,通常用线性插值就行。如果觉得不爽就用更高端的,二次插值什么的。 混一起当然是取平均了。混一起之前,注意区分声道。文件通常都是俩声道的。如果你要写适应性更强的代码,就要读取文件的声道数,然后按那个处理声道。[/quote] 谢谢。 刚要动手又想到一个混合的问题。。。16位采样的数据,是16位作为一个整数去计算还是作为2个signed char分别算,还是16位作为一个float去算?
jiandingzhe 2013-09-23
  • 打赏
  • 举报
回复
引用 4 楼 dahuatttt 的回复:
[quote=引用 2 楼 jiandingzhe 的回复:] 当然总是从压缩的数据(ogg、mp3等)转成非压缩的时间-幅度数据,然后再做处理。 是否能直接处理,要看位数、采样率是否一致。如果不一致就要转化成一致的才行,比如时间上差值、幅度上缩放。 反复解压、修改、再压缩,质量会下降。如果只是对完全一样的数据,用完全一样的方法压缩、解压,质量不会下降。
谢谢。顺带问下采样率放大用什么算法?比如22050放大到44100。
引用 3 楼 jiandingzhe 的回复:
另外,混一起你直接取平均值就行了啊
取平均好奇怪啊!那我先测试下吧。[/quote] 采样率放大不需要复杂的算法,通常用线性插值就行。如果觉得不爽就用更高端的,二次插值什么的。 混一起当然是取平均了。混一起之前,注意区分声道。文件通常都是俩声道的。如果你要写适应性更强的代码,就要读取文件的声道数,然后按那个处理声道。
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
顺带问下采样率放大用什么算法?比如22050放大到44100。 -〉我的意思是中间插值的算法。也用前后样本取平均插进去?
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
引用 2 楼 jiandingzhe 的回复:
当然总是从压缩的数据(ogg、mp3等)转成非压缩的时间-幅度数据,然后再做处理。 是否能直接处理,要看位数、采样率是否一致。如果不一致就要转化成一致的才行,比如时间上差值、幅度上缩放。 反复解压、修改、再压缩,质量会下降。如果只是对完全一样的数据,用完全一样的方法压缩、解压,质量不会下降。
谢谢。顺带问下采样率放大用什么算法?比如22050放大到44100。
引用 3 楼 jiandingzhe 的回复:
另外,混一起你直接取平均值就行了啊
取平均好奇怪啊!那我先测试下吧。
jiandingzhe 2013-09-23
  • 打赏
  • 举报
回复
另外,混一起你直接取平均值就行了啊
jiandingzhe 2013-09-23
  • 打赏
  • 举报
回复
当然总是从压缩的数据(ogg、mp3等)转成非压缩的时间-幅度数据,然后再做处理。 是否能直接处理,要看位数、采样率是否一致。如果不一致就要转化成一致的才行,比如时间上差值、幅度上缩放。 反复解压、修改、再压缩,质量会下降。如果只是对完全一样的数据,用完全一样的方法压缩、解压,质量不会下降。
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
求平均效果不太好,目前还在摸索中。贴一些我查到的资料给后人吧 讨论: http://bbs.csdn.net/topics/70098987 http://www.audiobar.net/viewthread.php?tid=121485 http://stackoverflow.com/questions/376036/algorithm-to-mix-sound 常用的混音算法: http://shanewfx.github.io/blog/2013/08/14/caprure-audio-on-windows/ [荐] http://www.cppblog.com/jinq0123/archive/2007/10/31/AudioMixingStudy.html http://blog.csdn.net/leohwang/article/details/7517476 http://hi.baidu.com/285988185/item/1ca1eb464905e5096cc2f0fb 某算法代码: http://www.sf.org.cn/Article/multimedia/200511/14267.html http://blog.sina.com.cn/s/blog_4d61a7570101arsr.html 研究: http://blog.csdn.net/blade2001/article/details/7163352 http://wenku.baidu.com/view/46cd4b0ef12d2af90242e631.html
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
人工置顶下...
dahuatttt 2013-09-23
  • 打赏
  • 举报
回复
人工置顶...

64,651

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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