精华内容
下载资源
问答
  • 音频的数据流程走向,有些描述不正确的,需要自己看代码再理解理解了,先上个流程图吧,凑合着看   文字描述 1、<audio-io.c> input_and_output (struct audio_output *audio, uint64_t audio_...

    声明:文章内容仅代表个人观点,不保证描述的准确性,仅供参考!

    音频的数据流程走向,有些描述不正确的,需要自己看代码再理解理解了,先上个流程图吧,凑合着看

     

    文字描述

    1、<audio-io.c> input_and_output (struct audio_output *audio, uint64_t audio_time, uint64_t prev_time)
    	获取音频数据
    	清空所有混音器audio->mixes中的每个混音器的buff,并逐个将混音器的每个声道buff指针赋值给局部变量audio_output_data data[MAX_AUDIO_MIXES],
    	调用已绑定的回调函数 audio->input_cb (audio->input_param, prev_time, audio_time, &new_ts, active_mixes, data)获取新的音频数据
    	通过修改局部变量data中各个指针的buff内容,来完成修改 audio->mixes 中的每个混音器的buff内容
    	audio->input_cb回调函数绑定的接口为 obs-audio.c 中的 audio_callback 
    2、<obs-audio.c> audio_callback (void *param,uint64_t start_ts_in, uint64_t end_ts_in, uint64_t *out_ts,uint32_t mixers, struct audio_output_data *mixes)
    	获取音频码率 sample_rate ,音频声道 channels
    	遍历当前场景中的所有源( source ),加入到音频的渲染队列 audio->render_order 中 push_audio_tree (NULL, source, audio);
    	以及 audio->root_nodes 中,da_push_back ( audio->root_nodes , &source );
    	把系统自带的音频输入输出音频源(如音响和麦克风)加入到渲染队列 audio->render_order 中
    	source = data->first_audio_source;
    	while (source) {
    		push_audio_tree(NULL, source, audio);
    		source = (struct obs_source*)source->next_audio_source;
    	}
    	循环调用接口 obs_source_audio_render 对渲染队列中的所有源做音频数据渲染,每个渲染完成的音频数据存放在 source->audio_output_buf 中
    3、<obs-source.c> void obs_source_audio_render(obs_source_t *source, uint32_t mixers,size_t channels, size_t sample_rate, size_t size)
    	如果绑定了音频渲染器,则调用custom_audio_render:
    		static void custom_audio_render(obs_source_t *source, uint32_t mixers,size_t channels, size_t sample_rate)
    			将源的音频输出buff指针赋值给局部变量obs_source_audio_mix audio_data
    			audio_data.output[mix].data[ch] = source->audio_output_buf[mix][ch];
    			调用source->info.audio_render回调函数,填充audio_data中各个buff的内容,调用完成后source->audio_output_buf中的音频数据填充完成
    			该回调绑定接口为obs-scene.c中的scene_audio_render(),具体是如何获取的没再细看
    	否则调用process_audio_source_tick:
    		static inline void process_audio_source_tick(obs_source_t *source,uint32_t mixers, size_t channels, size_t sample_rate,size_t size)
    			这个就比较简明了,将source->audio_input_buf中各个声道的数据拷贝到source->audio_output_buf中
    	设置音频输出音量大小,apply_audio_volume
    	执行完成,返回audio_callback,继续下一步
    4、<obs-audio.c> audio_callback
    	处理混音:调用mix_audio(),根据audio->root_nodes队列,循环处理将source->audio_output_buf中的音频数据添加到每个与其相关的混音器中,传入混音器集合的数组
    	,当前源,声道,音频采样率,时间戳
    		static inline void mix_audio(struct audio_output_data *mixes,obs_source_t *source, size_t channels, size_t sample_rate,	struct ts_info *ts)
    			for (size_t mix_idx = 0; mix_idx < MAX_AUDIO_MIXES; mix_idx++) {
    				for (size_t ch = 0; ch < channels; ch++) {
    					register float *mix = mixes[mix_idx].data[ch];
    					register float *aud = source->audio_output_buf[mix_idx][ch];
    					register float *end;
    					mix += start_point;
    					end = aud + total_floats;
    					while (aud < end)
    						*(mix++) += *(aud++);
    				}
    			}
    	混音处理完成后,即得到所有混音器中的已处理完成的混音数据,用于接下来进行的音频编码以及推流
    5、<audio-io.c> input_and_output
    	执行完成audio->input_cb,并得到混音器的完整数据后,执行函数 clamp_audio_output 取缔混音器中的所有数据为[-1.0,1.0],
    	至于为什么要将数据设置成这样,我也不知道。。。。
    		static inline void clamp_audio_output (struct audio_output *audio, size_t bytes)
    			for (size_t plane = 0; plane < audio->planes; plane++) {
    				float *mix_data = mix->buffer[plane];
    				float *mix_end = &mix_data[float_size];
    				while (mix_data < mix_end) {
    					float val = *mix_data;
    					val = (val >  1.0f) ?  1.0f : val;
    					val = (val < -1.0f) ? -1.0f : val;
    					*(mix_data++) = val;
    				}
    			}
    	遍历所有混音器,调用 do_audio_output 接口,输出音频数据:
    	static inline void do_audio_output (struct audio_output *audio,size_t mix_idx, uint64_t timestamp, uint32_t frames)
    		将当前混音器的所有声道的buff指针强转成uint8_t*,赋值给局部变量audio_data data,更新data中的frames 和 时间戳 
    		对数据进行重新采样resample_audio_output,
    		mix->inputs数据存放的是输出个数,包括录像和推流,两个输出类型绑定的输出回调函数不同,当前是以推流为例
    		调用输出回调函数input->callback进行音频数据输出,推流绑定的接口为<obs-encoder.c>中的 receive_audio
    以上是获取混音完成后的数据,接下来是音频编码内容
    6、	<obs-encoder.c> static void receive_audio (void *param, size_t mix_idx, struct audio_data *data)
    	判断音频第一次数据是否收到,收到第一次数据后,清空encoder->audio_input_buff
    		if (!encoder->first_received) {
    			encoder->first_raw_ts = data->timestamp;
    			encoder->first_received = true;
    			clear_audio(encoder);
    		}
    	调用 buffer_audio 将音频数据添加到encoder的音频数据缓存audio_input_buff
    		static bool buffer_audio(struct obs_encoder *encoder, struct audio_data *data)
    			检查视频数据是否已经收到,没有收到视频数据,不发送音频数据
    				uint64_t v_start_ts = encoder->paired_encoder->start_ts;
    				/* no video yet, so don't start audio */
    				if (!v_start_ts) {
    					success = false;
    					goto fail;
    				}
    			检查音视频时间戳是否同步,下一帧音频数据的时间戳小于当前视频时间戳,说明音频数据慢了,不发送音频数据
    				end_ts += (uint64_t)data->frames * 1000000000ULL /
    					(uint64_t)encoder->samplerate;
    				if (end_ts <= v_start_ts) {
    					success = false;
    					goto fail;
    				}
    			音频数据已开始,并且和视频数据配对成功时,将音频数据添加到encoder->audio_input_buff
    				push_back_audio(encoder, data ,size ,offset_size)
    	音频数据大小大于一帧的音频数据大小时,调用 send_audio_data 发送音频数据
    		send_audio_data(encoder);
    			static void send_audio_data(struct obs_encoder *encoder)
    				取出音频数据,存放在局部变量 encoder_frame enc_frame中,调用do_encode 执行推流前的音频编码
    					static inline void do_encode (struct obs_encoder *encoder, struct encoder_frame *frame)
    						创建待推流的数据包 	struct encoder_packet pkt = {0}; 初始化数据包的基础数据,包括计算帧率的分子和分母,编码器
    						调用编码器的回调函数进行编码encoder->info.encode,当前例子中调用的时aac编码器,回调接口为模块obs-ffmpeg.dll 中的
    						obs-ffmpeg-audio-encoders.c enc_encode
    7、obs-ffmpeg.dll <obs-ffmpeg-audio-encoders.c> static bool enc_encode (void *data, struct encoder_frame *frame,struct encoder_packet *packet, bool*received_packet)
    	frame中的音频数据拷贝到 enc_encoder->samples 中,调用 do_encode 接口编码
    		static bool do_encode (struct enc_encoder *enc,struct encoder_packet *packet, bool *received_packet)
    			调用ffmpeg接口,对音频数据进行编码,编码完成后数据存放在AVPacket avpacket中,再拷贝到enc->packet_buffer,并将packet_buffer的指针
    			赋值给待推流发送的数据包packet->data,设置packet中的相关参数,pts时间戳,dts编码时间戳,size编码后数据大小,时间基的分子和分母
    			此时已完成了音频数据的推流所需的编码处理,得到的packet即将用于音频数据推流
    8、libobs <obs-encoder.c> do_encode
    	完成编码回调,使用系统时间而不是使用相对时间修改完成编码的pkt中的dts_usec和sys_dts_usec 
    	随后,根据encoder->callback.num循环调用send_packet,至于这个callback为什么会是多个,以及什么情况下会是多个,暂时猜测是包含推流和录像的回调
    		static inline void send_packet (struct obs_encoder *encoder,struct encoder_callback *cb, struct encoder_packet *packet)
    			这里在发送数据包之前,需要对视频的第一帧发送进行单独处理
    			如果发送的视频第一帧,调用接口send_first_video_packet,在编码数据的前段添加sei信息,然后再调用cb->new_packet回调函数
    			否则直接调用回调结构体中的cb->new_packet接口,该回调接口绑定至obs-output.c interleave_packets ,并且这个回调是音频和视频通用的回调
    			就是说音频和视频数据的推流都是在这里执行数据包的发送
    9、libobs <obs-output.c> static void interleave_packets (void *data, struct encoder_packet *packet)
    	获取当前数据包对应的混音器的index并赋值给packet->track_idx,这个track_idx后面推流的时候会用到,他的作用还没弄明白
    	调用obs_encoder_packet_create_instance(&out, packet);
    	拷贝packet中的数据到局部变量out中,其中进行malloc的时候,多申请了一个long类型长度的内存,这个pref是这个数据包的引用计数器
    	如果音视频数据都收到时,调用apply_interleaved_packet_offset,这个函数是调整时间补偿或者时间修复的吗?
    	否则调用check_received接口将当前的音频或视频已收到标识设置为true
    		was_started = output->received_audio && output->received_video;
    		......
    		if (was_started)
    			apply_interleaved_packet_offset(output, &out);
    		else
    			check_received(output, packet);
    	根据编码时间戳,将当前数据包插入到输出队列中,并将output->highest_audio_ts设置为当前数据包的编码时间戳
    		insert_interleaved_packet(output, &out);
    		set_higher_ts(output, &out);
    	如果当前是否第一次收到了音频以及视频数据包,调用prune_interleaved_packets(output)对数据包中的内容进行修剪,修剪规则如下:
    		先找出第一帧音频和第一帧视频的数据包,以第一帧视频数据包的index为基准,对比两个数据包的时间戳的差值:
    			如果音频数据包的时间戳减去视频数据包的时间戳的数值大于每帧视频间隔的时间差
    				那么需要删除这个音频数据包时间戳之前的所有音视频数据包
    			如果没有找到这样的音频数据包,那么就需要找出音视频数据包的时间戳差距最小的那个数据包的index,如果这个index的值比第一帧视频数据包的index小
    				那么需要删除这个index之前的所有数据包,如果比第一帧视频数据包的index大,那么需要删除第一帧视频数据包之前的所有数据包
    		通过对第一次发送的音视频数据包的裁剪后,当前的待发送数据包中第一帧音视频数据包的时间戳的差距最小,以达到首次发送的音视频数据是同步的
    		调整修正完成后的待发送数据包相关的时间戳,再次确保发送的第一帧音视频数据包的准确性,并且重新调整待发送数据包的index
    		调用发送数据包函数 send_interleaved
    	如果是后续收到的音视频数据包,则直接调用发送函数 send_interleaved
    	if (output->received_audio && output->received_video) {
    		if (!was_started) {
    			if (prune_interleaved_packets(output)) {
    				if (initialize_interleaved_packets(output)) {
    					resort_interleaved_packets(output);
    					send_interleaved(output);
    				}
    			}
    		} else {
    			send_interleaved(output);
    		}
    	}
    	static inline void send_interleaved (struct obs_output *output)
    		确认待发送数据包中的第一个数据包时间戳是合法的
    			if (!has_higher_opposing_ts(output, &out))
    				return;
    		把第一个数据包从队列中移除
    			da_erase(output->interleaved_packets, 0);
    		如果是视频数据包的话,在这里统计总的发送帧数
    			if (out.type == OBS_ENCODER_VIDEO) {
    				output->total_frames++;
    		调用output->info.encoded_packed回调函数,回调到rtmp发送数据包接口中
    10、<rtmp-stream.c> static void rtmp_stream_data (void *data, struct encoder_packet *packet)
    	判断推流连接是否断开以及是否处于活动状态,将数据包的数据拷贝至局部变量new_packet,数据包的引用技术+1
    	将数据包添加到待推流数据块中,视频数据包:add_video_packet ,音频数据包: add_packet
    	其中视频数据包在添加之前,检查是否有需要丢弃的帧,检查完成后也是调用add_packet
    	add_packet ,将数据包追加在stream->packets的尾部
    	添加成功后,唤醒信号量stream->send_sem,该信号量控制推流发送数据包,唤醒成功后在send_thread线程函数中执行发送数据包的操作send_packet,执行RTMP_Write之前,调用flv_packet_mux将数据封包为flv格式
    	static void *send_thread(void *data)
    		while (os_sem_wait(stream->send_sem) == 0)
    			......
    			send_packet(stream, &packet, false, packet.track_idx

     

    展开全文
  • 推流直播推流直播是指用户将...01播前准备-推流软件下载可支持推流地址和直播码的推流服务器都可以使用,推荐使用OBS Studio。*OBS下载途径:https://obsproject.com02APP设置-创建推流计划操作流程:「腾讯直播」AP...

    推流直播

    推流直播是指用户将现场的语音视频信号传到网络的过程。服务器在接收到语音视频流之后,平台将进行流分发与流播放,传输到观众的收看端。

    接下来告诉大家如何使用推流进行直播!

    01

    播前准备-推流软件下载

    可支持推流地址和直播码的推流服务器都可以使用,推荐使用OBS Studio。

    f011c5c2c8bc3a19066503961dca3983.png

    *OBS下载途径:https://obsproject.com

    02

    APP设置-创建推流计划

    操作流程:

    「腾讯直播」APP-创建直播-推流直播-编辑相关直播信息

    257dab5bd1a4e5a39ef10ee401b89cb4.png

    *进入推流直播后,无法设置管理员。若需要管理员进行互动,请先创建视频直播设置。

    03

    OBS设置-参数设置

    操作流程:

    OBS软件-左上角「文件」-设置

    OBS参数设置(仅供参考)

    【视频】

    横屏直播分辨率:1280*720

    竖屏直播分辨率:720*1280

    帧率:25FPS

    【输出】

    视频比特率:1800kbps

    音频比特率:128kbps

    【推流】

    APP-获取推流信息-复制-粘贴

    a3e41fcf9b99ddb3cb028eeef937b72d.png

    *推流信息有效时间为10个小时,如超出时间请重新复制,每个计划都有对应的推流信息,开播前请注意修改。

    开播后不可再修改参数。以上参数仅供参考,如有特殊需求,请寻求专业人员协助。

    04

    OBS设置-功能设置

    操作流程:

    OBS软件-左下角「来源」-添加直播中需要捕捉的信息

    【显示器捕获】可显示屏幕画面。

    【视频捕获设备】可添加摄像画面。

    【图像】可以放置图片或二维码。

    【文本】可添加文字或公告信息。

    【媒体源】可以放置信号源等。

    2fd1c0f75567cfa4a314928871df1279.png

    04

    开始直播

    操作流程:

    OBS软件-右下角「开始推流」

    腾讯直播APP-开始直播

    935aba215f028fbedb888eb5f648dcf9.png

    *点击「开始推流」后,将同步生成回放。

    798b9d12d38e2b165c457358d1c1875e.png

    *若OBS显示断开链接,请检查「推流信息」是否正确输入,或最近直播是否出现违规封号。

    多路推流直播

    多路推流,是指用户将一次推流直播,在多个腾讯直播账号上实时直播显示。一对多实现多路的推流,称为多路推流。

    接下来将告诉大家如何使用OBS实现多路推流!

    01

    播前准备-插件下载

    操作流程:

    下载插件-压缩包迁移-解压-重启OBS软件

    cc55cfd10d4d00659755678777a658ea.png

    多路推流插件:

    https://share.weiyun.com/dRVGTMos(密码:tlr5)

    b2f2bf13e9f56d17ae14de002d4ce7c8.png 1704ad80628dab5b33f95de21d351e43.png

    02

    多路推流-操作流程

    操作流程:

    新建推流目标-添加捕捉信息-开始推流

    9d314040c0f3d79f437ea2a61dee97e7.png 6f64bffdc92c384d910071f026d15f06.png

    参考视频

    0e217f94005a8ccdf382bf191595f238.png

    点击【阅读原文】马上申请开通蓝V

    序列号234

    展开全文
  • 实际上,为了保证直播的顺利进行,需要有专门的直播技术人员(导播老师)在后台进行支持,而他们中的大多数使用的软件就是免费、方便且功能强大的开源媒体系统——Open Broadcaster Software(简称:OBS)。...

    afc63e7e8ceced7fb5885ee432ca5241.gif

    因为疫情,全国人民都被困在了家中,开学、复工都按下了×0.5倍速键。在这个特殊的时间段,社区的活动也都转为了线上直播的形式。直播听起来毫无技术门槛,是真的吗?

    实际上,为了保证直播的顺利进行,需要有专门的直播技术人员(导播老师)在后台进行支持,而他们中的大多数使用的软件就是免费、方便且功能强大的开源流媒体系统——Open Broadcaster Software(简称:OBS)。

    Open Broadcaster Software (简称:OBS)是一款用于高效捕获、合成、编码、录制和流式视频内容的软件,可作为导播台处理各种输入信号,是一款比较好用的开源直播软件,目前支持的操作系统包括:win7,win10,苹果的OS X系统,不支持XP系统。目前OBS有两款产品,一款为旧版本的OBS Classic,一款为新版本的OBS Studio,建议使用OBS Studio。OBS可以将本地流通过RTMP协议推送至如B站、淘等不同直播平台。

    下载

    OBS安装包下载

    安装OBS中文官网(obsproject.com/zh-cn)

    可以下载三种不同操作系统的安装包,安装过程很简单,直接运行安装包,点击两次下一步(next),然后点安装(install)即可,如果你的电脑系统缺少VC++运行环境,会提示你下载这个,同样直接根据提示下载安装。

    33eeb1456839ae75ad44a2933c97499e.png

    场景设置

    在OBS中可以新建多个场景,每一个场景里也可以有多个画面来源。

    1d9cb8749330be1002ff920584daea6e.png

    分为两种模式,普通模式就一个显示窗口,显示的内容就是直播的内容,而工作室模式就是两个窗口,左边的是预览窗口,右边是正在直播的内容窗口,可以进行切换,同时可以给画面切换添加专场特效。

    b710ea4d68c7216575a2fc82a8324e65.png来源有很多种,可以是电脑屏幕,或者一个浏览器的窗口,也可以是视频音频文件,还可以捕获游戏画面,其中视频捕获可以捕获我们外接的摄像头或者电脑自带的摄像头,音频捕获也是可以捕获电脑麦克风或者电脑的系统播放声音。

    abcee9ae990d45008d5b8ea3f481151d.png这里我建立两个场景,一个场景捕获电脑桌面,一个是WPS文件窗口,然后在窗口上加一个二维码。

    699db2b31320ec6b99ec40af6cfff92e.png直接建立两个场景,一个场景里添加一个显示器捕获,上面的红色框可以自由调节大小,第二个场景添加一个窗口捕获,一个图片,图片是二维码,可以调节位置和大小。

    f175b1e65f05c32eff95c6395ba8c5dd.png建立了多个场景后,可以用鼠标点击场景进行画面切换,我们也可以给它设置一个快捷键,进入设置,找到热键,然后给对应的场景设置热键,例如场景1我设置程A,场景二设置程B,这样我就可以直接键盘操作画面切换了。

    5158a67ff7c5cad00ba0f89a23c645f0.pngOBS中的窗口还可以自行添加字幕,如果你有视频文件需要播放的,可以单独建立一个场景添加视频文件来源就可以,在设置里可以对视频音频的参数进行设置,同时OBS可以进行录制,同样可以对录制的参数进行设置。有的直播是类似抖音的平台,那就需要设置成竖屏效果最好,这个就在视频参数里直接设置分辨率就可以了。

    21c6daabb3b684a84b2ba85b59b3da74.png

    OBS推流参数设置

    这里以虎牙为例,其他平台都类似,先去虎牙开通直播权限,一般实名后就可以了,然后在主播设置中找到推流码,有个平台是推流码可以密钥分开,虎牙的就是单独的推流地址,直接复制过来。4df83d2c7ecd9a36901426b51038f3b7.png然后OBS设置中选择自定义,然后把推流码直接粘贴到服务器这一栏即可,不需要密钥,有的平台是密钥分开的就需要分别填。最后点击直播推流,虎牙那端直播间就可以看到了。

    7536c2b2757c077c265b8cbcfa60b4da.pngOBS还有很多三方插件,比如直播游戏时,你需要看直播间的弹幕,就可以安装类似小葫芦、智播这样的插件。

    f571aca6e1d826f8ecd34549c37fe2c7.png

    直播推流操作方案—以B站为例

    ⑴登录B站,将光标放在右上侧头像上,点击直播中心。如下图所示:

    a894fe918b1f3253044e3608c9c7572e.png

     ⑵点击我的直播间->开播设置。如下图所示:

    ded85b602c9376cbb20877ad6be7a613.png

    ⑶进行实名认证并等待审核通过。

    ⑷选择直播分类,设置房间标题,设置直播封面,点击开始直播,得到rtmp地址以及直播码。

    注意:将rtmp地址与直播码复制到另外文档并保存,该文档会在下一步配置OBS时使用。

    OBS配置

    ⑴初期设定推荐

    上行速率:20.0bps→码率 20000

    编码器:硬解-物理显卡

    音频:128

    录制视频码率:5800-6000

    音频:44.1khz 立体声

    视频:双立方 16

    FPS:30

    ⑵配置步骤

    ①打开OBS界面,如下图所示:

    ef47614cb652820baf12991608b24067.png

    ②点击设置按钮,该界面内容可参考《如何使用OBS软件进行直播推流|上篇》,但作为初学者不需过多修改该界面内容。

    c8206149a1658c393fd8a8f6dce6e49c.png

    ③点击推流,并设置该界面。

    A.服务:设置为自定义;

    B.服务器:将在第2步所获得的rtmp码粘贴至该处;

    C.串流密匙:将第2步中获得的直播码粘贴到此处。

    如下图所示:

    aac71294590e6f518a336b9b10f1bf94.png

    配置直播内容

    返回OBS主界面,界面包含上方的直播图像及下方的工具栏两部分。

    工具栏包含五部分:场景、来源、混音器、转场特效、控件。

    17d25635baefd11c66b30e8c907ca67c.png

    下面我们进行OBS配置。

    ⑴点击控件栏场景区(左下侧),新建场景,输入场景名称,如“bilibili+teams”。如下图所示:

    5cafa8e66fc8aa3c6382fb1874ea3706.png

    ⑵在来源区添加给直播观众所看的内容。

    常用的包括图片、文本、显示捕获,窗口捕获。

    除此之外,在添加相应输入后,右键点击主界面上方预览图像,弹出菜单中选择“变换”,选择“拉伸到全屏”或“比例适配屏幕”即可使画面适应主屏幕。

    如下图所示: 

    37d23605b73f4805227b9ccf6d5e0aa8.png

    ⑶选择好直播源,点击开始推流,进行直播。

     注意:当用Mac版本进行直播时,在上述设置后,给观众直播的内容仅仅是图片,文本等不具有声音的画面,如果要将声音一起直播出去,需要在混音处配置麦克风。另外,如果因为人数不够,只用了手机、Mac和另一台电脑进行模拟直播,将Mac作为导播,手机作为嘉宾,将另一台电脑作为主讲人,来进行直播测试。

    -根据前文下载配置OBS并配置Blibili;

    -根据上文添加场景。

    此次测试添加了两个场景:图像场景即为图示蓝色图片,窗口捕获为teams窗口。如下图所示:

    89c701e7cec1faba424aab49123cf628.png

    Step1.开始推流,打开bilibili直播,得到不同场景画面如下:

    a8e8dd041c1760895fa93ec59fa29d33.pngf649eb2f2408f7ca3f659e31374bd8eb.png

    Step2.主讲人进行共享,主讲人视角如下图:

    8614183270a29c7054c6a99be365f499.png

    导播视角如下:

    930197fccf4d1a8b6d924dcba51278fc.png

    直播视角如下:

    7f8e05af073a5161255ce6b0beeb61e1.png

    且经测试,可以对本机声音进行输出,在直播中听到了本机输出的音乐声以及耳机输出的说话声。

    OBS的使用注意事项

    -后台不要留有非必要的应用,会占用CPU。

    -内存预留4G以上。

    -建议先进入网站Speedtest:

    https://www.speedtest.cn/

    测试网络环境。

    Tips:先将测速点设置为地理位置最近的地点,然后测试三次,取平均值。测试出的上传速率直接决定串流比特率的大小。

    -硬盘需要预留足够的空间,预估40G以上。

    -关于编码器的选择:

    a)   后期录像,推荐使用独立的物理显卡进行渲染。

    b)   串流可以选用QuickSync,用英特尔的集显。

    -推流效果受硬件、网络环境因素影响较大,需要在线下一对一修改后,配置出最优参数。

    -预设是影响录制文件大小的最重要因素。

    -OBS是一个强大的开源软件,支持多种插件。

    -设置推流时,单个账号串流的密钥是不会变的,但B站的服务器会经常变化。

    -建议将账号的密钥保存在记事本、Onenote等中,以方便切换。

    -Mac声音输出的问题,通过下载soundflower解决,具体解决方案参考上篇。

    -注意同一个视频不要推不同平台,以免被封号。

    以上就是全部关于使用OBS进行直播推流的全部内容啦~

    以下使用OBS进行直播推流的常见问题:

    打开软件黑屏

    原因及解决办法

    电脑有两个显卡,获取到的显示器与实际显示器显示的不一样所的导致

    因此需要对图形显示进行一个设置:

    1:打开独立控制面板,选择程序,再选择应用显卡

    2:假如1无效需要按图2设置

    先打开图形设置,然后选择对应显卡

    fa24dcf99b2d0719bd3b6d5741f9cf96.png74ff590fc8305fb68f46b88522dd5203.pngd72ce2138ee2ea831439b606fe9f6615.png直播推流发生到想要的平台上

    设置好平台的地址和密钥,然后点击发送就可以直接发送到指定平台上了,具体如下图。

    cb97fbe42f95f2747351ac1e0cabbd82.png播放比例大小清晰度等修改
    输出画面比例大小和清晰度

    获取到的屏幕大小,手动等比例的拉伸缩放。并可以在输出设置分辨率大小,具体如下图:

    3158e90dc27365509422479e6fbc7d00.png直播视频有延时处理
    优化设置延时是正常的,这涉及到网络传输速度,还有系统软件等处理

    可进行一定量的优化处理,具体如下图:也是具有一定的延时的情况的。

    f478de1e25cba4213f88a51b777ff905.pngd4fe8556ca4c3c903cd59b58f39ed3ed.png推送内容V
    选择要发送的内容利用好这个功能分阶段的将内容展示给观众观看,保证流畅性和优美性。操作如下图:

    8a2621498fe2a147749d95a854b1a313.png3f6f5bcb4cdfbe21b24a7a7a8cb11d73.png直播过程中并自动录制视频

    这操作流程启用推流并录屏功能。具体如下图所示:

    611d18aef85a8d99c8e49ca922c0115b.pngfdbb3bd0375d5831ddc9e3b5b82ed588.png手机投屏到电脑上并实时传播Android

    利用投屏软件都能投屏画面,但是大都数都是不能投屏声音的,需要声音需要再加语音输入设备。AUX线

    比较推荐软件有:Apowermirror (安装端名字为傲软投屏),在来回切换横竖,不需要任何设置。

    还有乐播,幕享等。

    iOS端

    利用苹果自带的airplay功能来投影,使用obs-studio版直接获取窗口,支持苹果全平台以及Windows平台,OBS可获取到界面并且同时可以获取到音频,无须再设置。

    总结

    苹果原生自带的airplay、利用DLNA推送协议或乐播自已研发的私有协议-“乐联”.才可以实现将视频流媒体(mp4、flv等)和直播流媒体(rtmp、hls、http-flv等)投屏到电脑上并实时直播,

    其他输入获取
    直接利用USB、蓝牙、tcpip等各种通讯协议,直接连在电脑上,直接获取到设备窗口即可。从而添加到新的输入和输出设备。

    工作室模式
    先进行一个预览,然后再发送,中间出现可以直接切换,忽略掉这个画面。设置如下图:20edb55c7f734fc2b5d4c9b7715bbc96.png在OBS直播看字幕

    这个功能需要安装字幕插件支持。网上有很多,安装完成之后,在下图右键添加字幕就可以了。

    - END -

    摘自:片场器材

    d8eaf802f82fcf6136cbeebf040f99b7.png

    9c542814548a7a5e959239328082713f.gif

    展开全文
  • 今天给大家介绍一下,如何通过obs推流,将腾讯会议变成宣传工具,在一直播上进行直播。02直播软件视频源:腾讯会议信号转接工具:腾讯云+ obs播出软件:一直播(或其他直播平台)1 什么是OBSOpen Broadcaster Software...
    ea6f73661b3c92df0998dccc93f98f57.png  01  直播背景 一场疫情,让很多人意识到远程办公的重要。 线上会议成为交流重要途径的同时,线上直播也成为很多企业对外宣传的重要手段。 今天给大家介绍一下,如何通过obs推流,将腾讯会议变成宣传工具,在一直播上进行直播。    02  直播软件   8060120d30561c918b13f1d83fb24910.png 视频源:腾讯会议 信号转接工具:腾讯云+ obs 播出软件:一直播(或其他直播平台)   1 什么是OBS Open Broadcaster Software(简称OBS)是目前市面上最好用的直播软件,支持 OS X、Windows、Linux操作系统,适用于多种直播场景。   国外软件有中文无广告全免费,安装含32位与64位版本。   2 如何下载安装   推荐使用 OBS Studio 工作室版,更易操作性能更佳。若需使用美颜相机,请使用 OBS 经典版。 7c23f205830a01beb21f8cd732c7d77c.png 建议到OBS官网下载最新软件 OBS官方下载。   下载链接: https://obsproject.com/zh-cn   注意:OBS Studio版目前仅适用于 Windows 7\8\10 MAC(不支持XP)   3 其他涉及到的软件 腾讯会议 pc端&手机端 一直播 pc端&手机端 腾讯云注册账号 4 需要的电脑设备  电脑使用:通常需要两台电脑 第一台电脑:操作人员把看到的画面播出去 第二台电脑:开一直播客户端接入信息流并播出   这里之所以多用一台电脑,主要是出于直播效果考虑。因为一直播客户端相当脆弱,很多在其他客户端早已轻松实现的功能,在这里都有待加强。而且经常会出现莫名其妙的问题。 考虑单台电脑本身的性能,建议做直播的小伙伴,单独选择一台电脑,专门操作一直播,进行内容输出。    03  操作说明 具体推流操作: 1 开始腾讯会议 5407486340242278cb449f25121aabc3.png 可以提前生成链接,发给需要参加会议的人员。 2 obs推流   obs: 直播时设置成工作室模式-开始前可以加一张图片,便于效果预览。 选择工作室模式:左边是后台,右边是真实直播情况。 f38c3e5335b559e8f3be5f625c931004.png OBS 软件设置分为两大部分。 第一部分是基础设置,主要针对直播自身的网络情况来设置视频画面的参数和音频部分的参数等。 第二部分是场景设置,包含是采用什么方式直播,例如录电脑屏直播、PC摄像头直播等,外接摄像头设备直播等。 正常情况下,第一次配置了参数之后,后续直播则无需再做调整,可直接点击开始推流。 (1).obs:设置-推流-串流密钥   重点:设置推流地址 打开 OBS,可通过底部工具栏的【控件】>【设置】按钮进入设置界面。 6ba4701b6bbd7c17df0fe03cf429bffa.png 单击【推流】进入流设置页签,选择服务类型为自定义流媒体服务器。 将获取所得的  推流地址  填写到服务器和串流密码中。 服务器:对应"OBS 推流地址" 串流密码:对应“OBS 推流名称”,即推流地址最后一个斜杠/后面的内容 4b2c2f4d6fa382d7ab8ef3272ede85f8.png 单击【确定】保存设置信息。 推流的时候,后台需要一个服务器地址和串流密钥。 一些直播平台,如西瓜视频,后台可以直接建立obs的直播,但是一直播没有这项功能,所以我们必须借助第三方软件——如腾讯云,生成推流地址及密钥。   3.腾讯云生成密钥串: (1)打开在腾讯云的控制台:云直播—域名管理 设置生成播放地址及推流地址 33134182fad7a712e2adf8d73ae0f9d3.png (2)生成推流地址:复制在推流地址最后一个斜杠/ 后面的内容粘贴到obs的串流密钥中 f68410999a928a881c20fe17b2403942.png   (3)点击生成的播放地址,作为一直播的推流地址 c359da80ed751e890b7f6992cecd19d7.png 4.在一直播输入推流网址 fcf92166412b116e7f97359351a3a4c6.png 正式直播点击开始推流 直播一般会有3s左右的延迟,这个是正常现象。    04  测试内容 正式直播前,建议操作人员先进行完整的流程测试,以保证直播的正常进行: 1.测试腾讯会议所有嘉宾彼此的声音接收 2.测试从obs推流到一直播的声音 3.测试从一直播输出声音    05  注意事项 腾讯会议的直播优点在于便于远距离的嘉宾协调,不用所有人赶到一个场地,沟通成本相对较少;但是由于远距离带来现场的不可控性,所以在细节和前期沟通上,对执行人员的要求相对较高。   1 环境安静 2 网络良好 3 obs录制的路径: 4 直播前提前测试,维持一个比较稳定的状态 5 提前制作一张16:9的宣传图,在直播首位投屏使用 6最好在直播结束的第一时间就记录下直播的数据,方便长时间的统计比较
    展开全文
  • obs解码器视音频推流软件,亲测有效绝对可以用
  • 参考大神的文章 理解obs架构设计。 添加自定义输出 webrtc_custom_output_info 桥接输出的YUV到自己的输出中。 实现一个 obs_output_info 结构: 当OBS-OUTPUTS 插件加载时,注册了这个自定义输出 obs...
  • OBS推流工具使用说明

    千次阅读 2020-07-21 09:16:13
    1.1、什么是OBS ​    Open Broadcaster Software(简称OBS)是目前市面上最好用的直播软件,支持 OS X、Windows、Linux操作系统,适用于多种直播场景。 ​    国外软件有中文无广告全免费,安装含32位与...
  • 状态:激活状体表示当前的音频源可以用,当前(切换至PGM)场景下的音频源和默认采集设备方式添加的音频源均会处于激活状态。去掉“高级音频属性”设置界面左下角“仅活动源”前面的复选框,可以列出未激活的音频源...
  • obs源码简析之推流

    2021-03-03 17:25:49
    obs录制推流,未 obs点击开始录制,将会调用ui部分读取设置的参数: UI/window-basic-main-outputs.cpp bool AdvancedOutput::StartRecording() { const char *path; const char *recFormat; const char *...
  • obs推流视频比特率 OBS是现在直播视频的主要内容之一。 它是流向Twitch(周围最受欢迎的实时视频网站之一)的首选软件。 有一些非常不错的附加组件,使直播人员可以在不中断正在运行的视频的情况下,通过手机或其他...
  • 在直播的”远古时代“,各个平台的主播基本都是用OBS进行开播的,免费而且开源的OBS (Open Broadcaster Software)使用教程在各种直播网站上流传,渐渐地,OBS就成为了第三方推流软件的代名词。所以本期,给大家讲讲...
  • Open Broadcaster Software(简称 OBS)是一款好用的第三方开源程序直播媒体内容制作软件,为用户...该任务指导您在安装 OBS 工具后,如何在 PC 端进行推流配置操作。准备工作登录 云直播控制台,并生成推流地址,详...
  • 并且下载OBS工具(网址:https://obsproject.com/或者私信我,直击发邮箱) 有两点需要注意:1、OBS暂不适用于windows7,建议使用windows8以上的系统 2、每个推流地址只对应一个直播视频 然后进入OBS使用: 第一步:...
  • obs推rtmp卡顿丢帧策略 1.检测队列buffer的长度,p帧超过900ms,b帧超过700毫秒开始丢帧。 2.丢帧策略新建一个circlebuf,音频不丢,视频按照优先级丢弃(i帧优先级为3,p帧优先级为2,b帧优先级为1),b帧超过700...
  • 2020年的广交会转到了线上,很多外贸公司仍是对广交会上如何直播推流存在着操作上的问题。...OBS,英文全称:Open Broadcaster Software,是一款第三方开源程序直播媒体内容制作软件,免费且开源的用于视频录制...
  • OBS 电脑推流直播指南

    千次阅读 2020-11-03 21:24:11
    文章目录前言一、系统环境要求二、下载安装 OBS 软件二、设置 OBS1、分辨率配置2、编码输出设置3、推流设置4 保存配置四、 关闭电脑音频输入捕获五、 添加媒体来源五、 开始推流六、 预览实时直播七、常见问题1....
  • 主要有三个步骤:(1)NginxRTMP服务器搭建(2)视频录制推流器 (3)拉流器(播放器),有了这些就可以开始简单视频相关的直播了。对于延时什么的,还需要深入去研究 ,以及如何进行视频开发等后续再深入研究。 ...
  • OBS推流工具快速上手

    2020-07-27 16:18:33
    OBS欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants...
  • 可以将桌面、摄像头、程序窗口通过rtmp送到媒体服务器上。 当然如果你是开发者,想基于OBS做二次开发,实现二次产品化的化,难度比较大,OBS代码量很大,驾驭起来难度很大,有bug的话,跟踪起来很累。 下载...
  • 最近在做直播项目,查阅了一下相关资料然后成功搭建... 实时消息传输协议,Real Time Messaging Protocol,是 Adobe Systems 公司为 Flash 播放器和服务器之间音频、视频和数据传输开发的开放协议。协议基于 TCP,...
  • 选用目前最热门的直播软件之一的OBS studio,它是一款视频直播录制软件,为用户提供了视频、文本、图像等的捕获录制功能。OBS Studio界面简洁,功能强大,不仅录制质量好占用资源小。2. 环境配置和需求l PC机(建议...
  • obs推流怎么使用摄像头Over the years I've collected a few webcams, some quality and some not. If you're interested in creating the ultimate remote worker webcam setup on a budget, I've written a blog ...
  • 这里对“直播”二字打引号,是因为该软件目前主要用于网络直播领域,但其实还有别的功能,比如视音频的录制、转文件封装等等。  在进行直播推流时,为了平衡我们电脑配置、网络带宽和视频主观质量三者之间的问题,...
  • OBS bit rate推流比特率最佳设置

    万次阅读 2017-06-16 13:32:43
    你看OBS使用中全是比特率最佳设置的问题,而且还有那么多人说出很多看似有道理的道道。 我们来看看真正的OBS官方关于bit rate是怎么说的,如下是翻译总体来说,没有一个完美的方式直接找到最佳设置,只有做实验。...
  • 推流工具 OBS 使用指南

    万次阅读 2018-04-03 17:28:23
    推流工具 OBS 使用指南 内容转载阿里云文档–第三方推流工具使用指南 OBS介绍 什么是OBS? Open Broadcaster Software 是一款好用的直播媒体内容制作软件。 OBS使用是否收费? 不收费,这个程序和它的源代码...
  • SRS(Simple RTMP Server) 是国人写的一款非常优秀的开源媒体服务器软件,可用于直播/录播/视频客服等多种场景,其定位是运营级的互联网直播服务器集群。一、安装官网提供了3种安装方式: 从源码编译安装、利用...
  • 一般来说,一个完整的媒体服务系统需要三个部分组成:编码器、服务器和播放器。. 编码器通过对内容来源(如MP3文件或者麦克风输入)进行编码,并将编码过的内容发送到服务器;服务器再将它们发布到Internet...
  • 修改OBS为仅直播音频

    千次阅读 2017-04-15 00:42:00
    准备工作: 1. VS2013 的最新更新版或者VS2015 ... ...4. obs 依赖包,下载下来后放在自己的obs主目录下 根据自己的VS版本来下载 VS2013:https://obsproject.com/downloads/dependencies20...
  • OBS源码分析三RTMP推流输出

    千次阅读 2019-11-01 09:51:53
    1.第一步先看RTMP推流输出流程图 2.第二步RTMP输出代码详细步骤说明 首先是RtmpOutput输出对象的创建和编码器绑定 RtmpOutput::RtmpOutput() { CreateOutputWithUniqueName(); } RtmpOutput::~RtmpOutput...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,043
精华内容 417
关键字:

obs推音频流