ffmpeg编码如何实现同时录制声卡和麦克风的声音?

灰熊问题的最优解 2017-05-23 11:04:07
加精
我需要同时录制屏幕,声卡和麦克风的声音。
但是我编码时,只能录制屏幕和virtual-audio-capturer,或者屏幕和麦克风,不能同时录制三个,请问这是为什么?
代码太长,这里贴不出来,我发成博客了,麻烦各位大大移步到博客里看一下。
http://blog.csdn.net/a1069962325/article/details/72637534
...全文
6510 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
XDY070900 2017-12-14
  • 打赏
  • 举报
回复
问题解决了吗?怎么解决的?我遇到同样问题。
csulizhang 2017-07-10
  • 打赏
  • 举报
回复
如果你的播放端是采用SDL来播放,音频回调的时候往往一个声音通道只能播放一条流,及时你采用SDL_MixAudio,也不能达到效果(反正我是没实现),要实现多个声音同时播放,建议在推送端推两条流,播放端采用多线程方式,分别回调不同的声音,然后打开多个声音通道,分别播放声音,代码如下: BOOL flag = (SDL_GetAudioDeviceStatus(1) == SDL_AUDIO_STOPPED); m_nAudioDeviceID = 0; int ret = 0; if (flag) { ret = SDL_OpenAudio(&wanted_spec, NULL); m_nAudioDeviceID = 1; SDL_PauseAudio(0); } else { m_nAudioDeviceID = SDL_OpenAudioDevice(NULL, 0, &wanted_spec, NULL, SDL_AUDIO_ALLOW_ANY_CHANGE); } SDL_PauseAudioDevice(m_nAudioDeviceID, 0); 这样就可以同时播放两个声音了
u010826997 2017-06-16
  • 打赏
  • 举报
回复
  • 打赏
  • 举报
回复
引用 12 楼 lanxiaziyi 的回复:
[quote=引用 8 楼 a1069962325 的回复:] [quote=引用 5 楼 lanxiaziyi 的回复:] 1,avformat_new_stream,这个函数的意思是添加一个流到ffmpeg, 从你的需求看,你需要执行这个函数3次(一个视频流,两个音频流)。 也就是你要再添加一个音频流。 具体的写法,如果你现在代码看懂了,会很好加的。 2,(这一条可以忽略) 你的ffmepg版本有点老。现在都是3.几的写法。你的代码还是2.几的写法。
刚刚添加了一个麦克风流到ffmpeg了,但是还是没有麦克风的声音,代码流程看懂了,可能有些结构体设置的参数不对?所以才导致没有出现声音吗?调试看pFormatCtx_Out->nb_streams确实是3个。还有哪些设置是我遗漏的了吗? 代码已经更新到博客里了,麻烦在帮忙看一下。 对于ffmpeg,我还是初学者,ffmpeg的版本还不知道怎么区分,也不知道区别,以后会慢慢的去深入的。谢谢这位大神提供的有用信息。[/quote] 存在一个可能: 你的播放器只能播放一个音频流。 有两个解决办法: 1,修改播放器那里。音频播放部分你也要自己实现,你要开启两个音频播放线程来播放两个音频流。 2,修改采集端。 录制声卡和麦克风的声音,这一步的时候,将两个流混合成一个流(这种方式我没试过,但是我知道可以)。这样一来,就不用改播放器了。 [/quote]我现在在使用第一种方式。写完第一种后我再试试改采集端。谢谢大神~
punmpkin 2017-05-27
  • 打赏
  • 举报
回复
谢谢,很喜欢,多谢
赵4老师 2017-05-25
  • 打赏
  • 举报
回复
使用bass库? 参考相关成熟开源软件的做法?
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
麦克风需要设置音量?
不用设置音量,随着系统音量就行
赵4老师 2017-05-25
  • 打赏
  • 举报
回复
麦克风需要设置音量?
  • 打赏
  • 举报
回复
引用 5 楼 lanxiaziyi 的回复:
1,avformat_new_stream,这个函数的意思是添加一个流到ffmpeg, 从你的需求看,你需要执行这个函数3次(一个视频流,两个音频流)。 也就是你要再添加一个音频流。 具体的写法,如果你现在代码看懂了,会很好加的。 2,(这一条可以忽略) 你的ffmepg版本有点老。现在都是3.几的写法。你的代码还是2.几的写法。
刚刚添加了一个麦克风流到ffmpeg了,但是还是没有麦克风的声音,代码流程看懂了,可能有些结构体设置的参数不对?所以才导致没有出现声音吗?调试看pFormatCtx_Out->nb_streams确实是3个。还有哪些设置是我遗漏的了吗? 代码已经更新到博客里了,麻烦在帮忙看一下。 对于ffmpeg,我还是初学者,ffmpeg的版本还不知道怎么区分,也不知道区别,以后会慢慢的去深入的。谢谢这位大神提供的有用信息。
蓝黑墨水 2017-05-25
  • 打赏
  • 举报
