当前位置:   article > 正文

Linux系统中,如何使用FFmpeg推流到到公网RTMP服务器(RTMP视频流)_linux ffmpeg 推流

linux ffmpeg 推流

目录

一. FFmpeg介绍

1、概述

2、主要功能

3、项目组成

二、安装FFmpeg

1、安装EPEL存储库:

2、安装FFmpeg:

3、检查安装:

三、 准备RTMP服务器

 四. 使用FFmpeg推送RTMP流

(一)条件

(二)视频源为视频文件

1、推流命令

2、命令解释

(三)视频源是实时视频

1、推流命令

2、命令解释

(四)注意事项


一. FFmpeg介绍

1、概述

(1)定义:FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

(2)许可证:采用LGPL或GPL许可证。

(3)开发平台:最初在Linux平台下开发,但同样可以在其他操作系统环境中编译运行,包括Windows、Mac OS X等。

(4)项目起源:由Fabrice Bellard发起,2004年至2015年间主要由Michael Niedermayer负责维护。

2、主要功能

(1)音视频编解码:支持各种音频和视频编解码器,如H.264、H.265、AAC、MP3等。

(2)格式转换:可以将不同格式的音频和视频文件相互转换,例如将MP4转换为AVI或WAV转换为MP3等。

(3)流媒体处理:支持从网络摄像头、文件或其他来源捕获音视频流,并能将处理后的流推送到服务器或其他设备。

(4)图像处理:除了音视频处理外,还支持图像处理,如提取视频帧、合成图片和视频等。

(5)剪辑和编辑:可以对音视频进行剪辑和编辑,包括裁剪、剪切、拼接等操作。

(6)字幕处理:支持字幕的添加、移除和编辑。

(7)音频处理:提供丰富的音频处理功能,如音频的剪辑、混音、音量调节等。

(8)实时视频处理:能够处理实时的音视频流,适用于直播、视频会议等场景。

3、项目组成

(1)libavcodec:领先的音/视频编码库,为了保证高可移植性和编解码质量,很多代码都是从头开发的。

(2)libavformat:用于各种音视频封装格式的生成和解析。

二、安装FFmpeg

        确保你的Linux系统中已经安装了FFmpeg。如果没有安装,你需要先下载并安装它。具体的安装步骤可能会根据你的Linux发行版有所不同。本文以CentO系统中安装FFmpeg为例,通过包管理工具yum进行安装。

1、安装EPEL存储库

	sudo yum install epel-release

2、安装FFmpeg

  1. sudo yum install ffmpeg

如果需要开发库(如libavcodeclibavformat等),可以额外安装ffmpeg-devel

    sudo yum install ffmpeg-devel

3、检查安装

    ffmpeg -version
    如果成功安装,该命令将显示FFmpeg的版本信息。

三、 准备RTMP服务器

        确保你有一个可以接收RTMP流的公网服务器。这个服务器应该已经配置好了RTMP服务,如使用Nginx的RTMP模块。我们这里直接准备AS-V1000视频监控平台就行了,有公网的AS-V1000平台。

 四. 使用FFmpeg推送RTMP流

(一)条件

        需要确保有公网服务器的 URL 和必要的权限。

        一旦有了FFmpeg和RTMP服务器,就可以使用FFmpeg来推送RTMP流了。

(二)视频源为视频文件

1、推流命令

        以下是一个基本的FFmpeg命令示例:

ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -maxrate 3000k -bufsize 6000k -pix_fmt yuv420p -g 50 -c:a aac -b:a 160k -ac 2 -ar 44100 -f flv "rtmp://your-rtmp-server/live/stream-key"

2、命令解释

        这个命令的各部分解释如下:

         -re:以实时帧率读取输入。这通常用于视频文件,以确保输出流的速率与文件的帧率相匹配。

         -i input.mp4:指定输入文件的名称和路径。这里使用了一个MP4文件作为示例,但你可以替换为其他FFmpeg支持的文件或设备,如摄像头。

         -c:v libx264:使用libx264编码器对视频进行编码。这是H.264/AVC的常用编码器。

         -preset veryfast:设置libx264编码器的预设。这会影响编码速度和输出质量。veryfast是一个较快的预设,但可能会牺牲一些质量。

         -maxrate 3000k 和 -bufsize 6000k:设置视频的比特率和缓冲区大小。这些值应根据你的网络条件和需求进行调整。

         -pix_fmt yuv420p:设置像素格式。RTMP通常使用YUV420P格式。

         -g 50:设置关键帧间隔(以帧为单位)。这会影响视频的编码效率和播放流畅性。

         -c:a aac:使用AAC编码器对音频进行编码。这是RTMP流中常用的音频编解码器。

         -b:a 160k:设置音频的比特率。这应根据你的音频质量和网络条件进行调整。

         -ac 2:设置音频通道数(通常为2,即立体声)。

         -ar 44100:设置音频采样率(通常为44100 Hz)。

         -f flv:设置输出格式为FLV。RTMP流通常使用FLV封装。

         "rtmp://your-rtmp-server/live/stream-key":指定RTMP服务器的URL和流路径。你需要将其替换为你自己的RTMP服务器地址和流密钥。

(三)视频源是实时视频

        如果你的视频源是实时捕获的,比如摄像头或者桌面。

1、推流命令

        可以使用以下命令:

ffmpeg -i input_device -c:v libx264 -c:a aac -f flv rtmp://server_url/live/stream_name

2、命令解释

       命令部分解释如下,其他的参考前文的解释。

        -i input_device 

        可以是 :

        -i /dev/video0(摄像头)

        或者 

        -i desktop grab -framerate 30 -outsize 1280x720(桌面捕获)。

        请确保替换 server_url  stream_name 为你的 RTMP 服务器的实际 URL 和你想要创建的流的名称。

        如果服务器有特定的用户名和密码,你可能需要在命令中使用 -username  -password 选项。

        此外,由于实时视频流不像录像文件,根据网络环境和服务器的要求,可能需要调整视频和音频的编码参数,比如码率、分辨率等,以确保流畅传输。

(四)注意事项

        1、确保你的公网服务器已经正确配置并可以接收RTMP流。

        2、根据你的网络条件和需求,可能需要调整上述命令中的编码参数和输出格式。

        3、如果你正在从摄像头或其他实时源推送RTMP流,而不是从文件推送,你需要相应地更改输入选项。

        4、推送RTMP流时,请确保你的网络连接是稳定的,以避免中断或质量下降。


文章正下方可以看到我的联系方式:鼠标“点击” 下面的 “威迪斯特-就是video system 微信名片”字样,就会出现我的二维码,欢迎沟通探讨。


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/人工智能uu/article/detail/918159
推荐阅读
相关标签
  

闽ICP备14008679号