使用ffmpeg命令处理音视频

news/2024/11/13 3:36:12/文章来源:https://www.cnblogs.com/sathcal/p/18536377

FFmpeg可以运行音频和视频多种格式的录影、转换、流功能,包含了libavcodec(用于多个项目中音频和视频的解码器库)和libavformat(音频与视频格式转换库)。(关于一些底层方面的东西,可以参考ffmpeg和H264视频的编解码) https://www.octfgroup.com/

1,获得一个文件的音视频(编码方面的)信息:

gemfield@ai:~$ ffmpeg -i video.flv -hide_banner


2,把视频的每帧转换成照片:

gemfield@ai:~$ ffmpeg -i video.flv image%d.jpg


把视频的一部分截取出来:

ffmpeg -i civilnet.MP4 -ss 2000 -t 100 -codec copy gemfield.mp4


把视频的一部分截取出来生成图片:

ffmpeg -ss 06:07:19 -i civilnet.mp4 -t 719 gemfield%6d.jpg


3,把照片(image1.jpg, image2.jpg, image3.jpg...)转换为视频,-f设置输出格式:

gemfield@ai:~$ ffmpeg -f image2 -i image%d.jpg video.mpg


4,把音频剥离出来:

gemfield@ai:~$ ffmpeg -i video.flv -vn -ar 44100 -ac 2 -ab 192 -f mp3 audio.mp3


5,把多个视频合并为1个视频:

gemfield@ai:~$ for f in $(ls *.mkv);do echo "file '$f'" >> mylist.txt;done
gemfield@ai:~$ ffmpeg -f concat -i mylist.txt -c copy myvideo.mkv


6,视频格式的转换,比如把mp4格式转换为wmv:

#先看格式是否被支持
gemfield@ai:~$ ffmpeg -formats
#转换
gemfield@ai:~$ ffmpeg -i yourvideoname.mp4 -c:v libx264 outputfilename.wmv


7,把字幕烧写到视频里(注意是烧写到视频里,而不是运行时加载字幕的方式)

#先准备好字幕文件 game.srt
gemfield@ai:~$ ffmpeg -i game.srt game.ass
gemfield@ai:~$ ffmpeg -i myvideo.mkv -vf ass=game.ass myvideo_game_caption.mkv


备注:字幕文件的基本格式

gemfield@ai:~/Downloads/demo_gemfield$ cat game.srt
1
00:00:00,000 --> 00:00:27,000
第一部分:这里是Gemfield

2
00:00:27,000 --> 00:01:10,000
第二部分:那里也是Gemfield

3
00:01:10,000 --> 00:02:21,000
第三部分:到处都是Gemfield

4
00:02:21,000 --> 00:03:45,000
第四部分:但你不是Gemfield

5
00:03:45,000 --> 00:04:42,000
第五部分:他也不是Gemfield

6
00:04:42,000 --> 00:04:52,000
第六部分:那天下谁人不识Gemfield


8,把视频切割成多个

gemfield@ai:~$ ffmpeg -i 10.mkv -t 00:00:39 -codec copy 8.mkv -ss 00:01:01 -codec copy 9.mkv


10,一些更新

#mp4拼接:
ffmpeg -i 1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 1.ts
ffmpeg -i 2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.ts
ffmpeg -i "concat:1.ts|2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output.mp4

#mp3截取:
ffmpeg -ss 00:00:05 -t 00:02:00 -i testmusic.mp3 twomin.mp3

#mp4配mp3音频:
ffmpeg -i test_yueqianlongma.mp4 -vcodec copy -an output.mp4
#(cut off original audio for original mp4)
ffmpeg -i output.mp4 -i audio.mp3 -vcodec copy -acodec copy result.mp4

#mp4截帧:
ffmpeg -i video.mp4 image%4d.jpg

#单图生成一段视频:
ffmpeg -f concat -safe 0 -i input.txt concat1.mp4
#input.txt内容(去掉#):
#file './frames/image0101.jpg'
#duration 3 (单位秒)
#file './frames/image0101.jpg'

#截取中间一段视频(-ss 起始时间点 -to 结束时间点):
ffmpeg -i source.mp4 -vcodec copy -acodec copy -ss 00:00:10 -to 00:00:15 ./cutout1.mp4


Debug章节
参考Debug/MacroblocksAndMotionVectors - FFmpeg

1,显示运动向量

ffplay -flags2 +export_mvs input.mp4 -vf codecview=mv=pf+bf+bb
或者
ffmpeg -flags2 +export_mvs -i input.mp4 -vf codecview=mv=pf+bf+bb output.mp4
其中:

pf – forward predicted motion vectors of P pictures
bf – forward predicted motion vectors of B pictures
bb – backward predicted motion vectors of B pictures


2,显示宏块类型

ffplay -debug vis_mb_type input.mp4
ffmpeg -debug vis_mb_type -i input.mp4 output.mp4


3,分析QP Values

