音视频处理 FFmpeg相关内容介绍 以及八大

FFmpeg的介绍

  •  FFmpeg由Fabrice Bellard于2000年创建,由C和汇编语言进行开发
  • FF -> Fast Forward 快进
  • mpeg -> 标准化组织 Moving Pictures Experts Group
  • 使用到FFmpeg的开源项目
  • gstreamer: a framework for streaming media
  • chromium
  • mpv: Command line video player
  • kdenlive: Free and open source video editor, based on MLT Framework and KDE Frameworks 5
  • synfig: Synfig Studio is a free and open-source 2D animation software, designed as powerful industrial-strength solution for creating film-quality animation using a vector and bitmap artwork.
  • FFmpegMediaMetadataRetriever: provides a unified interface for retrieving frame and meta data from an input media file
  • HandBrake: HandBrake is an open-source video transcoder available for Linux, Mac, and Windows
  • Nadeshiko: A Linux tool to cut short videos with ffmpeg
  • 更多项目可以参考projects.html

参考链接

  • GitHub - FFmpeg/FFmpeg: Mirror of https://git.ffmpeg.org/ffmpeg.git
  • FFmpeg学习目录 - 简书
  • FFmpeg初识 - 简书

命令行工具介绍

  • ffmpeg: 对音视频、图片数据进行编解码、格式转换、分割和合并
  • ffplay:媒体播放器 使用了ffmpeg和sdl库
  • ffprobe:音视频文件分析工具

播放器架构

  • 对文件进行解复用,分离音频和视频
  • 音频通过MP3进行播放
  • 视频通过YUV进行播放
  • 解复用分离音视频 用到了FFmpeg技术
  • 播放的时候 需要注意 音视频 同步

FFMpeg都能做啥

  • FFmpeg是一个非常优秀的多媒体框架,具有开源、免费、跨平台的特性
  • 对音频和视频的处理需要对应的插件进行处理
  • 可以运行在Linux MAC Windows等诸多应用平台上
  • 功能:编码  解码 转码 复用 解复用 过滤音视频数据 视频录制 媒体格式转换 

FFmpeg文件介绍

  • libavformat  对多媒体格式的解析和封装,如MP4、FLV、TS等文件的封装格式,RTMP、RTSP、HLS等网络协议封装格式
  • libavutil 常用的工具函数库 包括随机数生成器、数据结构、数学工具、核心多媒体工具
  • libavcodec 音频编解码,只负责调用插件,本身并不会自主执行
  • libavdevice  对多媒体输入和输出设备的信息进行采集和呈现,包括Video4Linux2,VfW,DShow和ALSA
  • libavresample 对音频重新采样
  • libavfilter  对音视频的后期处理 滤镜
  • libswresample 对音频操作。提供了转换音频的采样频率、声道格式或者样本格式的功能
  • libswscale 对视频的操作,高度优化的图像比例缩放、图像颜色空间/像素格式的转换,如rgb和yuv之间的转换

FFmpeg 常用命令 分类

  • 基本信息查询
  • 录制命令 音频和视频
  • 分解/复用命令
  • 处理原始数据命令 处理视频/音频采集的原始数据
  • 裁剪与合并命令 
  • 图片和视频互转命令
  • 直播相关命令
  • 各种滤镜命令

FFmpeg处理流程

  • 输入文件 mp4 mov格式的文件,这是一个封装,包含了音频和视频等数据
  • 对输入文件进行demuxer得到编码数据(视频和音频),编码数据包是经过压缩的
  • 对编码数据包 进行 解码 得到 数据帧,此刻的数据帧是 高度还原 原始数据信息,也就是使用麦克风直接采集到的数据,但是不是完全一样的。对数据帧进行重新编码,进行封装

 FFmpeg基本信息查询命令

  • -demuxers 和 -muxers 分解 和 封装的格式
  • -devices 将其当做一个 输入设备,音频、视频、桌面设备
  • -protocol 支持的网络协议,将网络文件作为输入
  • -filters 加水印 去除水印
  • -pix_fmts 像素格式 rgm YUV
  • -sample_fmts 可用的采样模式 每一个采样点大小 ,使用多少字节存储一个采用,8位 16位 浮点型还是整数型等
  • -layouts 显示channel名称,单声道 多声道 还是 立体声 

 FFmpeg录制命令

