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

镭速可以支持视频预览,在测试过程中需要大量不同格式的视频,如果直接去找各种格式的视频不太现实,所以就会用到一个视频格式转换的工具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 是一个非常强大的音视频处理工具,具备处理各种音视频格式、进行剪辑和编辑、音频处理、视频编解码、流媒体传输、视频分析和处理等多种功能,适用于各种音视频处理需求。

相关推荐
木木em哈哈10 分钟前
记一次在线编辑器的探索
linux·服务器·网络
我要成为嵌入式大佬26 分钟前
正点原子MP157--问题详解--二(NFS挂载根文件系统双网卡设置)
linux·服务器·网络
一个有温度的技术博主1 小时前
网安实验系列七:域名收集
linux·运维·服务器
我爱学习好爱好爱1 小时前
Ansible 环境搭建
linux·运维·ansible
野犬寒鸦1 小时前
Redis热点key问题解析与实战解决方案(附大厂实际方案讲解)
服务器·数据库·redis·后端·缓存·bootstrap
Forrit1 小时前
Agent长期运行(Long-Running Tasks)实现方案与核心挑战
大数据·人工智能·深度学习
人工智能训练1 小时前
从 1.1.3 到 1.13.2!Ubuntu 24.04 上 Dify 升级保姆级教程(零数据丢失 + 一键迁移)
linux·运维·人工智能·windows·ubuntu·dify
袖手蹲2 小时前
Arduino UNO Q 板载 Nanobot 自动化编程指南之七
运维·人工智能·自动化
2601_955363152 小时前
技术赋能B端拓客:号码核验的行业困局与破局路径氪迹科技法人股东筛选系统,阶梯式价格
大数据·人工智能
我要成为嵌入式大佬2 小时前
正点原子MP157--问题详解--四(关于根文件系统驱动模块指令的注意事项)
linux·运维·服务器