FFmpeg 的使用与Docker安装流媒体服务器

这篇具有很好参考价值的文章主要介绍了FFmpeg 的使用与Docker安装流媒体服务器。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

本文阐述的均为命令行的使用方式,并不牵扯FFmpeg 的 C++音视频开发内容,补充一句,C++的资料真的少,能把C++学好的人,我真的是觉得巨佬。

我主要是使用FFmpeg 推流方面的知识,案例大都是靠近这方面。

一、FFmpeg 介绍

本文读者会比较小众~ 看到此文的朋友,大概率是需要用到FFmpeg啦,简单说一下下。
就算是从来没接触过的朋友,其实也已经在生活的各个方面都接触过FFmpeg处理完东西(音视频)。
一句话来总结:FFmpeg 就是一款封装好的关于音视频方面的开源处理工具。

它功能强大,用途广泛,大量用于视频网站和商业软件(比如 Youtube 和 iTunes),也是许多音频和视频格式的标准编码/解码实现。

如果有接触过 gstreamer (另外一个音视频处理框架),它的也有使用到 FFmpeg 的编码器。

二、FFmpeg 安装

sudo apt-get install ffmpeg

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

ffmpeg --help

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

安装就一会的事情,主要还是要看怎么使用。

三、FFmpeg 使用

FFmpeg 的命令行参数分布大致如下:

ffmpeg \
[全局参数] \
[输入文件参数] \
-i [输入文件] \
[输出文件参数] \
[输出文件]

下面是一个例子。

ffmpeg \
-y \ # 全局参数
-c:a libfdk_aac -c:v libx264 \ # 输入文件参数
-i input.mp4 \ # 输入文件
-c:v libvpx-vp9 -c:a libvorbis \ # 输出文件参数
output.avi # 输出文件

上面的命令将 mp4 文件转成 webm 文件,这两个都是容器格式。输入的 mp4 文件的音频编码格式是 aac,视频编码格式是 H.264;输出的 webm 文件的视频编码格式是 VP9,音频格式是 Vorbis。
如果不指明编码格式,FFmpeg 会自己判断输入文件的编码。因此,上面的命令可以简单写成下面的样子。
 

ffmpeg -i input.avi output.mp4

相关学习资料推荐,点击下方链接免费报名,先码住不迷路~】

免费学习地址:https://xxetb.xet.tech/s/2cGd0

【免费分享】音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击788280672加群免费领取~

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

四、FFmpeg 常见案例

本章节只是简单的介绍了如何使用,并且解释啦常用的参数,如果需要更详细全面的参数解释,可以查看FFmpeg官方文档。

封包格式(format、视频格式)、编码、解码、帧率、I帧、B帧等等一些偏向于专业的名词,大伙如果有需求可以去仔细了解了解,我这边暂时只是简单使用一下。

4.1、转换编码格式
转换编码格式(transcoding)指的是, 将视频文件从一种编码转成另一种编码。比如转成 H.264 编码,一般使用编码器libx264,所以只需指定输出文件的视频编码器即可。
 

ffmpeg -i 1.mp4 -c:v libx264 output_h264.mp4

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

查看支持的编码器(也就是 -vcodec 简称为 -c:v 后面可以接的参数):

ffmpeg -codecs

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

支持很多很多,不一一列举出来啦

4.2、转换文件格式:

ffmpeg -y -i 1.mp4 -c:v libx264 -preset ultrafast -b:v 6000k output_avi.avi其中, 

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

:v 代表视频,:a 代表音频;

  • -i 1.mp4 表示视频输入来源,这表示当前目录下的 1.mp4 ,也可以接收来自外部视频源或者本机摄像头作为视频来源
  • -c:v libx264 表示使用264编码器,
  • -preset,H.264 的转码预设参数和调优参数。指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
  • -b 6000k 指定码率(比特率),码率低时速度快,但失真严重,码率高时反之;
  • -y 表示如果已存在 output_avi.avi则将其覆盖;

4.3、对已有视频进行抓图:
 

ffmpeg -i output_avi.avi -y -f image2 -ss 8 -t 0.001 -s 1980x1280 'test.jpg'

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

4.4 调整码率

调整码率(transrating)指的是,改变编码的比特率,一般用来将视频文件的体积变小。下面的例子指定码率最小为964K,最大为3856K,缓冲区大小为 2000K。

ffmpeg -i 1.mp4 -minrate 964K -maxrate 3856K -bufsize 2000K output_rate.mp4

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

4.5 改变分辨率(transsizing)

