`

在FFMPEG中使用libRTMP的经验

 
阅读更多

FFMPEG在编译的时候可以选择支持RTMP的类库libRTMP。这样ffmpeg就可以支持rtmp://, rtmpt://, rtmpe://, rtmpte://,以及 rtmps://协议了。但是如何使用ffmpeg支持RTMP协议还是有一定的学问的。本文总结一下部分经验。

ffmpeg接受一个字符串的输入方式,比如:“rtmp://xxxx live=1 playpath=xxx ...”这种的输入形式,即第一个字符串是rtmp的url,然后加一个空格,然后再附加一些参数。附加的参数的格式形如“playpath=xxxx”这种形式。这个乍一看让人觉得有点不习惯。因为一般的输入只包含一个字符串,比如说一个流媒体的url或者是文件的路径,不会采用“url+空格+参数1+参数2+...”的形式。

例如,当需要打开一个直播流的时候,可以用如下字符串(这里连接的是中国教育电视台1频道(网络直播)):

 

rtmp://pub1.guoshi.com/live/newcetv1

 

当需要用ffmpeg保存RTMP直播流媒体的时候:

 

ffmpeg -i "rtmp://pub1.guoshi.com/live/newcetv1 live=1" -vcodec copy -acodec copy ttt.flv

 

当需要用ffplay播放RTMP直播流媒体的时候:

 

ffplay "rtmp://pub1.guoshi.com/live/newcetv1 live=1"

在使用FFMPEG类库进行编程的时候,也是一样的,只需要将字符串传递给avformat_open_input()就行了,形如(这里连接的是香港电视台频道(网络直播)):

 

char url[]="rtmp://live.hkstv.hk.lxdns.com/live/hks live=1";
avformat_open_input(&pFormatCtx,url,NULL,&avdic)

 

注:librtmp支持的参数:http://rtmpdump.mplayerhq.hu/librtmp.3.html

 

 

 

分享到:
评论

相关推荐

    ffmpeg 1.2 版本,绝对支持librtmp

    在FFmpeg 1.2 版本中,它包含了对librtmp库的完整支持,使得用户能够方便地进行RTMP(Real-Time Messaging Protocol)流的推流和拉流操作。librtmp是Adobe Systems开发的一个轻量级库,主要用于与RTMP服务器进行交互...

    ffmpeg_with_x264_librtmp_源码+编译脚本+生成库.zip

    ffmpeg_with_x264_librtmp_源码+编译脚本+生成库,可在Linux/Android中使用 想自己学习编译过程的,请参照博客:https://hellogoogle.blog.csdn.net/article/details/119618962

    将rtmp流保存成MP4或者flv格式视频(参考资料包括:librtmp实现flv,ffmpeg实现MP4和mp4v2实现MP4)

    在实际操作中,通常会结合librtmp接收RTMP流,然后使用ffmpeg或mp4v2将接收到的数据写入目标文件。这个过程涉及到音视频的解码、重组和编码,以及对不同格式的文件结构的理解。 压缩包中的"SourceCode"文件可能包含...

    librtmp 拉取rtmp流保存为flv或者h264

    在描述中提到的项目中,开发者使用VS2008编写了一个稳定的应用程序,该程序通过librtmp库与RTMP服务器建立连接,然后从流中拉取数据。拉取的数据包含视频和音频帧,这些帧可以被解码并保存为两种不同的格式:FLV和H...

    ffmpeg-rtmp

    在 FFmpeg-RTMP 中,它被编译时集成了 librtmp 库,这使得 FFmpeg 能够更好地支持 RTMP 协议,用于与基于 RTMP 的流媒体服务器如 Adobe Flash Media Server 或 Wowza 进行交互。 librtmp 是一个轻量级的库,专门...

    ffmpeg及所需第三方库

    ffmpeg源码及所需第三方库,链接所需的librtmp库。编译步骤可以查看本人博客。

    java+C++实现基于MediaCodec与srs-librtmp的Android Rtmp播放器,不依赖ffmpeg+源码

    java+openGL+C++实现基于MediaCodec与srs-librtmp的Android Rtmp播放器,不依赖ffmpeg+源码+项目文档+使用说明,适合毕业设计、课程设计、项目开发。项目源码已经过严格测试,可以放心参考并在此基础上延申使用~ ...

    FFmpeg4.2.2和RTMP结合编译

    因为最新的FFmpeg默认使用clang作为编译器,但在这里可能需要使用其他的编译器,所以需要修改`configure`文件,取消使用clang的设置。此外,由于FFmpeg默认开启librtmp支持,而这个支持依赖于pkgconfig,但由于我们...

    librtmp.zip

    在FFmpeg中,可以利用librtmp库的接口,轻松实现RTMP的推流和拉流操作。 总的来说,librtmp库为开发者提供了一种高效、灵活的方式来实现RTMP协议的功能。通过在VS2019环境中编译和使用这个库,我们可以便捷地创建...

    librtmp_receive.zip

    在C++编程环境中,librtmp提供了一套API,使得开发者能够方便地建立连接、发送命令、接收媒体数据等。本文将详细探讨librtmp如何在C++中接收视频流和音频流,以及其核心原理和操作步骤。 首先,理解RTMP协议的基础...

    android, ffmpeg , rmtp, 播放器 , 直播

    这可能是项目中使用的特定播放器实现,可能包含对上述技术的集成和优化。SongliHLCPlayer可能是一个针对HLS(High-Level Streaming)的自定义播放器,它专注于提高流媒体性能,尤其是对于实时直播场景,可能具有更...

    基于librtmp对MP3音频文件推流实现代码

    最近在做一个基于RTMP推流的项目,将实现的代码整理了供大家参考,推流环境使用ffmpeg进行推流,nginx做流媒体服务器,VLC进行拉流。

    librtmp_C++_receive.zip

    《使用librtmp库在C++中接收视频和音频流》 librtmp库是一个开源的C语言库,专门用于处理RTMP(Real-Time Messaging Protocol)协议,它为开发者提供了直接与Adobe Flash Media Server或FMS兼容服务器进行交互的...

    ffmpeg编译支持h265的rtmp协议 Windows版本

    在本项目中,我们关注的是如何在Windows环境下编译FFmpeg,使其支持H265编码和RTMP协议。H265,也称为HEVC(High Efficiency Video Coding),是目前广泛使用的高效视频编码标准,相比前一代H264,它能在同等画质下...

    基于QtAndroid平台的NDK移植librtmp+ffmpeg视频播放器设计源码

    该项目是一款基于QtAndroid平台的视频播放器设计源码,主要使用C++语言开发,并包含C语言代码。...该播放器实现了NDK移植librtmp和ffmpeg,支持音频与视频的同步播放,采用Qt进行绘制,界面简洁,无额外UI美化。

    arm64-v8a.zip

    在Linux 服务器上,使用Android NDK17 、 FFmpeg4.2.2、librtmp混合编译的Android arm64-v8a架构的ffmpeg文件,可直接在Android项目中导入并编写相应的代码实现播放rtmp流媒体功能。 若有armeabi-v7a(32位)编译需求...

    树莓派使用python-librtmp实现rtmp推流h264的方法

    通过wireshark抓ffmpeg的包一点点改动,最终可以在red5和斗鱼上推流了。 没怎么写过python,有不恰当的地方请包涵。 上代码: # -- coding: utf-8 -- # http://blog.csdn.net/luhanglei import picamera import ...

    e12d5920 - 副本 (3)-能够进行麦克风和声卡录音-aac新版编码ffmpeg-将一帧数据完成编码完成-麦克风.rar

    这个压缩包"e12d5920 - 副本 (3)-能够进行麦克风和声卡录音-aac新版编码ffmpeg-将一帧数据完成编码完成-麦克风.rar"提供了关于如何在Windows 7环境下使用CoreAudio进行音频采集,再通过librtmp推流AAC编码的音视频...

    ffmpeg_sdl_拉流播放音频aac2-带界面操作.rar

    在本项目"ffmpeg_sdl_拉流播放音频aac2-带界面操作.rar"中,开发者使用FFmpeg与SDL(Simple DirectMedia Layer)库结合,实现了一个从RTMP流中拉取AAC音频并播放的功能,同时提供了一个简单的操作界面。下面将详细...

    ffmpeg-2.5.2-win64-dev.7z

    This is a FFmpeg Win64 shared build by Kyle Schwarz. Zeranoe's FFmpeg Builds Home Page: This build was compiled on: Dec 30 2014, at: 17:29:04 FFmpeg version: 2.5.2 libavutil 54. 15.100 / 54. 15.100 ...

Global site tag (gtag.js) - Google Analytics