raspberry安装ffmpeg以及扩展了解

news2024/11/26 3:41:24

文章目录

    • ffmpeg
      • 简介
      • 使用ffmpeg
    • ffplay
      • 播放控制
      • 命令播放
      • 滤镜处理
      • 参数选项
    • ffprobe

ffmpeg

sudo apt-get install ffmpeg

简介

FFmpeg的名称来自MPEG视频编码标准,前面的“FF”代表“Fast Forward”,FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。可以轻易地实现多种视频格式之间的相互转换。

FFmpeg is the leading multimedia framework, able to decode, encode, transcode, mux, demux, stream, filter and play pretty much anything that humans and machines have created. It supports the most obscure ancient formats up to the cutting edge. No matter if they were designed by some standards committee, the community or a corporation. It is also highly portable: FFmpeg compiles, runs, and passes our testing infrastructure FATE across Linux, Mac OS X, Microsoft Windows, the BSDs, Solaris, etc. under a wide variety of build environments, machine architectures, and configurations.

FFmpeg是领先的多媒体框架,能够解码,编码,转码,mux, demux,流,过滤和播放几乎任何人类和机器创造的东西。它支持很多格式mp4,mp3。它们是由某个标准委员会、社区或公司设计的。具有高度的可移植性:FFmpeg可以在各种构建环境、机器架构和配置下,在Linux、Mac OS X、Microsoft Windows、bsd、Solaris等上编译、运行并通过。

了解参数

1.容器/文件(Conainer/File):即特定格式的多媒体文件,比如mp4、flv、mkv等。

2.媒体流(Stream):表示时间轴上的一段连续数据,如一段声音数据、一段视频数据或一段字幕数据,可以是压缩的,也可以是非压缩的,压缩的数据需要关联特定的编解码器。

3.数据帧/数据包(Frame/Packet):通常,一个媒体流是由大量的数据帧组成的,对于压缩数据,帧对应着编解码器的最小处理单元,分属于不同媒体流的数据帧交错存储于容器之中。

一般情况下:

Frame对应压缩前的数据,Packet对应压缩后的数据。

4.编解码器(Codec):以帧为单位实现压缩数据和原始数据之间的相互转换的

5.复用(mux):把不同的流按照某种容器的规则放入容器,这种行为叫做复用(mux)

6.解复用(mux):把不同的流从某种容器中解析出来,这种行为叫做解复用(demux)

7. 码率和帧率是视频文件的最重要的基本特征,对于他们的特有设置会决定视频质量。如果我们知道码率和时长那么可以很容易计算出输出文件的大小。

8.帧率:帧率也叫帧频率,帧率是视频文件中每一秒的帧数,肉眼想看到连续移动图像至少需要15帧。

9.码率:比特率(也叫码率,数据率)是一个确定整体视频/音频质量的参数,秒为单位处理的位数,码率和视频质量成正比,在视频文件中中比特率用bps来表达。

FFMPEG命令入门到提高

复用
在这里插入图片描述

编解码器
在这里插入图片描述

音视频处理流程

在这里插入图片描述

使用ffmpeg

1.分离视频音频流

ffmpeg -i input_file -vcodec copy -an output_file_video  //分离视频流
ffmpeg -i input_file -acodec copy -vn output_file_audio  //分离音频流
2.视频解复用

ffmpeg –i test.mp4 –vcodec copy –an –f m4v test.264
ffmpeg –i test.avi –vcodec copy –an –f m4v test.264
3.视频转码

ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264              //转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264  //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi            //转码为封装文件
//-bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
4.视频封装

ffmpeg –i video_file –i audio_file –vcodec copy –acodec copy output_file
5.视频剪切

ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg        //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec copy -acodec copy output.avi    //剪切视频
//-r 提取图像的频率,-ss 开始时间,-t 持续时间
6.视频录制

ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec copy out.avi
7.YUV序列播放

ffplay -f rawvideo -video_size 1920x1080 input.yuv
8.YUV序列转AVI
ffmpeg –s w*h –pix_fmt yuv420p –i input.yuv –vcodec mpeg4 output.avi


ffplay

一般用来进行播放控制设置,.

