命令行实现FFMpeg拉流推流方法思路

FFmpeg采集摄像头图像并推流至RTSP/RTMP 但是,有个地方要注意,就是从文件读出来的帧(输入帧)的时间戳要转换为封装器对应输出流的时基。假如我们要推送的流来源于一个文件,那就要先把文件的流枚举出来,获得每个流的信息,然后把这几个流“插入”到封装器里面,这样封装器才能识别这些流的格式。我们调用avformat_new_stream生成一个新的流,然后调用avcodec_copy_context将文件的视频流或音频流的上下文属性拷贝到新流的目标上下文中,这样新的流就具有了和输入流同样的属性了(编码格式、分辨率、采样率等)。但是这样写还不完善。 阅读详情

方法1:

实现思路:

显示摄像头至窗口,推流指定窗口图像至服务器

方法步骤:

  1. 显示摄像头

ffplay -f dshow -i video="摄像头名字"

执行后获得以“摄像头名字”作为窗口标题的摄像头采集窗口

  1. 指定摄像头窗口推流(只能采集主窗口,子窗口无法采集,可设置采集主窗口指定区域图像)

ffmpeg -f GDIgrab [-offset_x 10 -offset_y 20 -video_size 640x480] -i title="摄像头窗口标题" -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -f flv "视频推流服务器地址"

  1. 播放拉流视频

ffplay "视频拉流地址"

优点:

可随时更新要推送的内容,只需在指定窗口更改显示内容即可。

缺点:

非原始数据,通过二次采集,依附窗口且该窗口不能被关闭。

方法2:

实现思路:

推流摄像头及服务器同时推流至本地,本地可使用本地流播放及远程拉流播放。

方法步骤:

  1. 将摄像头同时推送至服务器及本地流(本地推时可单独设置仅视频或仅音频)
  2. 播放本地流数据
  3. 播放拉流服务器数据

优点:

直接数据,无二次转码,且不用依附指定窗口

缺点:

需要暂时关闭推流图像,无法临时更换指定推流图像,如暂时黑屏推送让摄像头不起作用。

使用API获得指定窗口句柄使其嵌入至主窗口中方法。

QProcess执行后嵌入窗口方法

QProcess* procCam = new QProcess;

//隐藏窗口显示执行

procCam->setCreateProcessArgumentsModifier([] (QProcess::CreateProcessArguments *args)

 {

        args->startupInfo->wShowWindow = SW_HIDE;

        args->startupInfo->dwFlags = STARTF_USESHOWWINDOW | STARTF_USESTDHANDLES;

    });

//启用ffplay显示摄像头

procCam->start("ffplay -f dshow -i video=\"USB2.0 PC CAMERA\"");

//启动后延时等待

procCam->waitForFinished(1000);

//获取窗口标识

WId wid = (WId) processFindHwnd(procCam->processId(), "SDL_app");

QWindow *pWin = QWindow::fromWinId(wid);

if(pWin)

{

       //设置外部窗口嵌入容器

QWidget *pWid = QWidget::createWindowContainer(pWin, this);

//设置窗口位置

    pWid->setGeometry(10,10,320,240);

}

//通过进程id获得窗口类

#include <windows.h>

HWND processFindHwnd(

        quint64 procID, const char *lpszClassName, const char *lpszTitleName)

{

    char szClassName[1024], szTitleName[1024];

    HWND hWnd = GetTopWindow(GetDesktopWindow());

    while (hWnd)

    {

        DWORD wndProcID = 0;

        GetWindowThreadProcessId(hWnd, &wndProcID);

        if (wndProcID == procID)

        {

            if(lpszClassName != nullptr || lpszTitleName != nullptr)

            {

                GetClassNameA(hWnd, szClassName, sizeof(szClassName));

                GetWindowTextA(hWnd,szTitleName, sizeof(szTitleName));

                if(lpszClassName != nullptr && lpszTitleName != nullptr)

                {

                    if (strcmp(szClassName, lpszClassName) == 0 &&

                            strcmp(szClassName, lpszClassName) == 0)

                        return (HWND)hWnd;

                }else if(lpszClassName == nullptr)

                {

                    if (strcmp(szTitleName, lpszTitleName) == 0)

                        return (HWND)hWnd;

                }else if(lpszTitleName == nullptr)

                {

                    if (strcmp(szClassName, lpszClassName) == 0)

                        return (HWND)hWnd;

                }

            }else

                return hWnd;

        }

        hWnd = GetNextWindow(hWnd, GW_HWNDNEXT);

    }

    return 0;

}

