linux下使用ffmpeg将rtmp流转换为hls(代码片段)

你知道989 你知道989     2023-04-06     773

关键词:

Linux下使用FFmpeg将RTMP流转换为HLS

所需资料

安装FFmpeg

由于CentOS没有官方FFmpeg rpm软件包。但是,我们可以使用第三方YUM源(Nux Dextop)完成此工作。

sudo rpm --import http://li.nux.ro/download/nux/RPM-GPG-KEY-nux.ro

sudo rpm -Uvh http://li.nux.ro/download/nux/dextop/el7/x86_64/nux-dextop-release-0-5.el7.nux.noarch.rpm

安装FFmpeg 和 FFmpeg开发包

sudo yum install ffmpeg ffmpeg-devel -y

测试FFmpeg

ffmpeg -h

配置安装nginx并添加nginx-http-flv-module到nginx中

依次安装系统相关依赖项

yum -y install unzip
yum -y install gcc-c++ 
yum -y install pcre pcre-devel  
yum -y install zlib zlib-devel 
yum -y install openssl openssl-devel

将nginx-http-flv-module和nginx上传并解压到/usr/local/nginx中

cd /usr/local/nginx
tar -zxvf nginx-1.8.1.tar.gz
unzip nginx-http-flv-module-1.2.6.zip

进入nginx目录下编译安装nginx

cd nginx-1.8.1
./configure --prefix=/usr/local/nginx  --add-module=/usr/local/nginx/nginx-http-flv-module
make && make install

prefix为nginx的安装的目录
add-moudle为nginx-http-flv-module的目录

配置Nginx 以实现流转换

配置RTMP

rtmp 
    server 
       listen 1935;
​
       application myapp 
           live on;
       
       application live 
             live on;   #开启实时
             hls on;    #开启hls
             hls_path /usr/local/etc/nginx/html/multimedia/hls;  #hls的ts切片存放路径
             hls_fragment 2s;         #本地切片长度
             hls_playlist_length 6s;  #HLS播放列表长度
       
    

配置HLS拉流

location /live 
    types 
        application/vnd.apple.mpegurl m3u8;
        video/mp2t ts;
    
    alias /usr/local/etc/nginx/html/multimedia/hls/;
    add_header Cache-Control no-cache;

完整nginx配置

user  nginx;

# 自动分配工作进程数
worker_processes  auto;

# 绑定cpu
worker_cpu_affinity auto;

# 指明worker进程的ince值
worker_priority -15;

# 错误日志存放位置
error_log  /var/log/nginx/error.log warn;
# pid文件存放位置
pid        /var/run/nginx.pid;

events 
    worker_connections  1024;
    accept_mutex on;         # 设置单个请求只唤醒一个进程
    multi_accept on;         # 设置一个工作进程可接收多个新网络连接


rtmp 
    server 
        listen 1985;

        application myapp 
            live on;
        

       application live 
             live on;   #开启实时
             hls on;    #开启hls
             hls_path /home/server/hls;  #hls的ts切片存放路径
             hls_fragment 2s;        
             hls_playlist_length 6s;
        
       

http 
    include       /etc/nginx/mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  /var/log/nginx/access.log  main;

    sendfile        on;
    server_tokens off;      #隐藏版本号
    client_max_body_size 50m;   #调整nginx上传文件限制
    keepalive_timeout  65;

    #gzip  on;  开启压缩
    gzip on;
    gzip_vary on;
    gzip_buffers 16 8k;
    gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript image/jpeg image/gif image/png application/x-protobuf;

    server 
        listen       1997;
        server_name  localhost;

        location / 
            root   html;
            index  index.html index.htm;
        

        error_page   500 502 503 504  /50x.html;
        location = /50x.html 
            root   html;
        

        location /live/ 
            types 
        	    application/vnd.apple.mpegurl m3u8;
       		    video/mp2t ts;
            
            alias /home/server/hls/;
            add_header Cache-Control no-cache;
        

    



添加nginx软连接

ln -s /usr/local/nginx/sbin/nginx /usr/bin/nginx

启动nginx

nginx

使用FFmpeg进行转流

测试流地址:
rtmp://media3.scctv.net/live/scctv_800

使用ffmpeg进行转换

ffmpeg -re -i rtmp://media3.scctv.net/live/scctv_800 -c copy -f flv rtmp://127.0.0.1:1997/live/test

第一行的地址为测试地址
第二个地址为nginx中配置的rtmp中的live
第二个地址的IP需更改为nginx的服务器IP , 端口为rtmp中配置的端口
test部分为自定义 , 是hls文件夹下的.m3u8和切片的名称

测试拉流

使用vlc在windows中测试
拉流地址为 :

http://127.0.0.1:1997/live/test.m3u8

此处的test和ffmpeg转换的第二个地址末尾的test相对应

如何将实时 RTMP 视频转换为实时 mp3 Icecast 流

...直播。我可以从RTMP获取ogg音频直播并将其翻译成Icecast2并使用JPlayer在我的网站上获取。现在我使用这样的命令:/usr/local/bin/ffmpeg-re-i 查看详情

使用 FFmpeg 通过 RTMP 发送 H.264 编码流