回复
引用 8 楼 a1069962325 的回复:
[quote=引用 5 楼 lanxiaziyi 的回复:] 1,avformat_new_stream,这个函数的意思是添加一个流到ffmpeg, 从你的需求看,你需要执行这个函数3次(一个视频流,两个音频流)。 也就是你要再添加一个音频流。 具体的写法,如果你现在代码看懂了,会很好加的。 2,(这一条可以忽略) 你的ffmepg版本有点老。现在都是3.几的写法。你的代码还是2.几的写法。
刚刚添加了一个麦克风流到ffmpeg了,但是还是没有麦克风的声音,代码流程看懂了,可能有些结构体设置的参数不对?所以才导致没有出现声音吗?调试看pFormatCtx_Out->nb_streams确实是3个。还有哪些设置是我遗漏的了吗? 代码已经更新到博客里了,麻烦在帮忙看一下。 对于ffmpeg,我还是初学者,ffmpeg的版本还不知道怎么区分,也不知道区别,以后会慢慢的去深入的。谢谢这位大神提供的有用信息。[/quote] 存在一个可能: 你的播放器只能播放一个音频流。 有两个解决办法: 1,修改播放器那里。音频播放部分你也要自己实现,你要开启两个音频播放线程来播放两个音频流。 2,修改采集端。 录制声卡和麦克风的声音,这一步的时候,将两个流混合成一个流(这种方式我没试过,但是我知道可以)。这样一来,就不用改播放器了。
蓝黑墨水 2017-05-24
  • 打赏
  • 举报
回复
1,avformat_new_stream,这个函数的意思是添加一个流到ffmpeg, 从你的需求看,你需要执行这个函数3次(一个视频流,两个音频流)。 也就是你要再添加一个音频流。 具体的写法,如果你现在代码看懂了,会很好加的。 2,(这一条可以忽略) 你的ffmepg版本有点老。现在都是3.几的写法。你的代码还是2.几的写法。
happysheng2012 2017-05-24
  • 打赏
  • 举报
回复
同问这个问题
cattpon 2017-05-24
  • 打赏
  • 举报
回复
learning~
qihoojia 2017-05-24
  • 打赏
  • 举报
回复
同问这个问题
赵4老师 2017-05-23
  • 打赏
  • 举报
回复
参考软件Record Anything
  • 打赏
  • 举报
回复
有人来帮忙解惑吗?
敬告:该系列的课程在抓紧录制更新中,敬请大家关注。敬告: 该系列的课程涉及:FFmpeg,WebRTC,SRS,Nginx,Darwin,Live555,等。包括:音视频、流媒体、直播、Android、视频监控28181、等。  我将带领大家一起来学习:采集麦克风、PCM重采样、AAC或MP3音频编码存储、并直播。具体内容包括:1.FFmpeg采集麦克风并存储为PCM。2.PCM重采样原理及实战。3.采集麦克风并实时转码AAC或MP3并保存文件。4.采集麦克风并实时转码AAC并可以直播。 音视频与流媒体是一门很复杂的技术,涉及的概念、原理、理论非常多,很多初学者不学 基础理论,而是直接做项目,往往会看到c/c++的代码时一头雾水,不知道代码到底是什么意思,这是为什么呢? 因为没有学习音视频和流媒体的基础理论,就比如学习英语,不学习基本单词,而是天天听英语新闻,总也听不懂。所以呢,一定要认真学习基础理论,然后再学习播放器、转码器、非编、流媒体直播、视频监控、等等。 梅老师从事音视频与流媒体行业18年;曾在永新视博、中科大洋、百度、美国Harris广播事业部等公司就职,经验丰富;曾亲手主导广电直播全套项目,精通h.264/h.265/aac,曾亲自参与百度app上的网页播放器等实战产品。 目前全身心自主创业,主要聚焦音视频+流媒体行业,精通音视频加密、流媒体在线转码快编等热门产品。

5,530

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 模式及实现
社区管理员
  • 模式及实现社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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