环境vmware14    Ubuntu14

1)搭建推流服务器Nginx-rtmp(主要参考:https://www.cnblogs.com/cocoajin/p/4353767.html)

下载源码


mkdir /home/ffmpeg
cd /home/ffmpeg
wget http://nginx.org/download/nginx-1.7.5.tar.gz
wget https://github.com/arut/nginx-rtmp-module/archive/master.zip

解压两个源码包

cd nginx-1.7.5
./configure --with-http_ssl_module --add-module=../nginx-rtmp-module-master
make
make install
wget https://raw.github.com/JasonGiedymin/nginx-init-ubuntu/master/nginx -O /etc/init.d/nginx
chmod +x /etc/init.d/nginx
update-rc.d nginx defaults

推流:ffmpeg -re -i /home/ffmpe

配置 nginx-rtmp 服务器

打开 /usr/local/nginx/conf/nginx.conf

rtmp {server {listen 1935;chunk_size 4096;application live {live on;record off;exec ffmpeg -i rtmp://localhost/live/$name -threads 1 -c:v libx264 -profile:v baseline -b:v 350K -s 640x360 -f flv -c:a aac -ac 1 -strict -2 -b:a 56k rtmp://localhost/live360p/$name;}application live360p {live on;record off;}}
}

到这里服务器安装成功


2)安装ffmpeg

下载源码

wget http://ffmpeg.org/releases/ffmpeg-3.4.4.tar.bz2

关于这个的安装教程很多暂且略过


安装VLC media player


在虚拟机准备一个MP4文件然后进行推流

推流命令:ffmpeg -re -i /home/ffmpeg/test1.mp4  -vcodec copy -acodec copy -f flv "rtmp://127.0.0.1:1935/live/test1"


后面尝试外接摄像头进行推流,发现ffmpeg一些功能还未编译进去,在虚拟机启用v4l2的时候报错误

重新配置编译

./configure --prefix=/usr/local/ffmpeg --enable-gpl --enable-shared --enable-nonfree  --enable-libx264   --enable-libxcb --enable-libv4l2

使能libx264 libv4l2等功能,

在执行上面这个配置命令可能会报not found x264 v4l2等错误

(具体可参考https://blog.csdn.net/fgf00/article/details/78203399?locationNum=5&fps=1)

apt-get install libx264-dev

apt-get install libv4l-dev

即可解决

make

make install

到安装目录下执行推流命令

./ffmpeg -f video4linux2 -s  640x480 -i /dev/video0  -f flv rtmp://127.0.0.1:1935/live/live (通过拉流发现画面非常卡顿,应该是参数配置问题)


在执行的时候可能会报未找到某一个库

ffmpeg: error while loading shared libraries: libavdevice.so.57: cannot open shared object file:

为 Ffmpeg 加入环境变量
vi /etc/profile
加入以下内容:

export PATH="/usr/local/ffmpeg/bin:$PATH"

然后保存并运行source /etc/profile


我又陆续增加如下几个参数,感觉效果不大,后面再研究这些参数含义

./ffmpeg -f video4linux2 -r 12 -s  640x480 -i /dev/video0  -f flv rtmp://127.0.0.1:1935/live/live
 ./ffmpeg -f video4linux2  -r 12 -s 640x480 -i /dev/video0 -vcodec libx264 -f flv rtmp://127.0.0.1:1935/live/live

(ffmpeg -f video4linux2 -qscale 10 -r 12 -s 640x480 -i /dev/video0 -f alsa -i hw:1 -ab 16 -ar 22050 -ac 1 -f mp3 -f flv rtmp://127.0.0.1/rtmpsvr/rtmp1)这个命令是在 http://www.cnblogs.com/lidabo/p/7099546.html  这个博客找到的,应该是可以实现的,可能缺少某些功能未编译进去


打开vlc(可以下载windows也可以在虚拟机下载vlc)

输入地址进行拉流,如果在windwos就使用虚拟机ip地址

拉流:rtmp://127.0.0.1:1935/live/test1

附上常用命令

ffmpeg常用命令
-f 强迫采用格式fmt
-i filename 输入文件
-s size 设置帧大小 默认是160x128
-r 设置帧频,默认25  (待验证,确认非标准桢率会导致音画不同步,所以只能设定为15或者29.97)
-qscale:v n(q:v n) n表示视频质量级别1-31(待验证值越小,质量越好)
-ab bitrate设置音频码率
-ar freq 设置音频采样率
-ac channels设置通道,默认为1
-vd device 设置视频捕获设备 eg:/dev/video0
-av device 设置音频设备 eg:/dev/dsp
-vcodec

linux FFMPEG 摄像头采集数据推流相关推荐

  1. ffmpeg实现摄像头拉流_利用ffmpeg一步一步编程实现摄像头采集编码推流直播系统...

    了解过ffmpeg的人都知道,利用ffmpeg命令即可实现将电脑中摄像头的画面发布出去,例如发布为UDP,RTP,RTMP等,甚至可以发布为HLS,将m3u8文件和视频ts片段保存至Web服务器,普通 ...

  2. linux 从摄像头采集一帧 jpg,使用FFmpeg捕获一帧摄像头图像

    最近在研究FFmpeg,比较惊讶的是网上一大堆资料都是在说如何从已有的视频中截取一帧图像,却很少说到如何直接从摄像头中捕获一帧图像,其实我一直有个疑问,就是在Linux下,大家是用什么库来采集摄像头的 ...

  3. linux 从摄像头采集一帧 jpg,基于Video4Linux 的USB 摄像头图像采集实现.pdf

    基于 Video4Linux 的 USB 摄像头图像采集实现 戴小鼠 daily3 1 基于基于 Video4Linux 的的 USB 摄像头图像采集实现摄像头图像采集实现 Write by dail ...

  4. Linux QT摄像头采集图像

    Linux下使用各种设备是一件令人兴奋的事情. 在Unix的世界里,用户与硬件打交待总是简单的.最近笔者在Linux下搞了摄像头的开发,有一点感想发于此处. Linux中操作一个设备一般都是打开(op ...

  5. 人脸识别摄像头采集数据训练

    /* 交互式对话框:请选择要执行的动作1.人脸采集:打开摄像头,采集照片,保存训练模型2.人脸识别:<1>打开摄像头,采集照片,预识别:<2>输入图像的路径,图像识别输出结果: ...

  6. FFMPEG 摄像头 命令行参数 录像 直播 rtmp

    解决FFMPEG采集音视频时不同步的问题: 添加参数  -copyinkf 例如: ffmpeg.exe  -copyinkf -f dshow -i video="USB2.0 UVC V ...

  7. fedora 9下驱动摄像头采集图像手记

    最近一个月,在做视屏图像采集方面的项目.我安装了的是fedora 9.在fedora 9下让摄像头采集数据可谓是费尽了我半个月的时间.看似简单的问题,不知道我为什么做了这么长时间.    首先,摄像头 ...

  8. influxdb 插入数据_脚本采集数据插入到influxdb数据库里

    #!/bin/bash # 定时收集java服务metrics # curl http://10.7.16.42:6301/metrics demo # 参数: post_influxdb_write ...

  9. ffmpeg 采集摄像头yuv数据

    本文讲述在linux下,如何使用ffmpeg采集摄像头yuv数据,并保存为文件. 分为4个部分进行讲解 需要的软硬件环境 使用ffmpeg命令采集yuv数据. 使用ffmpeg代码采集yuv数据. 查 ...

最新文章

  1. easyUI datagrid 多行多列数据渲染异常缓慢原因以及解决方法
  2. 伯明翰大学计算机科学网络安全硕士,2020年伯明翰大学网络安全硕士专业硕士申请条件-学费-世界排名...
  3. 线程与线程池,实例比较。
  4. 一张图片解决 Python 所有内置异常
  5. python 大众点评模拟登陆_python项目实战:模拟登陆163邮箱,简单到爆
  6. lisp中getkword输入默认_2分钟学会在Word中制作田字格 米字格 书法练字再也不用买本子了...
  7. 基于HTML5的网络拓扑图 - 设备状态面板
  8. linux进程管理简析
  9. Mysql查看执行计划-explain
  10. java连接数据库驱动代码综合共享
  11. Unity WIndows语音识别(一)关键字识别
  12. 极佳mysql数据库碎片恢复工具,极佳SQL数据库日志恢复工具
  13. 软件测试的支付流程图,软件测试流程图案例.doc
  14. 硬件工程师学习英语必备
  15. 自我怀疑的开发者:你够好吗?
  16. 深度学习、机器学习交流群
  17. Python制作黑客工具,发现了同学U盘里见不得人的秘密
  18. 精致简约的高速下载神器 - Motrix~~高速下载百度网盘资源!
  19. Python实现抓取CSDN热门文章列表
  20. 如何通过神经网络实现XNOR函数?

热门文章

  1. 搜狗输入法安装之后无法使用
  2. libcurl入门之相关接口函数curl_easy_cleanup
  3. 解决Chrome插件安装时.cxr 程序包无效:CRX_HEADER_INVALID
  4. Linux下设置固定IP地址
  5. C++ 进程退出后,子线程还会存在吗?
  6. java table 内容居中,JavaFX TableView-将表列的内容居中
  7. CSDN编程竞赛-第六期(上)
  8. win10家庭版---卸载msmpeng.exe
  9. Spring Cloud Alibaba微服务架构实战教程—06让你躺平的敏捷开发
  10. 【STL四】序列容器——vector容器