录制视频

  • ffmpeg -f avfoundation -i 1  -r  30 out.yuv
    • -f:指定使用avfoundation进行数据采集
    • -i:指定输入,从哪采集数据,他是一个文件的索引号,1 代表屏幕 0代表摄像头
    • -r:指定帧率 25帧就算比较流畅,60帧以上高清
    • out.yuv 保存后的数据格式 yuv表示原始数据,比较大,无压缩
  • ctrl + c 结束录制
  • ffplay -s 2560x1600 -pix_fmt uyvy422 out.yuv
    • 因为yuv格式的文件未封装,ffplay不知道如何播放
    • 但是ffmpeg在进行视频录制的过程中会保存相关的配置信息,播放时需要指定即可
    • -pix_fmt uyvy422 像素格式
  • ffmpeg -f avfoundation  -list_devices  true -i “”显示设备列表
    • 视频设备
      • [0] camera
      • [1] 屏幕录制
    • 音频设备
      • [0]  虚拟音频设备
      • [1] 设备内置 麦克风

录制音频

  • 视频在冒号之前指定,音频设备在冒号后面指定
  • ffmpeg -f avfoundation -i :0 out.wav
  • 播放 ffplay out.wav

  FFmpeg分解与复用

多媒体格式转换

  • ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv
    • -vcodec copy  v代表视频,copy表示先前封装不变,直接拷贝
    • -acodec copy  a代表音频,copy表示先前封装不变,直接拷贝
    • out.flv 表示另外一种输出格式

  FFmpeg处理原始数据

例子一 FFmpeg提取YUV数据

  • ffmpeg -i input.mp4 -an -c:v rawvideo -pix_fmt yuv420p out.yuv
  • -an a表示音频 n 表示不要,输出视频不包含 音频
  • -c:v rawvideo 对原始视频进行编码
  • -pix_fmt yuv420p 对像素格式进行处理
  • 播放需要指定参数ffplay -s 638x358 out.yuv

例子二 FFmpeg提取PCM数据

  • ffmpeg -i out.mp4 -vn -ar 44100 -ac2 -f s16le out.pcm
  • -vn 不要视频
  • -ar 44100 音频采样率
  • -ac2 c表示声道 2 表示双声道
  • -f s16le s表示有符号 16表示每一个数值使用16位表示 l表示小 e表示end 小端存储
  • 播放指定参数 ffplay -ar 44100 -ac 2 -f s16le out.pcm

  FFmpeg滤镜

  • 滤镜需要针对解码数据进行操作,对其进行过滤,再次编码

  •  ffmpeg -i in.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy out.mp4
  • -vf 视频滤镜
  • crop是滤镜的名字
  • =in_w-200:in_h-200 是与crop相对应的参数
  • in_w 视频本身的宽度,in_h视频本身的高度
  • -200,即在原有的视频高度和宽度的基础上 裁剪200,实现视频的裁剪
  • -c:v 视频的编码器是libx264
  • -c:a copy 音频不处理 直接拷贝

  FFmpeg裁剪与合并命令

  • 音视频裁剪
  • ffmpeg -i in.mp4 -ss 00:00:00 -t 10 out.ts
  • -ss 00:00:00 裁剪的起始时间 时:分:秒
  • -t 10 截取多长时间的视频,以秒为单位
  • 音视频合并
  • ffmpeg -f concat -i inputs,txt out,flv
  • concat 拼接
  • -i inputs.txt  存储想要合并的文件,也就是文件列表
    • inputs.txt内容为 file filename 每一行指定一个文件
    • 例子
    • file '1.ts'
    • file '2.ts'
  • out.flv 输出结果

FFmpeg 图片和视频互转命令

  • 视频转图片
  • ffmpeg -i in.flv -r 1 -f image2 image-%3d.jpeg
  • -r 转换图片的速率 此时设置为1,表示每秒钟转换1张图片
  • -f 将输入文件 转化为什么格式的,这里是image2
  • 输出结果是 image-%3d.jpeg %3d动态的递增,%3表示3个数字组成,即文件命名image-000.jpeg 开始 ,以image-999.jpeg 结束
  • 图片转视频
  • ffmpeg -i image-%3d.jpeg out.mp4
  • 播放 ffplay out.mp4 播放视频,几张图立刻播放完毕

FFmpeg 直播 推 / 拉流

  • 推流
  • ffmpeg -re -i out.mp4 -c copy -f flv rtmp://server/live/steamName
  • -re 减慢帧率
  • -i out.mp4 推出去的流媒体
  • -c 音视频
  • -v 视频
  • -a 音频
  • -f 推出去流媒体的格式 
  • rtmp://server/live/steamName 服务器
  • 拉流
  • ffmpeg -i rtmp://server/live/steamName -c copy dump.flv
  • -c 音视频 copy不进行编码
  • dump.flv 将其转换为 flv格式