FFplay is a very simple and portable media player using the FFmpeg libraries and the SDL library. It is mostly used as a testbed for the various FFmpeg APIs.

ffplay

播放控制

在这里插入图片描述

命令播放

播放本地文件
    ffplay -window_title “test time” -ss 2 -t 10 -autoexit test.mp4
    ffplay buweishui.mp3

播放网络流
    ffplay -window_title “rtmp stream” rtmp://202.69.69.180:443/webcast/bshdlive-pc

强制解码器
    mpeg4 解码器: ffplay -vcodec mpeg4 test.mp4
    h264 解码器: ffplay -vcodec h264 test.mp4

禁用音频或视频
    禁用音频: ffplay test.mp4 -an
    禁用视频: ffplay test.mp4 -vn

播放 YUV 数据
    ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv

播放 RGB 数据
    ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgb
    ffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb
    
  播放 PCM 数据
    ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm
    -ar set audio sampling rate (in Hz) (from 0 to INT_MAX) (default 0)
    -ac set number of audio channels (from 0 to INT_MAX) (default 0)

滤镜处理

视频旋转
    ffplay -i test.mp4 -vf transpose=1

视频反转
    ffplay test.mp4 -vf hflip
    ffplay test.mp4 -vf vflip

视频旋转和反转
    ffplay test.mp4 -vf hflip,transpose=1

音频变速播放
    ffplay -i test.mp4 -af atempo=2

视频变速播放
    ffplay -i test.mp4 -vf setpts=PTS/2

音视频同时变速
    ffplay -i test.mp4 -vf setpts =PTS/2 -af atempo =2

更多参考

参数选项

选项 说明
-x width 强制显示宽带。
-y height 强制显示高度。
-video_size size
帧尺寸 设置显示帧存储 WxH 格式 )),仅适用于类似
原始 YUV 等没有包含帧大小 WxH 的视频 。
比如
: ffplay pixel_format yuv420p video_size 320x240 framerate 5 yuv420p_320x240.yuv

-pixel_format format 格式设置像素格式。
-fs 以全屏模式启动。
-an 禁用音频(不播放声音)
-vn 禁用视频(不播放视频)
-sn 禁用字幕(不显示字幕)
-ss pos
根据设置的秒进行定位拖动,注意时间单位:比如 ‘55’ 55
seconds, ‘12:03:45’ ,12 hours, 03 minutes and 45 seconds, ‘23.189’ 23.189
second

-t duration 设置播放视频 音频长度,时间单位如 ss 选项
-bytes 按字节进行定位拖动( 0=off 1=on -1=auto )。
-seek_interval interval 自定义左 右键定位拖动间隔(以秒为单位),默认值为 10 秒
-nodisp 关闭图形化显示窗口,视频将不显示
-noborder 无边框窗口
-volume vol 设置起始音量 。音量范围 [0 ~100]
-f fmt 强制使用设置的格式进行解析。比如 f s16le
-window_title title 设置窗口标题(默认为输入文件名)
-loop number 设置播放循环次数
-showmode mode
设置显示模式,可用的模式值: 0 显示视频,
1 显示音频波形, 2 显示音频频谱。缺省为 0 ,如果视频不存在则自动选择 2

-vf filtergraph 设置视频滤镜
-af filtergraph 设置音频滤镜
-stats
打印多个回放统计信息,包括显示流持续时间,编解码器参数,
流中的当前位置,以及音频 视频同步差值。默认情况下处于启用状
态,要显式禁用它则需要指定 nostats 。。

-fast 非标准化规范的多媒体兼容优化。
-genpts 生成 pts 。
-sync type
同步类型 将主时钟设置为 audio type=audio video
type=video )或 external type= ext ),默认是 audio 为主时钟。

