使用ffmpeg命令实现本地摄像头的远程访问——非编程纯命令

1 ffserver命令

fserver是一个音频和视频的流式服务器。它通过在启动时读入的配置文件完成配置,不指定时用默认的/etc/ffserver.conf文件。ffserver接受一些或者FFM流作为输入然后通过RTP/RTSP/HTTP推流。ffserver监听在配置文件中指定的端口,在配置文件中输入的流叫做feed,每一个都是用<Feed>的节来指定的。每一个feed可以有不同格式的的不同输出流,每一个在配置文件中用<Stream>节来指定。ffserver是通过推送用ffmpeg编码的流来工作的。ffserver担当一个HTTPserver的角色,接收来自ffmpeg的获得发布流的POST请求,并且用流媒体内容来服务HTTP/RTSP客户端的GET请求。要搞清楚什么是feed,什么是stream。

1.1 Feed是什么

feed是由ffmpeg创建的FFM流,并且发送到ffserver正在监听的端口上。每一个feed是通过一个唯一的名字来识别的,这个名字关联到发布在ffserver上的资源的名字,并且是通过配置文件里面的<Feed>节来完成配置的。feed发布的URL是以下面的形式给出的:

http://<ffserver_ip_address>:<http_port>/<feed_name>

其中,ffserver_ip_address是ffserver安装的主机的IP地址,http_port是HTTP服务器的端口号,feed_name是相关的定义在配置文件中的feed的名字。每一个feed跟一个磁盘上的文件相关联,这个文件用于当新内容被实时地加入进流的时候,这个文件是用于允许发送预先录制的数据尽可能快地到一个播放器。

1.2 stream是什么

一个实时流或者一个流是一个由ffserver发布的资源并且通过HTTP协议使客户可以访问。一个流可以连接到一个feed上,或者一个文件上。当连接到一个feed上的时候,发布的流是推的来自相关联的通过运行的ffmpeg的实例所形成的feed上的。在第二种情况中,流是从pre-recorded文件里读来的。每一个流有一个唯一的名字,关联到ffserver上的资源的名字,并且是通过配置文件中的复杂的stream节来配置的。访问流的HTTP地址形式:

http://<ffserver_ip_address>:<http_port>/<stream_name>[<options>]

访问流的RTSP地址形式如下:

http://<ffserver_ip_address>:<http_port>/<stream_name>[<options>]

其中,stream_name是配置文件中定义的流的名字,options是在URL后面指定的选项的列表,将影响流如何通过ffserver提供的方式。

2 ffmpeg命令

ffmpeg是一个可以从现场的音视频源中采集的非常快速的视频和音频转换器。可以在任意的采样率之间转换,并且可以在现场resize视频。ffmpeg用-i参数从任意数量的输入files中读入,并写入任意数量的输出文件(通过普通的输出文件名指定)。从输入中选择哪个流到输出流是自动完成或者用-map选项指定。为了引用选项中的输入文件,必须用索引号。类似地,文件里的流也是通过索引号引用的。如2:3引用第3个输入文件中的第4个流。一般的规则是选项是用在下一个指定的文件上的,因此,顺序是很重要的。每出现一个将运用到下一个输入或者输出文件上。这个规则的例外是最开始就指定的全局选项。

不要混淆输入和输出文件,首先指定完所有的输入文件,然后才指定输出文件。也不要混淆属于不同的文件的选项,所有选项仅仅运用在下一个输入或输出文件上,并且在不同的文件之间会重置。

下面来3个实例:

a 设置输出文件的视频码率为64kbps

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

b 强制输出文件的帧率为24fps:

ffmpeg -i input.avi -r 24 output.avi

c 强制输入文件的帧率为1fps并且输出文件的帧率为24fps

ffmpeg -r 1 -i input.avi -r 24 output.avi

原始输入文件需要格式化选项。

ffmpeg调用libavformat(包含解封装)读入输入文件并从中取得包含了编码数据的包。当有多个输入文件,ffmpeg通过跟踪最低的时间戳或者跟踪任何激活的输入流来保持同步。编码的包然后传递给解码器(除非指定是拷贝流,那么就不经过解码以及后面的编码)。解码器产生可以被filtering进一步处理的非压缩帧,在filtering之后,帧传给encoder(编码他们并且输出编码包),最后,传给封装器muxer,把编码包写给输出文件。在编码之前ffmpeg可以用libavfilter库中的滤波器来处理原始音视频帧。滤波器链产生了滤波器图,ffmpeg有两种类型的滤波器图:简单的和复杂的。

