nginx实现rtmp支持h.265吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了nginx实现rtmp支持h.265吗相关的知识,希望对你有一定的参考价值。
参考技术A 1.用-v挂载主机数据卷到容器内docker run -v /path/to/hostdir:/mnt $container
在容器内拷贝
cp /mnt/sourcefile /path/to/destfile
2.直接在主机上拷贝到容器物理存储系统
A. 获取容器名称或者id :
$ docker ps
B. 获取整个容器的id
$ docker inspect -f '.Id' 步骤A获取的名称或者id
C. 在主机上拷贝文件:
$ sudo cp path-file-host /var/lib/docker/aufs/mnt/FULL_CONTAINER_ID/PATH-NEW-FILE
或者
$ sudo cp path-file-host /var/lib/docker/devicemapper/mnt/123abc<<id>>/rootfs/root
例子:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
d8e703d7e303 solidleon/ssh:latest /usr/sbin/sshd -D cranky_pare
$ docker inspect -f '.Id' cranky_pare
or
$ docker inspect -f '.Id' d8e703d7e303
d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5
$ sudo cp file.txt /var/lib/docker/aufs/mnt/**d8e703d7e3039a6df6d01bd7fb58d1882e592a85059eb16c4b83cf91847f88e5
3.用输入输出符
docker run -i Ubuntu /bin/bash -c 'cat > /path/to/container/file' < /path/to/host/file/
或者
docker exec -it <container_id> bash -c 'cat > /path/to/container/file' < /path/to/host/file/
Rtsp to Rtmp流媒体转发
RTMP是一种设计用来进行实时数据通信的网络协议,主要用来在Flash/AIR平台和支持RTMP协议的流媒体/交互服务器之间进行音视频和数据通信。支持该协议的软件包括Adobe Media Server、Ultrant Media Server、red5、nginx。
HTTP Live Streaming(HLS)是苹果公司(Apple Inc.)实现的基于HTTP的流媒体传输协议,可实现流媒体的直播和点播,相对于常见的流媒体直播协议,例如RTMP协议、RTSP协议、MMS协议 等,HLS直播最大的不同在于,直播客户端获取到的,并不是一个完整的数据流。HLS协议在服务器端将直播数据流存储为连续的、很短时长的媒体文件 (MPEG-TS格式),而客户端则不断的下载并播放这些小文件,因为服务器端总是会将最新的直播数据生成新的小文件,这样客户端只要不停的按顺序播放从服务器获取到的文件,就实现了直播。由此可见,基本上可以认为,HLS是以点播的技术方式来实现直播。由于数据通过HTTP协议传输,所以完全不用考虑防火墙或者代理的问题,而且分段文件的时长很短,客户端可以很快的选择和切换码率,以适应不同带宽条件下的播放。不过HLS的这种技术特点,决定了它的延迟 一般总是会高于普通的流媒体直播协议。
nginx配合ffmpeg做流媒体服务器的原理是: nginx通过rtmp模块提供rtmp服务, ffmpeg推送一个rtmp流到nginx, 然后客户端通过访问nginx来收看实时视频流. HLS也是差不多的原理,只是最终客户端是通过HTTP协议来访问的,但是ffmpeg推送流仍然是rtmp的。
1、推送视频文件到rtmp上
ffmpeg -re -i "D:\videos\test1.mp4"-vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv-s 1280x720 -q 10 rtmp://127.0.0.1:1935/live/test1
2、推送到视频文件到hls上
ffmpeg -re -i "D:\videos\test1.mp4"-vcodec libx264 -vprofile baseline -acodec aac -ar 44100 -strict -2 -ac 1 -f flv-s 1280x720 -q 10 rtmp://127.0.0.1:1935/hls/test2
3、执行ffmpeg命令进行rtsp协议转成rtmp:
ffmpeg -i"rtsp://admin:[email protected]/h264/ch1/main/av_stream" -f flv -r25 -s 640x480 -an "rtmp://127.0.0.1:1935/live/test3"
-i:后面是我所需要的摄像头协议
-f flv:后面是我要转到nginx的rtmp服务器上
-s:视频解析度:(分配率)也就是能调视屏的清晰度,如果在本机上测试建议640*480就好,改变视屏流的解析式cpu会消耗很大
(rtmp服务地址:rtmp://127.0.0.1:1935/myapp/test2)
127.0.0.1:nginx启动的机器ip
1935:端口号(之前在nginx.conf里配置的)
live:是application 后面的名称
test3:可以随便起,记得到时候访问rtmp时要一致
本文出自 “fire phoenix” 博客,转载请与作者联系!
以上是关于nginx实现rtmp支持h.265吗的主要内容,如果未能解决你的问题,请参考以下文章
H.264转码H.265出现崩溃并报错“missing picture”该如何解决?
智勇电子最新H.265支持SRT协议编码器ZY-EDHV201发布
如何对H.265视频播放器EasyPlayer.js实现音频开启与关闭控制?附代码
H5网页播放器EasyPlayer如何实现iOS端H.265视频全屏播放效果?