简单命令

  •  修改图片和视频的分辨率
    • ffmpeg -i input -vf scale=iw/2:-1 output
    • iw: 输入帧宽 此处将帧宽缩短为先前的1/2
    • -1: 要求scale filter保持纵横比
  • ffplay 播放文件
    • ffplay test.mp4
  • 播放网络文件
    • ffplay rtsp://184.72.239.149/vod/mp4://BigBuckBunny_175k.mov //大白熊
  • 以json字符串的形式输出数据视频和音频流的详细信息
    • ffprobe -print_format json -show_streams test.mp4
    • 结果示例
chy-cpabe@ubuntu:~/ffmpeg-source/ffmpeg$ ./ffprobe -print_format json -show_streams /home/chy-cpabe/Videos/test.mp4 
ffprobe version N-106797-g580fb6a8c9 Copyright (c) 2007-2022 the FFmpeg developersbuilt with gcc 7 (Ubuntu 7.5.0-3ubuntu1~18.04)configuration: --prefix=/home/chy-cpabe/ffmpeg_build --pkg-config-flags=--static --extra-cflags=-I/home/chy-cpabe/ffmpeg_build/include --extra-ldflags=-L/home/chy-cpabe/ffmpeg_build/lib --extra-libs='-lpthread -lm' --ld=g++ --bindir=/home/chy-cpabe/bin --enable-gpl --enable-gnutls --enable-libass --enable-libfdk-aac --enable-libfreetype --enable-libmp3lame --enable-libopus --enable-libsvtav1 --enable-libdav1d --enable-libvorbis --enable-libvpx --enable-libx264 --enable-libx265 --enable-nonfreelibavutil      57. 24.101 / 57. 24.101libavcodec     59. 27.100 / 59. 27.100libavformat    59. 23.100 / 59. 23.100libavdevice    59.  6.100 / 59.  6.100libavfilter     8. 37.100 /  8. 37.100libswscale      6.  6.100 /  6.  6.100libswresample   4.  6.100 /  4.  6.100libpostproc    56.  5.100 / 56.  5.100
{
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from '/home/chy-cpabe/Videos/test.mp4':Metadata:major_brand     : M4V minor_version   : 1compatible_brands: isomavc1mp42creation_time   : 2021-02-14T02:11:02.000000ZDuration: 00:00:23.36, start: 0.000000, bitrate: 6313 kb/sStream #0:0[0x1](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709, progressive), 1920x1080 [SAR 1:1 DAR 16:9], 6147 kb/s, 23.98 fps, 23.98 tbr, 24k tbn (default)Metadata:creation_time   : 2021-02-14T02:11:02.000000Zhandler_name    : ETI ISO Video Media Handlervendor_id       : [0][0][0][0]encoder         : Elemental H.264Stream #0:1[0x2](und): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 160 kb/s (default)Metadata:creation_time   : 2021-02-14T02:11:02.000000Zhandler_name    : ETI ISO Audio Media Handlervendor_id       : [0][0][0][0]"streams": [{"index": 0,"codec_name": "h264","codec_long_name": "H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10","profile": "High","codec_type": "video","codec_tag_string": "avc1","codec_tag": "0x31637661","width": 1920,"height": 1080,"coded_width": 1920,"coded_height": 1080,"closed_captions": 0,"film_grain": 0,"has_b_frames": 1,"sample_aspect_ratio": "1:1","display_aspect_ratio": "16:9","pix_fmt": "yuv420p","level": 40,"color_range": "tv","color_space": "bt709","color_transfer": "bt709","color_primaries": "bt709","chroma_location": "left","field_order": "progressive","refs": 1,"is_avc": "true","nal_length_size": "4","id": "0x1","r_frame_rate": "24000/1001","avg_frame_rate": "24000/1001","time_base": "1/24000","start_pts": 0,"start_time": "0.000000","duration_ts": 560560,"duration": "23.356667","bit_rate": "6147092","bits_per_raw_sample": "8","nb_frames": "560","extradata_size": 60,"disposition": {"default": 1,"dub": 0,"original": 0,"comment": 0,"lyrics": 0,"karaoke": 0,"forced": 0,"hearing_impaired": 0,"visual_impaired": 0,"clean_effects": 0,"attached_pic": 0,"timed_thumbnails": 0,"captions": 0,"descriptions": 0,"metadata": 0,"dependent": 0,"still_image": 0},"tags": {"creation_time": "2021-02-14T02:11:02.000000Z","language": "und","handler_name": "ETI ISO Video Media Handler","vendor_id": "[0][0][0][0]","encoder": "Elemental H.264"}},{"index": 1,"codec_name": "aac","codec_long_name": "AAC (Advanced Audio Coding)","profile": "LC","codec_type": "audio","codec_tag_string": "mp4a","codec_tag": "0x6134706d","sample_fmt": "fltp","sample_rate": "48000","channels": 2,"channel_layout": "stereo","bits_per_sample": 0,"id": "0x2","r_frame_rate": "0/0","avg_frame_rate": "0/0","time_base": "1/48000","start_pts": 0,"start_time": "0.000000","duration_ts": 1118656,"duration": "23.305333","bit_rate": "160137","nb_frames": "1094","extradata_size": 2,"disposition": {"default": 1,"dub": 0,"original": 0,"comment": 0,"lyrics": 0,"karaoke": 0,"forced": 0,"hearing_impaired": 0,"visual_impaired": 0,"clean_effects": 0,"attached_pic": 0,"timed_thumbnails": 0,"captions": 0,"descriptions": 0,"metadata": 0,"dependent": 0,"still_image": 0},"tags": {"creation_time": "2021-02-14T02:11:02.000000Z","language": "und","handler_name": "ETI ISO Audio Media Handler","vendor_id": "[0][0][0][0]"}}]
}
chy-cpabe@ubuntu:~/ffmpeg-source/ffmpeg$ 

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

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