-ast audio_stream_specifier 指定音频流索引,比如 ast 3 ,播放流索引为 3 的音频流
-vst video_stream_specifier 指定视频流索引,比如 vst 4 ,播放流索引为 4 的视频流
-sst subtitle_stream_specifier 指定字幕流索引,比如 sst 5 ,播放流索引为 5 的字幕流
-autoexit 视频播放完毕后退出。
-exitonkeydown 键盘按下任何键退出播放
-exitonmousedown 鼠标按下任何键退出播放
-codec:media_specifier codec_name
强制使用设置的多媒体解码器,
media_specifier 可用值为 a (音频 v (视频)和 s 字幕。比如
codec:v h264_qsv 强制视频采用 h264_qsv 解码

-acodec codec_name 强制使用设置的音频解码器进行音频解码
-vcodec codec_name 强制使用设置的视频解码器进行视频解码
-scodec codec_name 强制使用设置的字幕解码器进行字幕解码
-autorotate 根据文件元数据自动旋转视频。值为 0 或 1 ,默认为 1 。
-framedrop
如果视频不同步则丢弃视频帧。当主时钟非视频时钟时
默认开启。若需禁用则使用 noframedrop

-infbuf
不限制输入缓冲区大小。尽可能快地从输入中读取尽可能多的数据。
播放实时流时默认启用,如果未及时读取数据,则可能会丢弃数据。此选项
将不限制缓冲区的大小。若需禁用则使用 noinfbuf

ffprobe

ffprobe主要用来查看多媒体文件的信息
可以查看log,查看每一个音频数据包含信息或者视频数据包信息,查看每一个流有多少帧以及每一个流有多少音视频包,查看视频像素点的格式等。
可使用 ffprobe --help了解更具体的信息。
博客参考

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/393587.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Godot Engine 4.0横空出世,Vulkan大怪兽加持,画质提升简直亮瞎眼

【CSDN 编者按】经历了漫长的等待,万众瞩目的 Godot Engine 4.0 正式版在其 3.0 版本发布 5 年以后,终于带着海量令人兴奋的新功能横空出世! 整理 | 开发游戏的老王 责编 | 王子彧 出品 | CSDN(ID:CSDNnews&#xff09…

优思学院|盘点,精益生产25个工具!【必需收藏】

精益生产方法需要一种全面的方法才能有效实施。精益这个概念是每个接触产品供应链的人都要实践的,无论是在计划方面还是在分析方面。 精益生产工具有助于持续改进生产效率和产品或服务质量。精益工具是要减少 Muda (浪费),从生产过…

内存清理、动画制作、CPU检测等五款实用软件推荐

人类与99%的动物之间最大差别在于是否会运用工具,借助好的工具,能提升几倍的工作效率。 1.内存清理软件——MemReduct MemReduct是一款内存清理软件,现在越来越多的软件由于硬件的普遍发展,对内存的使用都开始肆无忌惮起来&…

【C++】list的使用和基本迭代器框架的实现 vs和g++下string结构的说明

真正的成熟应该并不是追求完美,而是直面自己的缺憾,这才是生活的本质。 文章目录一、初见list1.list的迭代器失效和基本使用2.list的operations操作接口(看起来挺不错的接口,但可惜不怎么实用)3.vector和list的排序性能…

Linux系统基础命令(二)

一、浏览和切换目录 ls命令:列出文件和目录,主要用于列出文件和目录 CentOS的终端默认是有颜色标注的。一般来说:蓝色--->目录;绿色-->可执行文件;红色--->压缩文件;浅蓝色--->链接文件&#…

Java并发类库提供的线程池有哪几种? 分别有什么特点?

第21讲 | Java并发类库提供的线程池有哪几种? 分别有什么特点? 我在专栏第 17 讲中介绍过线程是不能够重复启动的,创建或销毁线程存在一定的开销,所以利用线程池技术来提高系统资源利用效率,并简化线程管理&#xff0c…

计算机网络总结

第一章 互联网 互连网:局部范围互连起来的计算机网络,与网络相连的计算机常称为主机。 互联网:当今世界上最大的计算机网络,Internet 两个基本特点 连通性,资源共享(信息,软件,硬件) 计算…

Ubuntu18安装新版本PCL-1.13,并和ROS自带PCL-1.8共存

文章目录1.安装新版本PCL-1.132.在工程中使用新版本的PCL-1.133.pcl-1.13误装到/usr/local/下如何卸载1.安装新版本PCL-1.13 下载PCL-1.13代码: 修改CMakeLists.txt文件,不编译vtk相关的代码:vtk的问题比较难解决,但是一般我们安…

科技大势怎么看 2023怎么干?

2023年,科技的走向依旧是世界各国的关注重点,各国在纷纷设立自己的科技战略目标外,还在潜心研究不同技术领域的科技趋势,试图通过科技占据国际竞争的制高点。 随着我国深入实施创新驱动发展战略,推动产业结构优化升级&…

数据结构1——概念与程序复杂度

翻陈年老底翻到了之前的数据结构笔记,由于当时刚开始使用电脑记笔记,markdown语法用的还是不是很熟,以及技术上比较欠缺,望多多海涵。 来都来了,点个赞呗~ 数据结构大体框架 早期>>数值计算>>计算机元素…

配置主机名与ip的映射关系

本次进行简单的小实验 通过在windows上配置主机名与IP地址的映射关系,达到我们在xshell或其他远程连接设备上,不用IP地址登陆,只需要用主机名就能实现登陆的效果 配置 首先 需要查看自己虚拟机的IP地址,找到ens33或者ens160…

[项目] Boost搜索引擎

目录 1.项目相关背景 2.项目宏观原理 3.技术栈和项目环境 4.正排索引&&倒排索引 5.去标签与数据清洗 6.构建索引模块Index 6.1正排索引 6.2 建立倒排 jiebacpp使用 建立分词 7.搜索引擎模块Searcher Jsoncpp -- 通过jsoncpp进行序列化和反序列化 处理Cont…

Vscode中Vue文件保存格式化、 ElementUI、Font Awesome俩大插件使用

Vscode中Vue文件老一片红色出现格式错误??如何运行别人的项目(没有node_modules文件)??选用组件与图标?? 解决问题一 前提有:Prettier ESLint插件、ESLint插件 1.打开s…

Git图解-常用命令操作-可视化

目录 一、前言 二、初始化仓库 2.1 设置用户名与邮箱 2.2 初始化仓库 三、添加文件 四、查看文件状态 五、查看提交日志 六、查看差异 七、版本回退 八、删除文件 九、分支管理 9.1 创建分支 9.2 切换分支 9.3 查看分支 9.4 合并分支 十、文件冲突 十一、转视…

ROS从入门到精通系列(二十九)-- linux封装ROS 自启动脚本及可执行程序App

机器人分布式处理架构ROS分布式架构,HiBot架构主要使用C/S架构,其中HibotServer为服务器,Muqutte为消息服务器中间件,HiBotClient为运行在机器人上的客户端。主要实现了机器人任务的远程部署、监控、控制三大功能,机器人平台依赖于ROS。其架构如下图所示 Img Src: https:/…

第53篇-某商城sign参数分析-webpack【2023-03-07】

声明:该专栏涉及的所有案例均为学习使用,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关!如有侵权,请私信联系本人删帖! 文章目录 一、前言二、网站分析三、完整代码一、前言 今天再来试一个webpack的例子吧,网址: aHR0cHM6Ly9tLnlxYi5jb20vYmFuay9…

【NLP相关】XLNET原理以及案例

❤️觉得内容不错的话,欢迎点赞收藏加关注😊😊😊,后续会继续输入更多优质内容❤️👉有问题欢迎大家加关注私戳或者评论(包括但不限于NLP算法相关,linux学习相关,读研读博…

类成员的方法

初识对象 生活中或是程序中,我们都可以使用设计表格、生产表格、填写表格的形式组织数据进行对比,在程序中: 设计表格,称之为:设计类(class) 打印表格,称之为:创建对象 …

C语言--一维数组

数组概念 数组:是一种构造数据类型,用以处理批量的同种类型的数据。 主要特点:数据量大 ,类型相同 一维数组的定义 语法: 类型说明符 数组名[整型常量表达式]; 注意: 方括号里面的内容用于指…

css3横向无限公告消息滚动功能

html部分 {{item}}css部分 .boxingeds{ display: flex; flex-wrap: wrap; width: 150%; position: relative; left: 1000rpx; padding: 30rpx 0; position: absolute; top: 23%; z-index: 2; -webkit-animation: myfirst 30s linear 2s infinite; .textname{ display: inlin…