首页
学习
活动
专区
圈层
工具
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

基于FFmpeg进行RTMP推流(二)

在前面一节基于FFmpeg进行RTMP推流(一)我们写了最简单的一版推流代码。但细心调试过的兄弟会发现当我们把文件换成mp4后,发现上面的代码在写入文件头时报错。也就是说上一版的代码是有bug的。...说明我们推流的速度有问题。快了或慢了都会有问题。我们大概可以定位到,我们在计算延时的时候出现了错误。...因为在这一版的FFmpeg中。out_stream->time_base的值为1/9000000。这里我们确以1/1000000计算的,这个当然就错了。...////////////////////////////////////////////////////////////////// // 准备推流...<< endl; //推流每一帧数据 //int64_t pts [ pts*(num/den) 第几秒显示] //int64_t dts 解码时间 [P帧(相对于上一帧的变化

8.8K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    FFmpeg流媒体处理-收流与推流

    rtmp推流必须推送flv封装格式,udp推流必须推送mpegts封装格式,其他情况就当作是输出普通文件。这里使用push_stream变量来标志是否使用推流功能,这个标志后面会用到。...具体方法参考:“FFmpeg开发环境构建” 3.2 搭建流媒体服务器 测试收流与推流功能需要搭建流媒体服务器。我们选用nginx-rtmp作为流媒体服务器用于测试。...nginx-rtmp服务器运行于虚拟机上,推流客户端与收流客户端和nginx-rtmp服务器处于同一局域网即可。...推流测试: ffmpeg -re -i tnhaoxc.flv -c copy -f flv rtmp://192.168.0.104/live -re:按视频帧率的速度读取输入 -c copy:输出流使用和输入流相同的编解码器...遗留问题 推流的问题:不管是用ffmpeg命令,还是用本测试程序,推流结束时会打印如下信息: [flv @ 0x22ab9c0] Timestamps are unset in a packet for

    10.5K32

    Android平台下使用FFmpeg进行RTMP推流(摄像头推流)

    简介 前面讲到了在Android平台下使用FFmpeg进行RTMP推流(视频文件推流),里面主要是介绍如何解析视频文件并进行推流,今天要给大家介绍如何在Android平台下获取采集的图像,并进行编码推流...学习本章之前最好先看之前的文章,这里是一套连贯的教程 RTMP服务器搭建(crtmpserver和nginx) 音视频编码相关名词详解 基于FFmpeg进行RTMP推流(一) 基于FFmpeg进行RTMP...推流(二) Linux下FFmpeg编译以及Android平台下使用 Android平台下使用FFmpeg进行RTMP推流(视频文件推流) 打开摄像头并设置参数 具体代码查看CameraActivity.java...(ofmt_ctx, pCodec)这个就和之前的推文件流一样了。...输出视频数据 ret = av_interleaved_write_frame(ofmt_ctx, &enc_pkt); 释放资源 在结束编码推流后我们也需要释放相关的资源 if (video_st

    6.5K51

    FFmpeg推流命令总结

    今天考虑一个mcu混合的实现,也就是接收多路过来的rtp流,然后转发出去一路的rtmp流,使用ffmpeg测试做的记录,刚开始一直通过ffmpeg推送的文件流不能满足要求,还是对参数配置不熟悉; 0、ffmpeg...1、udp或者rtp推流 >最简单模式: ffmpeg -re -i d:\videos\1080P.264 -vcodec copy -f rtp rtp://127.0.0.1:1234 ffplay...192.168.0.100   m=audio 5005 RTP/AVP 97 a=rtpmap:97 PCM/8000/1 a=framerate:25 c=IN IP4 192.168.0.100 2、rtsp推流.../live/rtsp_test -rtsp_transport tcp 标识使用tcp作为rtp的通道 3、rtmp推流  ffmpeg -re -i /root/mp4/1.flv -vcodec copy...-acodec copy -f flv rtmp://192.168.2.161/live/rtsp_test 修改-i参数为rtsp的地址,可以拉监控流然后转发为rtmp流: ffmpeg -f rtsp

    6.9K40

    FFmpeg开发笔记(二十三)使用OBS Studio开启RTMP直播推流

    二、启动流媒体服务器按照《FFmpeg开发实战:从零基础到短视频上线》一书“10.2.2  FFmpeg向网络推流”小节的说明,下载并安装轻量级流媒体服务软件MediaMTX。...解压后双击启动mediamtx.exe,此时RTMP协议的默认推流地址为rtmp://127.0.0.1:1935/stream。...这里之所以用rtmp地址而非rtsp地址,是因为OBS Studio默认只支持RTMP推流,如果要让它支持RTSP推流,还得额外增加配置。因此为了简化直播流程,就采用RTMP方式推流了。...三、打开OBS Studio双击启动OBS Studio之后,执行下列三个步骤开启直播推流:1、单击主界面右下角的“设置”按钮,或者依次选择顶部菜单“文件”→“设置”,弹出的设置窗口在左边列表选择“直播...四、启动拉流程序打开MSYS的命令行窗口,进入《FFmpeg开发实战:从零基础到短视频上线》随书源码的chapter10目录,运行下面的程序命令,期望从指定的rtmp地址拉流并播放。.

    1.2K00

    Android平台下使用FFmpeg进行RTMP推流(视频文件推流)简介

    简介 前面已经讲到如何在Linux环境下编译FFmpeg以及在Android项目中使用,这一节就开始真正的使用FFmpeg。在Android平台下用FFmepg解析视频文件并进行RTMP推流。...新增推流函数 异常处理 设置回调方法 常见问题 源码 新增推流函数 首先我们将所有FFmpeg的操作抽取到一个类里面,然后增加推流方法。...进行RTMP推流(二)中使用的代码一致,我们直接拷贝过来即可。...至于FFmpeg的使用,这里就不重复讲了,不懂的可以看之前的文章。源码见末尾 异常处理 在我们之前的推流代码中,并没有做异常处理。这样在正式的使用中肯定不太好的。所以我们加上try catch。...源码见末尾 设置回调方法 为了方便我们查看推流的信息,我们新增一个回调类。

    7.1K20

    FFmpeg 流媒体处理 - 收流与推流

    rtmp 推流必须推送 flv 封装格式,udp 推流必须推送 mpegts 封装格式,其他情况就当作是输出普通文件。...具体方法参考:"FFmpeg 开发环境构建" 3.2 搭建流媒体服务器 测试收流与推流功能需要搭建流媒体服务器。我们选用 nginx-rtmp 作为流媒体服务器用于测试。...nginx-rtmp 服务器运行于虚拟机上,推流客户端与收流客户端和 nginx-rtmp 服务器处于同一局域网即可。...推流测试: ffmpeg -re -i tnhaoxc.flv -c copy -f flv rtmp://192.168.0.104/live "-re":按视频帧率的速度读取输入 "-c copy...收流的问题:推流结束后,收流超时未收以数据,会打印如下信息后程序退出运行 RTMP_ReadPacket, failed to read RTMP packet header 5.

    4.7K01

    偶遇FFMpeg(四)-FFmpeg PC端推流

    开编 之前在Android集成FFmpeg。主要还是基于命令行的方式进行操作。刚刚好最近又在研究推流相关的东西。看了一些博文。和做了一些实践。 就希望通过本文记录袭来。 本文的大体结构如下 ?...把attribute_deprecated注释掉了 推流代码 大致先了解一下结构体和结构体之间的关系 结构体关系 ?...他们之间有微小的差别:使用FFMPEG类库分离出多媒体文件中的H.264码流 因此在使用FFMPEG进行视音频处理的时候,常常可以将得到的AVPacket的data数据直接写成文件,从而得到视音频的码流文件...FFMPEG推流的套路 套路图如下: ? FFMPEG推流的套路.png 整个方法的流向: ? copy from leixiaohua.png 首先,我们先来熟悉一下这个整体的套路。其实推流的过程。...,就是通过avio_open链接网址,做好推流的准备 //开始使用io进行推流 //通过AVIO_FLAG_WRITE这个标记位,打开输出的AVFormatContext

    2.5K30
    领券