】使用FFmpeg通过RTMP发送H.264编码流【英文标题】:SendH.264encodedstreamthroughRTMPusingFFmpeg【发布时间】:2016-11-1506:56:54【问题描述】:我关注this将序列图像编码为h.264视频。这里输出我的部分代码:intsrcstride=outwidth*4;sws_scale(convertCtx,s... 查看详情

使用ffmpeg在windows平台下推rtmp流(代码片段)

使用FFMPEG在windows平台下推rtmp流工作中习惯在Linux下面使用FFmpeg模拟推rtmp流,无奈家中的电脑都是windows系统,需要利用家中的带宽来测试流媒体服务器的性能。所以研究了一下如何在windows系统中快速推流。首先下载安装ffmpeg下... 查看详情

在不中断 rtmp 流的情况下更新 ffmpeg 过滤器

...stream【发布时间】:2021-09-1708:25:04【问题描述】:我正在使用ffmpeg读取rtmp流,添加模糊框等过滤器并创建不同的rtmp流。例如,命令如下所示:ffmpeg-i<rtmp_source_url>-filter_complex"split=2[a][b 查看详情

将 FMS RTMP 直播流转换为 BlackBerry 的 RTSP

】将FMSRTMP直播流转换为BlackBerry的RTSP【英文标题】:ConvertingFMSRTMPLivestreamtoRTSPforBlackBerry【发布时间】:2012-08-1418:56:40【问题描述】:有没有办法将RTMP实时流从FMS4.5转换为BlackBerry应用程序的RTSP?我部署了FMS4.5服务器,希望通过... 查看详情

13rtsp视频服务基于node+ffmpeg转换为flv视频服务(代码片段)

...  rtsp视频服务转换为rtmp服务转换为前端可用的服务 会使用到ffmpeg来实现rtsp服务转换为rtmp服务,nginx-http-flv来实现rtmp服务转换为http-flv服务,因此前端可以直接播放视频 这里使用node作为后台服务,使用ffmpeg基于websocket协议将rt 查看详情

使用ffmpeg能否将rtsp的流转成rtmp流发出来?就如:ffmpeg-irtsp://localhost/live-ccopy-fflvrtm

参考技术Affmpeg-irtsp://localhost:8554/1234-fflvrtmp://127.0.0.1/live/stream可以的,我试过 查看详情

ffmpeg常用推流命令

...流摄像头进行直播1.如果希望将桌面录制或者分享,可以使用命令行如下:ffmpeg-favfoundation-i"1&q 查看详情

ffmpeg命令读取rtmp流如何设置超时时间(代码片段)

子标题:FFmpeg命令录制RTMP流为FLV文件时如何设置超时时间|FFmpeg命令如何解决录制产生阻塞的问题  0x001:前言今天在测试程序时遇到两个问题。Q1:ffmpeg录制RTMP流并保存为FLV文件时,推RTMP流的线程已经结束断掉了,而录制... 查看详情

RTMP 到浏览器

...方法来将RTMP流(来自IP摄像机)转换为我可以在浏览器中使用的内容。理想情况下,该服务器将从我的相机的rtmp://URL读取,重新编码流,然后以我可以在网页上的&lt;video&gt;标记中使用的格式提供流。不过,我的理解是HTML5... 查看详情

如何将 ffmpeg 流中的音频传输到 nginx rtmp 服务器?

...一个nginx服务器设置,带有用于视频流的rtmp插件。我正在使用ffmpeg流式传输到它,然后使用adobeflashplayer在网络浏览器上显示流。我已成功播放视频,但无法获取音频。这是我 查看详情

使用 JAVA 将 HL7 转换为 JSON

】使用JAVA将HL7转换为JSON【英文标题】:HL7toJSONconversionusingJAVA【发布时间】:2019-05-1103:40:21【问题描述】:我们有什么机制可以在JAVA中将HL7消息转换为json格式吗?我正在浏览HAPIFHIR库,但找不到任何此类API。【问题讨论】:【... 查看详情

搭建hls推流环境(代码片段)

...LC播放器启动nginx服务器,配置nginx以支持rtmp配置FFmpeg使用ffmpeg将视频文件转换成rtmp流格式输出使用VLC播放器进行拉流测试具体操作流程如下:1、cmd启动nginx服务器:nginx.exe-cconf\\nginx-win-rtmp.conf2、新开一个cmd(不... 查看详情

将 RTMP 转换为 MP4 的最佳方法

...RTMP转换为一些音频文件(例如mp4)并将其发送给用户并使用HTML5播放。你有更好的主意来做这项工作吗?我在服务器上有PHP5,但我不知道如何在HTML5兼容的音频中转换 查看详情

rtsp实时流通过rtmp推送到服务端

...了这个功能写在这里,和大家分享下。首先我想说的是:ffmpeg可以实现这个功能。ffmpeg支持rtsp协议,也支持rtmp。在这个案例中rtsp是输入,rtmp是输出,ffmpeg实现了转码的功能。下面可出一个整体思路流程图。    & 查看详情

使用 FFMpeg 将 FLV 流式传输到 RTMP,使用 H264 编解码器和 C++ API 到 flv.js

】使用FFMpeg将FLV流式传输到RTMP,使用H264编解码器和C++API到flv.js【英文标题】:streamingFLVtoRTMPwithFFMpegusingH264codecandC++APItoflv.js【发布时间】:2018-07-1216:24:17【问题描述】:我想使用OpenCV使用H264编解码器从网络摄像头流式传输实时... 查看详情

视频转换rtsp流转rtmp流播放(未完)

前言:之前的博客找的rtsp流地址,和按照red5都是为写这篇文章铺垫。 这篇文章,选择ffmepg命令把rtsp流转为rtmp,接着vlc插件测试下生成的rtmp流。最后已经配置好了red5服务器,并测试成功看到画面之后;下面就来利用red5实时... 查看详情

使用 FFMPEG 剪切部分字幕文件

】使用FFMPEG剪切部分字幕文件【英文标题】:CutpartsofsubtitlefileusingFFMPEG【发布时间】:2014-02-0413:58:54【问题描述】:我想编辑带有音频视频字幕流的输入mp4文件,我可以通过以下方式成功剪切视频和音频流:1-将每个部分转换为... 查看详情