前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >FFmpeg视频播放器开发-FFmpeg拉rtmp流(七)

FFmpeg视频播放器开发-FFmpeg拉rtmp流(七)

原创
作者头像
嵌入式音视频
发布2022-09-24 17:13:34
3.8K0
发布2022-09-24 17:13:34
举报
文章被收录于专栏:音视频进阶之旅

在菜单栏输入rtmp流地址后,关闭窗口,在closeEvent方法中发送信号,主线程接收到该信号后,调用网络流线程解码,同时视频显示窗口刷新解码后的img, 这样网络流就可以播放了。

代码语言:javascript
复制
void NetStreamDlg::closeEvent(QCloseEvent * e)
{
	QString address = ui.lineEdit_IP->text();
	CommonUtils::writeIni(m_iniPath, m_iniKey, address);
	emit(PushStream(address));
}

菜单栏

这是湖南卫视的rtmp流 rtmp://58.200.131.2:1935/livetv/hunantv

主界面接收PushStream信号

代码语言:javascript
复制
connect(&m_NetDlg, SIGNAL(PushStream(QString)), this, SLOT(slotPushStream(QString)));

槽函数代码

代码语言:javascript
复制
void FFVideoPlayer::slotPushStream(QString address)
{
	LOG4CPLUS_INFO(MyLog::getInstance()->logger, "Push Net Stream");
	g_NetStream = 1;

	setWindowTitle(address);
	NetStreamThread::getInstance()->startPlay(address);
}

通过调用NetStreamThread线程类解码rtmp流,这和本地文件播放差不多,然后再界面控件刷新。

代码语言:javascript
复制
//重写重绘函数
void VideoWidget::paintEvent(QPaintEvent *e)
{
	if (g_NetStream == 1)
	{
		QPainter painter;

		//显示网络流
		painter.begin(this);
		painter.drawImage(QPoint(448, 170), m_Image);
		painter.end();
	}
	else
	{
      。。。
      。。。
}

显示如下

声音暂时没有处理,以后加上。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
实时音视频
实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档