libav(ffmpeg)简明教程(2)
距离上一次教程又过去了将近一个多月,相信大家已经都将我上节课所说的东西所完全消化掉了。
这节课就来点轻松的,说说libav的命令使用吧。
注:遇到不懂的或者本文没有提到的可以用例如命令后加 --help full或者man 命令(man avconv)查看全部参数细节,或者进libav.org网站查:https://libav.org/avconv.html
杀手级命令:avconv:
个人认为他最强大的功能就是对各种格式的支持范围非常广,你拥有了它可以完全丢弃例如在Windows上格式工厂之类的软件,它支持你所有市面上流行的媒体格式文件。
最简单的转换格式的命令示例(将src.avi文件按照原视频比例转换成MP4格式放置到dst.mp4): avconv -i src.avi dst.mp4
如果你是想将视频中的每一帧输出成图片序列保存到磁盘上,请输入:avconv -i src.avi dst_%d.jpg
反过来如果你有按照一定规律命名好的图片序列(类似像src_0.jpg,src_1.jpg,src_2.jpg...),也可以反过来输入导出成最终视频:avconv -i src_%d.jpg dst_mp4
除了文件中的视频、图片序列可以用来作参数以外,还可以将rtsp网络视频作为参数:avconv -i rtsp://hostname[:port]/path dst.mp4
如果你想要将视频缩小一下尺寸示例(将视频转换成dst.mp4并且重置分辨率为:320x240),长宽像素数字必须同时为偶数并且大于100,,还可以填入720p、1080p之类的字符:avconv -i src.avi -s 320x240 dst.mp4
如果你想只要将原视频的前6秒转换出来的话,请输入:avconv -ss 00:00:00 -t 00:00:06 -i src.avi dst.mp4
想将原视频bite rate修改,请使用-r参数:avconv -i src.avi -r 2397600 dst.mp4
同理原视频中的音频同样也有sample rate修改的需求,请使用avconv -i src.avi -f -sample_rates 128000 dst.mp4
如果想将pixel formats重新定义的话,请使用-pix_fmt参数(注:必须是这个文件格式所支持的pix_fmts):avconv -i src.avi -pix_fmts AV_PIX_FMT_YUV420P dst.mp4
同理音频也需要sample_fmts重新设置的话,使用-sample_fmts参数,同样是输出文件格式所支持的format才能成功:avconv -i src.avi -sample_fmts AV_SAMPLE_FMT_FLTP dst.mp4
细心的人会发现上面的命令中修改sample rate中多包含了-f,其实-f是filter的意思,它是libav另外一个非常强大的工具,当你每次打开libav的源文件或者官网介绍中会发现有很多的和filter相关新奇的部分。
下面以一个简单的例子介绍一下它:
avconv -i src.avi -f clock dst.mp4 顺时针旋转视频90度就这么简单! more detail
libav还实现了并支持SAP(Session Announcement Protocol),
你一句命令就可以:avconv -re i src.avi sap sap://0.0.0.0, 播放就用avplay命令直接带 sap://localhost即可播放,或者用VLC player直接打开网络地址播放,强大吧?
libav还引用了另外一个强大的库——frei0r,它本身是用C写的一个视频特效处理的库,使用它只需给定一些简单少许的参数即可实现强大的效果,虽然我还没真正测试过,有兴趣的朋友可以玩玩看回复在下面。
另外它作为一个成熟的视频库,怎么能缺少对rtsp协议的支持呢?
建立rtsp服务器,使用命令avserver -f avserver.conf
其中avserver.conf 是一个文本文件,需要实现写好内容像这样:
Port
RTSPPort
BindAddress 0.0.0.0
MaxClients
MaxBandwidth
CustomLog connlogs.txt <Stream test.html>
File "fsbk.flv"
Format flv
</Stream> <Stream status.html>
Format status
</Stream>
是不是相当简单,如果你发现端口被占用了,输入sudo fuser -k 8848/tcp 和 sudo fuser -k 8840/tcp 杀掉相应的进程。然后执行avplay http://localhost:8848/test.html 视频就通过网络传过来了对吧,就这么简单是吧~
libav(ffmpeg)简明教程(2)的更多相关文章
- libav(ffmpeg)简明教程(1)
突然发现又有好久没有写技术blog了,主要原因是最近时间都用来研究libav去了(因为api极类似ffmpeg,虽然出自同一份代码的另外一个分支,因项目选用libav,故下文均用libav代替),其实 ...
- 2013 duilib入门简明教程 -- 第一个程序 Hello World(3)
小伙伴们有点迫不及待了么,来看一看Hello World吧: 新建一个空的win32项目,新建一个main.cpp文件,将以下代码复制进去: #include <windows.h> #i ...
- 2013 duilib入门简明教程 -- 部分bug (11)
一.WindowImplBase的bug 在第8个教程[2013 duilib入门简明教程 -- 完整的自绘标题栏(8)]中,可以发现窗口最大化之后有两个问题, 1.最大化按钮的样式 ...
- 2013 duilib入门简明教程 -- 部分bug 2 (14)
上一个教程中提到了ActiveX的Bug,即如果主窗口直接用变量生成,则关闭窗口时会产生崩溃 如果用new的方式生成,则不会崩溃,所以给出一个临时的快速解决方案,即主窗口 ...
- 2013 duilib入门简明教程 -- 自绘控件 (15)
在[2013 duilib入门简明教程 -- 复杂控件介绍 (13)]中虽然介绍了界面设计器上的所有控件,但是还有一些控件并没有被放到界面设计器上,还有一些常用控件duilib并没有提供(比如 ...
- 2013 duilib入门简明教程 -- 事件处理和消息响应 (17)
界面的显示方面就都讲完啦,下面来介绍下控件的响应. 前面的教程只讲了按钮和Tab的响应,即在Notify函数里处理.其实duilib还提供了另外一种响应的方法,即消息映射DUI_BEG ...
- 2013 duilib入门简明教程 -- FAQ (19)
虽然前面的教程几乎把所有的知识点都罗列了,但是有很多问题经常在群里出现,所以这里再次整理一下. 需要注意的是,在下面的问题中,除了加上XML属性外,主窗口必须继承自WindowImpl ...
- Mac安装Windows 10的简明教程
每次在Mac上安装Windows都是一件非常痛苦的事情,曾经为了装Win8把整台Mac的硬盘数据都弄丢了,最后通过龟速系统恢复模式恢复了MacOSX(50M电信光纤下载了3天才把系统下载完),相信和我 ...
- Docker简明教程
Docker简明教程 [编者的话]使用Docker来写代码更高效并能有效提升自己的技能.Docker能打包你的开发环境,消除包的依赖冲突,并通过集装箱式的应用来减少开发时间和学习时间. Docker作 ...
随机推荐
- C#的常量和变量以及其作用域和命名规范
1.常量:在编译时其值能够确定,并且程序运行过程中值不发生变化的量. 通俗来说,就是定义一个不能改变值的量.既然不能变动值,那就必须在定义的时候初始化. 语法: const 类型名 常量名=常量表达式 ...
- 网络请求返回HTTP状态码(404,400,500)
HTTP状态码(HTTP Status Code) 一些常见的状态码为: - 服务器成功返回网页 - 请求的网页不存在 - 服务不可用 所有状态解释: 1xx(临时响应) 表示临时响应并需要请求者继续 ...
- mysql 索引总结
一.MYSQL索引类型(共三种) 1).normal 正常 应用场景:普通的index 2).unique 唯一性的 应用场景:比如身份证的 3).full text 全文索引 应用场景:较长文字 二 ...
- 猜拳游戏三局两胜------java实现代码
package com.javasm.exerices02; import java.util.ArrayList; import java.util.List; import java.util.R ...
- 洛谷P3043 [USACO12JAN]牛联盟Bovine Alliance
P3043 [USACO12JAN]牛联盟Bovine Alliance 题目描述 Bessie and her bovine pals from nearby farms have finally ...
- django进阶之缓存
Model 到目前为止,当我们的程序涉及到数据库相关操作时,我们一般都会这么搞: 创建数据库,设计表结构和字段 使用 MySQLdb 来连接数据库,并编写数据访问层代码 业务逻辑层去调用数据访问层执行 ...
- Unity---UNet学习(1)----基本方法介绍
目录 1.Network Manager 2.Network Manager HUD 3.Network Identity 4.Network Transform 5.特性 1.Network Man ...
- JSP-模拟银行卡账号密码登录页面跳转
<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...
- Docker从入门到实战(三)
Docker从入门到实战(三) 一:安装Docker 1. linux系统脚本安装 Docker基于linux容器技术,面向服务器端,Docker只能安装运行在64位计算机上(社区有对32位的支持), ...
- 【ACM】拦截导弹 - 0-1背包问题
拦截导弹 时间限制:3000 ms | 内存限制:65535 KB 难度:3 描述 某国为了防御敌国的导弹袭击,发展中一种导弹拦截系统.但是这种导弹拦截系统有一个缺陷:虽然它的第一发炮弹能够到 ...