下面是改变视频分辨率(transsizing)的例子,从 1080p 转为 480p

ffmpeg -y -i 1.mp4 -vf scale=480:-1 output_scale.mp4

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

4.6 提取音频

有时,需要从视频里面提取音频(demuxing),可以像下面这样写。

ffmpeg -y -i 1.mp4 -vn -c:a copy output_avideo.aac

上面例子中,-vn表示去掉视频,-c:a copy表示不改变音频编码,直接拷贝。

4.7、本地摄像头推流

ffmpeg -f video4linux2 -r 30 -i /dev/video0 -vcodec h264 -f flv rtmp://192.168.79.133:1935/live/stream0

稍微解释一下上面的命令:

  • -f video4linux2 -r 30 -i /dev/video0 表示从 /dev/video0 中以 30 fps 的帧率采集视频,视频格式 为 video4linux2
  • c:v libx264 输出视频的编码格式是 H.264, RTMP 通常采用H.264 编码
  • f flv 指的视频的封包格式, RTMP 一般采用 flv 封包格式。
  • an 忽略音频流
  • preset superfast -tune zerolatency H.264 的转码预设参数和调优参数。会影响视频质量和压缩率

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

注意:在虚拟机中使用摄像头需注意、将USB的兼容性设置成USB3.0 ,否则出现推流一直卡在那

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

五、Docker 安装流媒体服务器,推流和拉流实现

这里我当时就是随便在github上找了一个可以docker方式部署的流媒体服务器~

直接输入下面这条命令就可以构建成功啦。

sudo docker run -id --restart=always -p 1935:1935 -p 8080:80 -p 8443:443 -p 554:554 -p 10000:10000 -p 10000:10000/udp -p 8000:8000/udp -p 9000:9000/udp zlmediakit/zlmediakit:master

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

zlmediakit:github 地址

详细使用大家可以去到github仔细阅读文档,我只是简单使用,不再多说啦哈

FFmpeg 推流和拉流测试

推流和拉流,要是接触过视频服务可能就比较了解~

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

粗糙的流程就大致如上图啦,推流就是将收集到的视频流推送到流媒体服务器上去,拉流就是从流媒体服务器上把视频拉取下来,进行播放。

至于如何收集视频,如何进行视频处理,更为详细的就没有介绍啦,FFmpeg 是涵盖了全流程的, 可以去了解了解。

里面牵扯到的 RTSP、RTMP、HTTP-FLV协议,都是一些视频相关的协议,可以去了解了解,我这里只测试了 RTSP和RTMP协议。

rtsp 推流和拉流

ffmpeg -re -i 1.mp4 -vcodec h264 -acodec aac -f rtsp -rtsp_transport tcp rtsp://192.168.79.133/live/room