//Pro文件中添加

LIBS +=User32.LIB

OpenCV+FFmpeg 实现人脸检测Rtmp直播推流(Python快速实现) 使用python可以快速实现功能,但延迟还是有点高,画面也不太流畅,还有优化空间。有空还是用CPP实现一下吧。 阅读详情

相关推荐

使用FFMpeg实现实时推流功能

在音视频开发中,FFMpeg 就是全能型工具的代名词。 要实现该功能,我建议先熟悉一下通过FFMpeg实现本地文件推流功能, 地址见:最简单的基于FFMpeg 的推流功能 本文主要为改装成实时流推流功能提供思路。 推流操作从乎用户层面可简单分为以下几个步骤: 1.开始推流 2.推流中 3.结束推流 在开始推流的时候,关键的几个事情就是 1.标记RTMP 推流状态为开始 2.使用avformat_alloc_output_context2 输出FLV 格式数据到指定的地址 3.使用AVIO_OPEN和RTM

Abe_liu的博客 3207

FFMPEG推流摄像头

一般的直播网站都使用OBS推流,其实ffmpeg也可以推流,在无界面环境下就可以推流使用。本文以Windows下为例,简单介绍下使用ffmpeg工具推流的方法和步骤。

7946

C++ 调用 ffmpeg 进行 rtmp 推流

C++ 调用 ffmpeg 进行 rtmp 推流

叹世界 4649

FFmpeg工具进行推流、拉流、截图、变速、转换,及常见问题处理

ffmpeg -f dshow -i video="摄像头名称" -s 300*300 -framerate 15 -bufsize 1000000k -vcodec libx264 -preset:v ultrafast -tune:v zerolatency -acodec libfaac -f flv 推流地址。ffmpeg -i “视频地址” -fflags nobuffer -update 1 -y -t 200 -ss 1 -r 1 -f image2 图片输出地址。

liveweb视频汇聚平台 3149

使用FFmpeg和FFplay进行RTMP推流和拉流测试(WebRTC)

而FFmpeg和FFplay是两个强大的开源工具,提供了丰富的功能和灵活的配置选项,可以用来推流和拉流RTMP数据。同时,在WebRTC中集成FFmpeg和FFplay可以进一步扩展功能,提供更多的音视频处理和播放选项。要在WebRTC中使用FFmpeg和FFplay,我们需要首先安装WebRTC相关的库和依赖项,然后根据WebRTC的API文档进行集成开发。本文将介绍如何使用FFmpeg和FFplay进行RTMP推流和拉流测试,并提供相应的源代码示例。首先,我们需要准备一个可用的RTMP服务器地址。

MznkCloud的博客 1633

【sfu】ffplay http-flv 拉流测试

flv

突围 1268

ffmpeg实现H264压缩并且推流至RTSP

一、整体思路 1 利用ffmpeg读取出视频的一帧图像 存储在pFrame中 2 利用ffmpeg进行格式转换 sws_scale 3利用ffmpeg编码存在pFrame中的图像 H264压缩 4 利用ffmpeg的 av_interleaved_write_frame( ) 写入到rtsp端 5 辅助部分:解码、编码初始化,QT...

阳光非宅男的博客 2万+

FFmpeg+QT5推流,vlc拉流,具体看问题描述,如何实现?

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 999

Python实现推流直播

Python实现推流直播 首先给出展示结果,大体就是检测工业板子是否出现。采取检测的方法比较简单,用的OpenCV的模板检测。 大体思路 opencv读取视频 将视频分割为帧 对每一帧进行处理(opencv模板匹配) 在将此帧写入pipe管道 利用ffmpeg进行推流直播 中间遇到的问题 在处理本地视频时,并没有延时卡顿的情况。但对实时视频流的时候,出现了卡顿延时的效果。在一顿度娘操作之后,...

Mind_programmonkey的博客 2万+

QT使用FFmpeg库实现视频流播放

QT学习,FFMPEG学习,FFmpeg库,完整代码,可鼠标事件全屏缩小。

TwinCAT3新手必看:5分钟搞定EtherCAT从站PDO动态配置(附电流变量添加技巧)