相关文章

音视频处理 基础开发 语言基础

基础开发内容 Vim编译器C语言回顾,重点介绍指针的概念Linux/MAC C语言的编译和调试Linux/MAC 常用开发工具介绍 Vim编译器 命令模式 拷贝 删除 粘贴等,通过i / a 等切换到编辑模式编辑模式 编辑字符,通过ESC进行切换常用命令 创建文件 vim …

音视频处理 ffmpeg下载、编译和安装

创建文件夹 ffmpeg_sources 存放源文件ffmpeg_build 构建文件并安装库bin 存放二进制可执行文件 安装依赖环境 整体安装 sudo apt-get update -qq && sudo apt-get -y install \autoconf \automake \build-essential \cmake \git-core…

CLion配置 鼠标滚轮 放大和缩小

操作 点击File -> Settings点击Appearance & Behavior -> Keymap在搜索框搜索 font 选择 Decrease FontSize ,右键点击,选择add Mouse Shortcut,按住ctrl,同时向下滑动滚轮;同理,操作 Increase…

struts2通配符_基于Struts2框架的名片管理系统

本篇博文将分享一款基于Struts2框架的名片管理系统,JSP引擎为Tomcat9.0,数据库采用的是MySQL5.5,集成开发环境为Eclipse IDE for Java EE Developers。名片管理系统主要包括用户管理和名片管理功能。用户功能主要包括:用户注册、用…

音视频处理 Clion搭建ffmpeg开发环境

参考链接 Ubuntu 20.04 搭建 CLion FFmpeg 开发环境_TYYJ-洪伟的博客-CSDN博客 安装CLion 首先到 jetbrains 官网 https://www.jetbrains.com/clion/ 下载 CLion 安装包 CLion-2021.1.tar.gz使用finalshell和ubuntu之间配置ssh链接将Clion-2022.1.tar.gz 使用move移动到 /hom…

音视频处理 ffmpeg中级开发 H264编码

开发介绍 libavcodec/avcodec.h常用的数据结构 AVCodec 编码器结构体AVCodecContext 编码器上下文AVFrame 解码后的帧结构体内存的分配和释放 av_frame_alloc 申请av_frame_free() 释放avcodec_alloc_context3() 创建编码器上下文avcodec_free_context() 释放编码器上下文解码…

音视频处理 ffmpeg中级开发 视频转图片

操作流程 目的:使用FFmpeg将视频的每一帧数据转换为图片1,打开输入的多媒体文件,检索多媒体文件中的流信息2,查找视频流的索引号,通过索引号获取数据流;通过解析视频流中的编码参数得到解码器ID&#xff0…

企业知识库与知识管理:如何统一战略与实践

在知识密集型的现代企业中,知识已经成为了一种宝贵的资产。如何有效地管理和利用这一资产,成为企业持续发展与创新的关键。企业知识库与知识管理作为知识经济的两大支柱,它们的重要性不言而喻。但很多时候,我们发现企业的知识管理…

音视频处理 ffmpeg中级开发 AAC编码

介绍 编码流程类似于视频编码,1,查找编码器;2,设定参数,打开编码器;3,数据编码编码函数 avcodec_encode_audio2 已经被弃用FFmpeg 过时 Api 汇总整理 - 灰色飘零 - 博客园 未成功使用 旧版本i…