(rtsp 端口我这里使用的是默认的 554,故而省略没写啦

拉流进行播放可以使用专门的播放器,也可以使用ffmpeg的组件ffplay来进行视频的播放

ffplay 拉流进行播放

ffplay rtsp://192.168.79.133:554/live/room

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

常用的播放器 vlc media player 也可以播放 rtsp 和 rtmp 协议的视频流。

播放器截图

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

然后正常播放就是ok啦

rtmp 推流

ffmpeg -re -i 1.mp4 -vcodec h264 -acodec aac -f flv rtmp://192.168.79.133/live/room

ffplay rtmp://192.168.79.133:1935/live/room

rtmp协议的端口号是 1935 ~这些端口号,都是可以修改的,是否支持取决于你部署的流媒体服务器是什么样的。

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

播放器截图

FFmpeg 的使用与Docker安装流媒体服务器,ffmpeg,docker,服务器

(另外,这个流媒体服务器内部对视频做了处理,可以实现多种输出,你RTMP推上去的,也可以用RTSP协议拉流下来的)

原文 FFmpeg 的使用与Docker安装流媒体服务器文章来源地址https://www.toymoban.com/news/detail-796228.html

到了这里,关于FFmpeg 的使用与Docker安装流媒体服务器的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 搭建RTSP流媒体服务器(用于测试分析RTSP协议)(rtsp-simple-server+FFmpeg+vlc+wireshark)

    本文所搭建的流媒体服务器是在虚拟机centos7中安装rtsp-simple-server充当服务器,在windows本机中安装FFmpeg用于推流,使用vlc播放器播放rtsp-simple-server中的视频充当拉流,并用wireshark抓包分析RTSP协议。 在https://github.com/aler9/rtsp-simple-server/releases下载linux版本,进入文件夹解压 tar

    2024年02月09日
    浏览(52)
  • 9步实现 Docker部署 SRS rtmp/flv流媒体服务器

    这是基于centos7.6系统部署的 运行容器会直接停留在容器运行界面,通过Ctrl+P+Q可后台形式退出容器 这时候其实已经运行成功!可以通过以下命令查看SRS控制台 进入/home/docker/srs3 可查看配置文件是否复制成功 这是可能会报错: 因为步骤四我们意见运行一个容器,已经使用过

    2024年02月15日
    浏览(59)
  • 使用nginx部署rtmp流媒体服务器完成直播推流

    笔者为了开发方便使用windows系统的Nginx进行配置。 下载Nginx http://nginx-win.ecsds.eu/download/ 在windows版本下只有个别的几个版本才支持rtmp服务,本文选择版本 nginx 1.7.11.3 Gryphon.zip 解压下载zip文件 在conf文件夹中找到 nginx-win.conf 配置我们所需要的内容 rtmp是adobe基于flash开发的音视频

    2024年02月15日
    浏览(45)
  • linux+nginx-http-flv-module+ffmpeg实现搭建简易流媒体服务器将rtsp流转flv格式在web端和微信小程序实时播放监控视频

    一.介绍背景 公司项目开发需求:将海康摄像头的rtsp流在web端及微信小程序端进行播放。之前我写过一篇关于web端使用webtrc+videojs播放rtsp流的文章,确实能够解决web端播放rtsp流的需求,但是这次多加了一个微信小程序....所以要考虑小程序的播放问题。本着探索实践的精神在

    2024年02月08日
    浏览(68)
  • FFmpeg流媒体处理的收流与推流

    1. 简介 流媒体是使用了流式传输的多媒体应用技术。如下是维基百科关于流媒体概念的定义: 流媒体 (streaming media) 是指将一连串的媒体数据压缩后,经过网络分段发送数据,在网络上即时传输影音以供观赏的一种技术与过程,此技术使得数据包得以像流水一样发送;如果不

    2024年02月11日
    浏览(39)
  • 流媒体服务器(17)—— 流媒体开源服务 MediaSoup 初识

    目录 前言 正文 一、简单介绍 二、关键特色 1. 超强 SFU 功能 2. Node.js 模块 3. 客户端 SDK 三、架构组成 1. 关键实例 2. 重要模块 四、发展现状 https://liuzhen.blog.csdn.net/article/details/115603863 https://liuzhen.blog.csdn.net/article/details/115603863 最近收看了一期微软(中国)关于云原生、大数据

    2023年04月09日
    浏览(47)
  • 一个.Net开发的功能强大、易于使用的流媒体服务器和管理系统

    推荐一个视频管理系统,非常适合个人或者公司打造视频网站。 这是基于.Net Core开发的,跨平台的开源项目;支持多种音视频格式,如MP3、MP4、AVI、WMV、FLV等;支持本地管理与远程管理,让管理员可以轻松的管理视频资源。 而且该项目还提供多平台的客户端,支持Web、桌面

    2024年02月05日
    浏览(69)
  • 【音视频流媒体】 3、ffmpeg、ffplay、ffprobe 超详细介绍

    ffmpeg中文文档 常见测试视频 ffmpeg 大神笔记 ffmpeg 的 release 是 Linux Static Build ,即静态库(各库已被打包到可执行程序中),而不是动态链接库(共享机器上的 so),所以非常方便部署(sqlite 也是这样),这是ffmpeg官网下载地址 rtsp-simple-server用法 注意,该命令会找时间点附近

    2024年02月08日
    浏览(51)
  • 学着搭建流媒体服务器

    操作系统:NAME=\\\"openEuler\\\",架构:aarch64,CPU 运行模式:64-bit 目前有多个开发源代码可以搭建流媒体服务,但要先依赖gcc和cmake,所以首先安装gcc和cmake,查了一通资料,cmake安装记录如下: 1、依赖环境安装 yum -y install libyaml libyaml-devel python-setuptools libcurl-devel python-devel gmp gmp

    2024年02月11日
    浏览(46)
  • 搭建SRS流媒体服务器

    一、获取 SRS git clone https://github.com/ossrs/srs cd srs/trunk 二、编译SRS ./configure make 三、编写SRS配置文件(我的这个文件是原始的,未修改) vim conf/srs.conf 四、启动SRS ./objs/srs -c conf/srs.conf 五、启动ip摄像头进行推流 手机下载一个ip摄像头软件,然后设置中修改RTMP推流地址 rtmp://你的阿里

    2024年02月16日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包