阿里巴巴网站推广方法,上海网站高端定制,网站在空间费用,wordpress 用户表最近在测试ffmpeg推流rtmp视频#xff0c;单独安装ffmpeg是无法完成推流的#xff0c;需要一个流媒体服务器#xff0c;常用nginx#xff0c;可以直接在ubuntu虚拟机里面测试一下。 测试过程不涉及编译ffmpeg和nginx#xff0c;仅使用基本功能#xff1a;
1 安装ffmpeg …最近在测试ffmpeg推流rtmp视频单独安装ffmpeg是无法完成推流的需要一个流媒体服务器常用nginx可以直接在ubuntu虚拟机里面测试一下。 测试过程不涉及编译ffmpeg和nginx仅使用基本功能
1 安装ffmpeg
sudo apt install ffmpeg
2 安装nginx
sudo apt install nginx
3 安装nginx的rtmp模块
sudo apt-get install libnginx-mod-rtmpsudo service nginx restart
4 配置nginx vim /etc/nginx/nginx.conf 增加如下内容 rtmp {server {listen 1935;chunk_size 4096;application live {live on;record off;}}
} 这个内容的意思是监听1935端口rtmp的app名字为live本地的一个流媒体服务器就搭好了。
5 经过上面的步骤各项准备工作都做好了现在我想推流ubuntu本地的一个MP4文件到刚才的流媒体服务器其实理论上只要是能访问上面的流媒体服务器的设备都可以推流到服务器不一定是本地我也可以在win10上面推进去ubuntu再从win10拉出来且一直循环推送键入如下命令 ffmpeg -stream_loop -1 -re -i /mnt/hgfs/vmware_ubuntu_share/input.mp4 -c copy -f flv -flvflags no_duration_filesize rtmp:192.168.63.128:1935/live/1 这个命令的意思是
-stream_loop -1 循环推送
-re 使用视频原来的帧率
-i /mnt/hgfs/vmware_ubuntu_share/input.mp4 要推送的mp4文件路径
-flvflags no_duration_filesize 禁止no_duration_filesize错误
192.168.63.128 ip地址改为自己的ubuntu地址即流媒体服务器地址 推送成功如图。
6 在win10桌面打开ffplay从流媒体服务器拉流看看 ffplay rtmp:192.168.63.128:1935/live/1 拉流也是成功的。
7 推送摄像头的画面到rtmp
命令
ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -tune zerolatency -acodec aac -f flv rtmp://192.168.63.128:1935/live/1总体命令跟前面推送本地mp4差不多只不过这次制定了输入为/dev/video0和输入的格式。
同样从ffplay拉流
ffplay rtmp://192.168.63.128:1935/live/1 简单调试了一下画面摄像头分辨率太高导致码率很大而且帧率很低
ffmpeg -re -f video4linux2 -i /dev/video0 -vcodec libx264 -preset ultrafast -tune zerolatency -acodec aac -crf 40 -vf scale1280:720,fpsfps60 -f flv rtmp://192.168.63.128:1935/live/1-crf 40 可以显著降低画面质量降低码率
-vf scale1280:720,fpsfps60 降低分辨率到720p提高帧率到60
最后码率可以降低到200kbps左右效果还可以当然画面比较糊。 引用
ubuntu20.04搭建Nginxrtmp服务器 - 晚安z - 博客园 (cnblogs.com)
unknown directive rtmp in /etc/nginx/nginx.conf:76 - Stack Overflow
使用ffmpeg循环推流(循环读取视频文件)推送RTMP服务器的方法_windows ffmpeg循环推流-CSDN博客
ffmpeg推流报错Failed to update header with correct duration.-CSDN博客