ffplay -debug vis_qp input.mp4
ffmpeg -debug vis_qp -i input.mp4 output.mp4

 

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

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

相关文章

IDEA2023应用第一部分 环境配置(摘自CSDN 作者:生活需要淡定)

第一部分 环境配置 1.1 语言设置 1.打开IntelliJ IDEA,‌进入菜单栏的File -> Settings。‌ 2.在弹出的设置窗口中,‌点击Plugins,‌然后在搜索框输入Chinese。‌ 3.找到Chinese (Simplified) Language插件,‌点击Install进行安装。‌ 4.安装完成后,‌重启IntelliJ IDE…

QT:控制台数据新增、删除、查询、更新

基于控制台的程序,使用SQLite数据库完成大批量数据的增加、删除、更新和查询操作并输出。效果图: CH1301.pro 详细代码QT -= gui QT += sqlCONFIG += c++11 console CONFIG -= app_bundle# The following define makes your compiler emit warnings if you use # any Qt feat…

【人脸伪造检测】Spatial-Phase Shallow Learning: Rethinking Face Forgery Detection in Frequency Domain

一、研究动机[!note]创新点:利用相位谱实现伪造检测,并且证明了卷积模型可以提取隐性特征。由于上采样是伪造模型的关键步骤,这篇论文通过相位信息检测上采样的伪影。对比之前的频率模型: F3-Net:通过离散余弦变换后的统计特征实现伪造检测二、检测模型可学习的知识点[!ti…

CF413

前言 我是小惰惰,所以我只写一套题,去seesee大家的题解 CF413A 扫一遍 如果他的最大值>max||最小值<min 不行 如果他不等于 max min 的数 >n-m 不行 CF314B 直接记录每个聊天室法了多少条消息,然后计算每个人的时候减去他法的就行了 CF314C 反正都是全部翻倍,所以…

全面开启双拼

简单说说各种设备怎么开启双拼简单说说各种设备怎么开启双拼 ‍‍ iOS 其实添加双拼键盘,和添加五笔键盘差不多,具体可以看《启用 iPhone 原生的五笔输入》,这里就不赘述了 你也可以安装流行输入法,然后切换为双拼。 ‍ Android 貌似没有原生的双拼,可以安装下主流的输入法…

终于搞全了:GPIO/ADC/LED/I2C/SPI/USB…

合宙低功耗4G模组经典型号Air780E,支持两种软件开发方式: 一种是传统的AT指令;一种是基于模组做Open开发。 传统AT指令的开发方式,合宙模组与行业内其它模组品牌在软件上区别不大,在硬件功耗上更有优势; 模组Open开发,合宙采用的是LuatOS方式,相对C-SDK入门更简单,开发…

20-数据库系统安全

20.1 概况 1)概念 数据库安全是指数据库的机密性、完整性、可用性能够得到保障,其主要涉及数据库管理安全、数据安全、数据库应用安全以及数据库运行安全。 2)威胁授权的误用 逻辑推断和汇聚:利用逻辑推理,把不太敏感的数据结合起来可以推断出敏感信息。进行逻辑推断也可能…

来了,超全MQTT实用示例

Air201快速入门之MQTT示例合宙Air201资产定位模组——是一个集成超低功耗4G通信、语音通话、超低功耗定位、计步、震动、Type-C、充电、放音、录音等功能的超小PCBA。 内部集成高效、简单、可靠的LuatOS语言,旨在帮助客户降低开发难度,降低研发成本,以及打造超小超低功耗的精…

Air780E软件指南:zlib解压示例

一、ZLIB解压工具简介Zlib解压工具是一个广泛使用的压缩和解压缩库,主要用于处理数据的压缩和解压缩任务。Zlib使用的是DEFLATE算法,这是一种通用的压缩算法。它被应用在很多场景中,比如压缩文件、网络传输中的数据压缩、以及各种应用程序中的数据存储和读取。 Zlib的代码库…

简单但实用,RTC时钟使用指南

合宙Air201快速入门-RTC实时时钟使用示例- 本教程教你通过使用脚本代码,实现Air201内置RTC实时时钟同步时间、获取时间、设置时间等功能,可根据实际需求灵活应用。 我们先了解一些相关基础知识: RTC——Real-Time Clock实时时钟,通常称为时钟芯片,可以提供精确的实时时间,…

Nexpose 6.6.278 发布下载,新增功能概览

Nexpose 6.6.278 for Linux & Windows - 漏洞扫描Nexpose 6.6.278 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, released Nov 07, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/ 查看最新版。原创作品,转载请保留出处。 作者主页:s…

BuildCTF-sorin-wp(part)

BuildCTF部分题目wp队员:sorinEZ_ZIP010查找分析发现压缩包,使用foremost分离疑似套娃压缩包,使用开源软件extractnow或者脚本都可以批量压缩,这里使用extractnow得到flagHEX的秘密16进制每两位截取一次转10进制,对比Build的前几个字符的ascll码发现多了128,脚本如下:de…