虚拟机为Ubuntu分配空间

当虚拟机里面的创建的ubuntu镜像需要更大的空间,将ubuntu关掉之后,对应调整硬盘的空间大小,由先前的20G上调至50G,但是先前的20G内存空间映射的位置是/dev/sda,后面增加的这段内存空间30G映射到/dev/sda1因此&#xff…

为什么人会摆高姿态_Yo , 你为什么喜欢冲浪?

“你为什么喜欢冲浪?” 那天木木突然问我。我愣住了。此时一道碧波恰从防泼堤(jetty)的那头升起,木木转头望去,视线追着那道浪缓缓向西,直至它破碎成白色的浪花。我瞥见他眼神中的光亮,就和小孩…

音视频处理 ffmpeg初级开发 命令行工具-实用命令

参考链接 ffmpeg Documentation作者:smallest_one 链接:FFmpeg命令行工具-实用命令 - 简书 目录 1,help命令使用 1.1 ffmpeg命令的语法结构1.2 获取详细的help信息1.3 打印帮助或者支持能力的信息1.4 全局选项1.5 文件选项1.6 视频/音频/字…

不同的电脑打印预览不同怎么解决_条码打印软件中标签预览正常打印无反应怎么解决...

在使用条码打印软件制作标签时,有客户反馈,标签打印预览正常的,但是打印无反应,咨询是怎么回事?今天针对这个情况,可以参考以下方法进行解决。一、预览正常情况下,打印没反应(1)在条码打印软件中设计好标签之后&#…

MP4文件格式的相关内容

参考链接 FFmpeg中mp4的demuxer(mov.c)代码阅读 - 简书mp4文件格式解析 - 简书mp4封装格式各box类型讲解及IBP帧计算_青丶空゛的博客-CSDN博客5分钟入门MP4文件格式 - 程序猿小卡 - 博客园​关于M4A文件的随机访问 - 云社区 - 腾讯云 MP4文件格式相关内容 MP4文件由许多box组…

华三交换机如何进入配置_学校机房项目交换机的如何配置,理解这篇,交换机配置不再难...

弱电项目中,交换机的配置是无法避免的,大部分的项目都有可能会涉及到,尤其是机房等网络项目,本期我们就通过一个实际项目案例来详细了解交换机在项目中的应用配置,如果我们平时对交换机配置不熟,这个案例可…

百度地图迁徙大数据_百度地图大数据:五一高速拥堵不似预期,广深成热门迁出入地...

五一假期在即,你是否做好了“出行功课”?高速拥堵水平降低、公众出门不出城、公园成踏青赏景热门目的地……在全国疫情防控仍未松懈的时刻,2020年的五一或许注定与往年不同。近日,百度地图发布2020五一假期安全出行大数据&#xf…

音视频的基础知识 视频播放器原理/封装格式/视频音频编码数据/视频像素数据/音频采样数据

参考链接 FFMpeg视频播放器的制作-雷霄骅(去除电流音版本)_哔哩哔哩_bilibili 视频播放器原理 播放视频文件的流程YUV是一张屏幕中像素点的数值封装格式 MP4 RMVB TS FLV AVI将视频和音频码流按照一定的格式存储在一个文件中封装格式分析工具&#xf…

科立捷7代写频软件_天大厦大“两硕士论文雷同”通报,代写买卖论文

澎湃新闻记者 薛莎莎天津大学、厦门大学7月10日晚就“两硕士论文雷同”一事,分别发出调查处理通报。通报称,涉事两名学生存在由他人代写、买卖论文的学术作假的行为,均撤销其所获硕士学位,收回、注销硕士学位证书。澎湃新闻注意到…

FFMpeg命令行基础

参考链接 FFMpeg视频播放器的制作-雷霄骅(去除电流音版本)_哔哩哔哩_bilibili音视频处理 ffmpeg初级开发 命令行工具-实用命令_MY CUP OF TEA的博客-CSDN博客 介绍 FFMpeg是视频播放和转码的内核 使用 win中ffmpeg.exe用于视频转码简单命令&#xff1…

悲观锁和乐观锁_面试必备之乐观锁与悲观锁

何谓悲观锁与乐观锁乐观锁对应于生活中乐观的人总是想着事情往好的方向发展,悲观锁对应于生活中悲观的人总是想着事情往坏的方向发展。这两种人各有优缺点,不能不以场景而定说一种人好于另外一种人。大家可以点击加群【JAVA架构知识学习讨论群】47398464…