镭速大文件传输视频文件预览实现原理

镭速可以支持视频预览,在测试过程中需要大量不同格式的视频,如果直接去找各种格式的视频不太现实,所以就会用到一个视频格式转换的工具ffmpeg,本文将介绍ffmpeg的基本使用方法。FFmpeg 是一个免费开源的音视频处理工具,可以进行音视频转码、剪辑、合并、分割等操作。它不仅功能强大,而且跨平台,适用于各种操作系统,包括 Windows、Linux 和 macOS。

介绍ffmpeg工具之前先了解一些视频处理的基本概念

1.概念

1.1容器

视频文件本身是一个容器(container),包含视频、音频和可能的字幕等内容。常见的容器格式通常可以通过文件的后缀名来识别。

查看ffmpeg支持的容器可以使用 ffmpeg -formats 命令查看。

1.2 编码格式

视频和音频需要进行编码才能保存成文件。不同的编码格式(CODEC)具有不同的压缩率,从而导致文件大小和清晰度的差异。

常见的视频编码格式:h.264、h.265、mpeg-2、mpeg-4。

常见音频编码格式:MP3、AAC

1.3 编码器

编码器(encoders)是用来实现特定编码格式的库文件。只有安装了相应格式的编码器,才能进行该格式的视频/音频编码和解码。以下是一些常见的内置于 FFmpeg 的视频编码器。

libx264:最流行的开源 H.264 编码器

NVENC:基于 NVIDIA GPU 的 H.264 编码器

libx265:开源的 HEVC 编码器

libvpx:谷歌的 VP8 和 VP9 编码器

libaom:AV1 编码器

3.ffmpeg常用命令

3.1查看本地的视频信息

ffmpeg -i 查看的视频

fps:表示平均帧率,总帧数除以总时长(以s为单位)。

tbr :表示帧率,该参数倾向于一个基准,往往tbr跟fps相同。

tbn: 表示视频流

tbc : 表示视频流

yuv420p: 电视行业的颜色编码方法

avc1:mp4视频格式封装的avc1编码格式(是不带起始码的H264编码格式)

acc:音频编码格式(Advanced Audio Coding,高级音频编码)

3.2转FPS

Ffmpeg --i 待转视频 -r 帧数 转换后的视频

3.3视频格式转换

比如一个avi文件,想转为mp4,或者一个mp4想转为avi。

ffmpeg -i input.avi output.mp4

ffmpeg -i input.mp4 output.avi

3.4提取音频

ffmpeg -i test.mp4 -acodec copy -vn output.aac

上面的命令,默认mp4的audio codec是aac,如果不是,可以都转为最常见的aac。

ffmpeg -i test.mp4 -acodec aac -vn output.aac

提取视频

ffmpeg -i input.mp4 -vcodec copy -an output.mp4

3.5视频剪切

参数:-ss表示开始切割的时间 、-t表示要切多少。

下面就是从15秒开始,切5秒钟出来,下面的命令,可以从时间为00:00:15开始,截取5秒钟的视频。

Ffmpeg -ss 00:00:15 -t 00:00:05 -i D:\otherVedio\IOSvedio2.mp4 D:\otherVedio\IOSvedio2-截取3秒.avi

或者

ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4

3.6码率转换

-b:v主要是控制平均码率。

比如一个视频源的码率太高了,有10Mbps,文件太大,想把文件弄小一点,但是又不破坏分辨率。

ffmpeg -i input.mp4 -b:v 2000k output.mp4

3.7视频编码格式转换

比如一个视频的编码是MPEG4,想用H264编码

ffmpeg -i input.mp4 -vcodec h264 output.mp4

3.8分辨率转换

Ffmpeg -- i 原视频文件 -s 360x640 新视频文件

以上只是简单介绍了ffmpeg的简单用法,测试过程中主要用于转换不同编码格式、不同分辨率、不同码率等的视频文件。总之,ffmpeg 是一个非常强大的音视频处理工具,具备处理各种音视频格式、进行剪辑和编辑、音频处理、视频编解码、流媒体传输、视频分析和处理等多种功能,适用于各种音视频处理需求。

相关推荐
嵌入式郑工7 小时前
LINUX驱动开发: 设备和驱动是怎么匹配的?
linux·运维·服务器
Jabes.yang8 小时前
Java面试场景:从Spring Web到Kafka的音视频应用挑战
大数据·spring boot·kafka·spring security·java面试·spring webflux
rain bye bye8 小时前
calibre LVS 跑不起来 就将setup 的LVS Option connect下的 connect all nets by name 打开。
服务器·数据库·lvs
Hello.Reader8 小时前
Flink 第三方序列化Kryo 注册、Protobuf/Thrift 接入与坑位避雷
大数据·flink
郭式云源生法则8 小时前
归档及压缩、重定向与管道操作和综合使用,find精确查找、find处理查找结果、vim高级使用、vimdiff多文件使用
linux·运维·服务器
斯普信专业组9 小时前
使用Reindex迁移Elasticsearch集群数据详解(下)
大数据·elasticsearch
getExpectObject()9 小时前
【jenkins】构建安卓
运维·jenkins
小池先生9 小时前
服务请求出现偶发超时问题,经查服务本身没问题,问题出现在nginx转发。
运维·服务器·nginx
java_logo9 小时前
vllm-openai Docker 部署手册
运维·人工智能·docker·ai·容器
MANONGMN9 小时前
Linux 通配符与正则表达式(含实战案例+避坑指南)
linux·运维·正则表达式