本文为TwinCAT3新手提供了EtherCAT从站PDO动态配置的快速入门指南。文章详细解析了Process Data Object(PDO)在实时数据交换中的核心作用,并分步演示了在TwinCAT3工程中扫描从站、动态添加与映射PDO(包括接收PDO和发送PDO)的完整操作流程。重点分享了如何灵活添加并监控如电机实际电流等关键工艺变量的高级技巧,并针对不同品牌驱动器的兼容性问题提供了实用的调试心法和解决方案,帮助工程师快速上手并优化工业自动化系统。

xgboost6farmer的博客 452

如何通过python实现H.264视频推流与接收

Python语言实现对视频逐帧处理与实时 H.264 压缩与传输。本文主要调研与考察 基于GStreamer 与 FFmpeg 实现的两种方法。

mynameisdqy的博客 1万+

探针卡技术演进:从金线微针到MEMS探针的Wafer Sort革命

本文探讨了探针卡技术从传统金线微针到MEMS探针的演进,及其对晶圆测试(Wafer Sort)的革命性影响。随着芯片焊垫间距进入45微米以下,MEMS技术凭借其超高精度、超长寿命和卓越的信号完整性,成为应对高密度、高速及3D IC测试挑战的关键,显著提升了测试效率与稳定性。

lstm7chronicler的博客 365

【IPV6从入门到起飞】4-RTMP推流,ffmpeg拉流,纯HTML网页HLS实时直播

研究了一段时间,静态html没有办法直接拉取rtmp格式的直播,在这里转为m3u8格式,并寸到tomcat对应的目录下,记得先创建。因为我的电脑IPV6能入站,能当服务器,手机在插卡的情况下能获取IPV6,能访问我电脑的服务,该前提条件能实现我想要的功能。指定rtmp服务器地址(不一定是本机,得看具体情况,我这里是服务器自己转),以及推流上来的路径和密码。3、电脑(Linux)通过ffmpeg拉流,并转换为m3u8格式的文件存到共享目录下。5、加入IPV6,即可实现手机端访问网页,实时看到电脑端的直播。

第四维度的博客 2110

钙钛矿太阳能电池稳定性测试:ISOS协议详解与标准化实践指南

在光伏器件研发中,稳定性测试是评估材料与器件长期可靠性的核心环节,其关键在于实现测试条件的标准化与数据的可比性。通过控制变量和模拟真实环境应力,标准化测试协议能够系统揭示材料衰减机理与器件失效模式,为技术迭代提供可靠依据。在钙钛矿太阳能电池领域,ISOS协议作为国际公认的测试框架,通过分级体系(如ISOS-L系列光照测试与ISOS-D系列暗态测试)和关键参数定义(如光源光谱匹配、MPP跟踪、结温控制),解决了不同实验室数据无法横向对比的痛点。该协议不仅规范了测试流程,还通过硬件系统搭建、自动化数据采集与归一

weixin_33600816的博客 319

毫米波与太赫兹:十射线模型建模

Pt=1,只考虑地面和前后两面墙的反射,反射系数为0.7。用matlab设计程序并实现该功能。,总计考虑10条路径,求出接收功率随。

SupermarketX的博客 785

FFmpeg 推流、拉流 使用问题一览

目的 最近尝试使用FFmpeg 对业务进行拉流和推流,以便于客户和用户更直观的使用,遂尝试进行推流的方法进行i业务展示。 尝试 一、初步FFmpeg 源码编译问题参考该页面 FFmpeg wiki web有官方流程 也可尝试使用如下形式 sudo apt-get install ffmpeg 完成上步骤,获得FFmpeg的动态库和头文件,即可对源视频流进行解码,编码,拉流和推流。 源码流程思路为: RTSP->H.264->YUV420P->BGR->(业务部分detect)-

Fox的博客 3976

机器人行业面试全攻略:从0到1拿下心仪Offer,看这一篇就够了

【摘要】2026年机器人行业迎来爆发期,全球市场规模超800亿美元,人才争夺激烈。本文针对机器人行业面试提供系统攻略:首先需明确岗位方向、打造差异化标签并了解目标公司;技术面试高频考点包括ROS框架、SLAM导航、运动控制、深度学习和嵌入式系统;项目介绍需采用STAR+R结构并量化成果;行为面试需注意协作能力与职业规划。文章还总结了简历堆砌、单向输出等五大常见误区,强调长期积累与精准准备的重要性,助力求职者把握行业窗口期机会。

郑伟强dev的专栏 187

obs-自定义推流

title: obs-自定义推流 categories: ObsStudio tags: [推流, 直播, obs] date: 2022-02-03 13:26:34 comments: false mathjax: true toc: true obs-自定义推流 前篇 简单的局域网直播方案(OBS+Smart_rtmpd) (配置简单易用) - https://blog.youkuaiyun.com/yx492366323/article/details/119655366 NGINX+OBS+VLC.

