前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Windows平台RTMP/RTSP播放器如何实现实时音量调节

Windows平台RTMP/RTSP播放器如何实现实时音量调节

原创
作者头像
音视频牛哥
修改2021-01-21 17:48:26
8970
修改2021-01-21 17:48:26
举报

为什么要做实时音量调节

RTMP或RTSP直播播放音量调节,主要用于多实例(多窗口)播放场景下,比如同时播放4路RTMP或RTSP流,如果音频全部打开,几路audio同时打开,可能会影响用户体验,我们通用的做法是支持播放端实时静音,更细粒度的做法是可以实时调节每一路RTMP/RTSP流的音量。

音量调节接口设计

RTMP或RTSP直播播放端音量调节功能设计主要考虑到一点,和市面通用的本地播放器或点播播放器功能对齐(如VLC、PotPlayer等),音量可以实时调整即可,本文以大牛直播SDK的Windows平台RTSP直播播放SDK/RTMP直播播放SDK的C++接口demo为例(C#亦可,具体可参照 Github),简单介绍下相关的接口设计和用法。

		/*
		设置播放音量, 范围是[0, 100], 0是静音,100是最大音量, 默认是100
		调用正确返回NT_ERC_OK
		*/
		NT_UINT32(NT_API *SetAudioVolume)(NT_HANDLE handle, NT_INT32 volume);

具体调用:

C++的demo以CSliderCtrl控件为例,音量调节力度,设置到[0, 100], 设置为0时,实时静音,设置为100时,默认原音量输出,具体调用如下:

	CSliderCtrl slider_audio_volume_;

	player_api_.SetAudioVolume(player_handle_, slider_audio_volume_.GetPos());

void CSmartPlayerDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar)
{
	// TODO: Add your message handler code here and/or call default

	if (IDC_SLIDER_VOLUME == pScrollBar->GetDlgCtrlID())
	{
		switch (nSBCode)
		{
		case SB_LINELEFT:
		case SB_LINERIGHT:
		case SB_PAGELEFT:
		case SB_PAGERIGHT:
		case SB_LEFT:
		case SB_RIGHT:
		{
			/*std::wostringstream wss;
			wss << L"OnHScroll nSBCode:" << nSBCode << " nPos:" << nPos << " GetPos():" << slider_audio_device_volume_.GetPos()
			<< "\r\n";

			OutputDebugString(wss.str().c_str());*/

			if (is_playing_ && player_handle_ != NULL)
			{
				player_api_.SetAudioVolume(player_handle_, slider_audio_volume_.GetPos());
			}

		}
		break;

		case  SB_THUMBPOSITION:
		{
			/*std::wostringstream wss;
			wss << L"SB_THUMBPOSITION" << " nPos:" << nPos << " GetPos():" << slider_audio_device_volume_.GetPos()
			<< "\r\n";

			OutputDebugString(wss.str().c_str());*/
		}
		break;

		case SB_THUMBTRACK:
		{
			/*std::wostringstream wss;
			wss << L"SB_THUMBTRACK" << " nPos:" << nPos << " GetPos():" << slider_audio_device_volume_.GetPos()
			<< "\r\n";

			OutputDebugString(wss.str().c_str());*/

			if (is_playing_ && player_handle_ != NULL)
			{
				player_api_.SetAudioVolume(player_handle_, slider_audio_volume_.GetPos());
			}
		}
		break;

		default:
			break;
		}
	}

	CDialogEx::OnHScroll(nSBCode, nPos, pScrollBar);
}

实时音量调节作为RTSP或RTMP直播播放器的扩展功能,在好多行业用处很大,如教育类、监控类多窗口(大屏环境下)播放场景,感兴趣的开发者可以试试看。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 为什么要做实时音量调节
  • 音量调节接口设计
相关产品与服务
云直播
云直播(Cloud Streaming Services,CSS)为您提供极速、稳定、专业的云端直播处理服务,根据业务的不同直播场景需求,云直播提供了标准直播、快直播、云导播台三种服务,分别针对大规模实时观看、超低延时直播、便捷云端导播的场景,配合腾讯云视立方·直播 SDK,为您提供一站式的音视频直播解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档