时间: 2024-10-22 00:50:15

使用ffmpeg命令实现本地摄像头的远程访问——非编程纯命令的相关文章

【翻译自mos文章】使用asmcmd命令在本地和远程 asm 实例之间 拷贝asm file的方法

使用asmcmd命令在本地和远程 asm 实例之间 拷贝asm file的方法 参考原文: How to Copy asm files between remote ASM instances using ASMCMD command (Doc ID 785580.1) 适用于: Oracle Database - Enterprise Edition - Version 11.1.0.6 to 11.2.0.2 [Release 11.1 to 11.2] Information in thi

利用html5调用本地摄像头拍照上传图片[转]

利用html5调用本地摄像头拍照上传图片 html5概念啥的就不废话了,不知道的 百度, 谷歌一堆..今天学了学html5中的Canvas结合新增的<video>标签来获取本地摄像头,在html5之前,要在浏览器获取本地摄像头只有通过插件(ActiveX,但是这种只有IE支持)或者是flash来获取(或许你没学过flash那就很坑爹了),在之后微软的silvertlight中也可以获取,但这些都比较麻烦,在html5的世界里,要获取本地摄像头,只要配合js就可以轻松获取.. 目前支持html5

iOS:使用Github托管自己本地的项目代码方式三(命令行方式: Terminal Line)

使用终端命令行将本地项目代码上传到github上进行托管 对于IOS开发者来说,Github的使用是必须要掌握的一种技能,而把项目由本地上传到Github有多种方式 1.开发工具Xcode配置Git,由Xcode-->Source Control-->Commit: 2.使用Github客户端上传代码: 3.使用终端命令行上传到Github.其中我的Github地址有我根据实际项目制作的一个配置说明书https://github.com/FISHBALL1/Xcode-git ,现在来介绍第三

H5混合开发二维码扫描以及调用本地摄像头

今天主管给了我个需求,说要用混合开发,用H5调用本地摄像头进行扫描二维码,我之前有做过原生安卓的二维码扫一扫,主要是通过调用zxing插件进行操作的,其中还弄了个闪光灯.但是纯H5的没接触过,心里没底,于是晚上回家开始网上各处找方案.以下是我对于H5扫描二维码以及调用本地摄像头的理解以及代码. 科普网址: H5如何生成安卓组件对象 H5调用安卓本地摄像头api 在线二维码图片生成器 二维码扫描:(使用的是mui的框架,下面是html代码) <!doctype html> <html>

调用本地摄像头拍照(H5和画布)

关于H5 和 画布 调用本地摄像头拍照功能的实现 1.代码的实现(html部分) <input type="button" title="开启摄像头" value="开启摄像头" onclick="getMedia();" /><br /> <video height="120px" autoplay="autoplay"></video>

使用终端命令行将本地项目上传到Github

使用终端命令行将本地项目上传到Github 转自https://blog.csdn.net/fishball1/article/details/52020305 对于IOS开发者来说,Github的使用是必须要掌握的一种技能,而把项目由本地上传到Github有多种方式,1开发工具Xcode配置Git,由Xcode-->Source Control-->Commit:2使用Github客户端上传代码:3使用终端命令行上传到Github.其中我的Github地址有我根据实际项目制作的一个配置说明书

使用git命令将本地项目推送到远程仓库

将本地项目推送到远程仓库 这里先放一张图, 有助于理解git命令 1. 在GitHub上新建一个仓库 注意不要勾选自动生成README.md文件, 否则会产生某些问题, README.md文件到时可以在本地项目文件夹内创新好, 再同步到远程仓库 2. 创建一个存储项目的文件夹, 并进入文件夹下 3.创建本地仓库 git init 4. 创建README.md 5. 同步远程仓库git remote add origin 'HTTPS' 备注: 'HTTPS'替换为仓库链接 6. 添加到Index

在chrome中,调用本地摄像头

原文地址:https://blog.csdn.net/journey191/article/details/40744015 <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>HTML5 GetUserMedia Demo</title> <meta name="viewport" content=&qu

Ubuntu14.04 使用本地摄像头跑ORB SLAM2

前面的准备: Ubuntu14.04安装 ROS 安装步骤和问题总结 Ubuntu14.04+ROS 启动本地摄像头 STEP1:第一个终端 roscore STEP2:第二个终端运行usb_cam roslaunch usb_cam usb_cam-test.launch STEP3: rosrun ORB_SLAM2 Mono /home/zc/Desktop/ORBvoc.txt  /home/zc/Desktop/Asus.yaml 我把 ./Vocabulary/ORBvoc.txt