. 1万+

starrc: LEF DEF FLOW与full chip flat netlist

SIKP_CELLS默认为"SKIP_CELLS: *"意思是跳过所有ref cell内部的rc提取,仅提取cell之间的互联线的rc,"SKIP_CELLS: *!与MACRO_DEF_FILE搭配使用的还有SKIP_CELLS命令,如果想提取block的寄生参数生成full chip的flat netlist,或者跳过block取执行hier的寄生参数提取都需要用到SKIP_CELLS。此时,macroA和macroB没有被跳过,所以提取其内部的rc,spef中存在两个A和两个B。

m0_61544122的博客 551

29、固态变压器拓扑、设计及其应用深度解析

本文深入解析了固态变压器(SST)的拓扑结构、设计方法及其在智能电网和能源互联网中的应用。重点探讨了机器学习在SST优化设计中的应用,包括中高频变压器设计、整体系统优化与建模研究。文章详细介绍了多端口SST的拓扑特点、功率传输机制及其作为能源路由器的关键作用,分析了不同端口数量下的控制复杂度与应用场景,并通过案例研究展示了四端口SST在分布式能源系统中的实际应用。最后,文章总结了多端口SST面临的技术挑战,并展望了未来在先进控制策略、集成化设计和标准化方面的发展方向。

study的专栏 3791

python利用ffmpeg进行rtmp推流直播

思路: opencv读取视频 —> 将视频分割为帧 —> 将每一帧进行需求加工后 —> 将此帧写入pipe管道 —> 利用ffmpeg进行推流直播 pipe管道: 啥是pipe管道? 粗略的理解就是一个放共享文件的地方(理解不是很深刻。。。) 利用这个特点 让ffmpeg读取处理后的图像帧并进行rtmp推流即可 代码 ...

rainweic的博客 4万+

【OpenClaw企业级智能体实战】第24篇:一人公司实战——用Agent Teams同时管理产品、运营、销售(附16个Agent配置方案+全流程指令模板)

当AI智能体从“单一工具”进化为“协同团队”,“一人公司”已从商业概念变为落地现实。2025年中国超1200万个体创业者采用OPC模式,靠AI团队突破人力边界。本文基于OpenClaw Agent Teams框架,拆解“1总指挥+15执行者”的三层AI组织架构,提供覆盖产品、运营、销售全业务的16个Agent分工矩阵、可直接复制的部署代码、通信配置方案与全流程指令模板。通过虚拟案例验证:单人+AI团队可实现月入26万的商业闭环,AI承担90%标准化工作,人力成本降低75000元/月,ROI超3200%。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 941

树莓派3B+ /+ CSI摄像头 + FFmpeg + SRS 实现直播推流

手头有一个树莓派3B+ 和一块CSI摄像头,想要实现一个推拉流直播的效果。开发板(我用的是树莓派3B+)、CIS摄像头、云服务器(用来搭建SRS服务器)

m0_74139794的博客 3133

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

摄像头视频推流python_python中用FFmpeg向rtmp服务器推流,实现摄像头直播

一、目的从OpenCV中读取帧后,一方面对帧进行其他处理,同时把获取的帧推送到rtmp服务器实现直播。二、docker中搭建rtmp服务器本文忽略如何安装docker,docker的命令等。(一) 拉取rtmp镜像并运行我用的是 jun3/rtmp 这个镜像(GitHub地址是:https://github.com/jun3372/rtmp)docker pull jun3/rtmpdocker ...

weixin_39827625的博客 1740

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

以B站推流为例,运用ffmpeg推流的各种操作-1_Windows篇&安装ffmpeg

开头,向大家推介一下在平时个人用到特别方便在桌面直接记录笔记的软件,Microsoft 便笺 微软自家开发的,可以调整背景颜色等,最重要的是粘贴到它上面全部是无格式的文字,复制粘贴特别方便,同时在记录同时自动云同步和本地离线自动同步,还支持搜索等方便整理,总之很舒服,在win10商店里有 总思路 一:Windows系统上(这里为 win10,什么版本不重要) 1.多数电脑默认windows系统,对...

topia_csdn的博客 4732

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

下一篇: VLC多窗体(10个以上)同时拉流播放情况汇总
橙枫L
博客等级 码龄19年 172粉丝 25原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值