首页 > 其他分享 >命令行视频处理工具ffmpeg学习总结

命令行视频处理工具ffmpeg学习总结

时间:2024-05-19 20:40:49浏览次数:13  
标签:视频 FFmpeg 音频 mp4 命令行 output ffmpeg

处理视频是我经常进行得一个操作,但是需要下载大量得视频处理工具,而ffmpeg是个十分强大但是轻量得视频处理工具,通过在命令行里面输入一些指令,我们可以对视频进行许多操作。你可能对它并不了解,但是很多软件都利用了它的技术或者核心库,因此学习一下ffmpeg得使用还是十分有必要的。

介绍

FFmpeg是一个跨平台的命令行工具和开源软件项目,全称为"Free and Fossile Media Player",即自由和免费媒体播放器。它主要专注于音频和视频处理,功能非常强大,集成了音频和视频的编码、解码、转换、流媒体处理等多种功能。FFmpeg提供了丰富的命令行选项,操作灵活,且可以通过脚本进行自动化处理。对于开发者和音频/视频处理的爱好者来说,它是一个非常实用的工具。

FFmpeg的核心是用C语言编写的,可以在各种操作系统,包括Windows、Linux、Mac OS等上运行。它支持多种格式的音频和视频文件,如MP4、AVI、MKV、FLV、WMV、MP3、WAV、JPEG、PNG等。一些大型软件内置了ffmpeg的核心库,部分作用如下:

  1. 编码:将视频或音频文件转换为其他格式,如MP4到WebM,AAC到FLAC。
  2. 解码:播放不同格式的视频或音频,如从MP4播放FLV。
  3. 合并/分割:将多个文件合并成一个文件,或者将一个文件分割成多个片段。
  4. 转换:调整视频或音频的参数,如分辨率、比特率、帧率、音量等。
  5. 流媒体:处理HTTP直播和点播,如转码HLS或RTMP流。
  6. 音频和视频处理:添加水印、字幕,进行音频降噪、音频均衡等。

安装

  1. 你可以访问ffmpeg官网直接进行下载
  2. 你也可以通过命令行软件包来安装(以windows为例):
  • Scoop

    • 首先,你需要在你的计算机上安装Scoop。访问Scoop的GitHub页面(https://github.com/ScoopInstaller Scoop)并按照安装指南操作。
    • 安装完成后,打开命令提示符(PowerShell或CMD),输入以下命令来安装FFmpeg:
    scoop install ffmpeg
    

    这将自动下载并安装最新版本的FFmpeg。

  • Winget

    • Winget需要在Windows 11上安装,如果你的系统是Windows 10,可能需要先更新到Windows 11。
    • 打开命令提示符(以管理员身份运行),输入以下命令来安装FFmpeg:
    winget install ffmpeg
    

    或者,如果你知道FFmpeg的特定版本号,可以这样:

    winget install ffmpeg --version <version>
    

    请将<version>替换为你想要的FFmpeg版本号。

请确保网络连接良好,因为这些操作可能会下载大文件。安装完成后,你可以在命令提示符中通过ffmpeg --version来检查安装是否成功。

使用

FFmpeg的命令行应用非常丰富,涵盖了音频和视频处理的各个方面。以下是一些主要的命令和功能:

  1. 视频处理

    • ffmpeg -i input.mp4 -c:v libx264 -crf 22 -c:a aac -b:a 128k output.mp4:将MP4视频编码为H.264编码,设置码率,保留质量,输出为新的MP4文件。
    • ffmpeg -vf "crop=width=1080:height=720" input.mp4 -c:a copy output.mp4:裁剪视频到特定尺寸,保持音频不变。
  2. 音频处理

    • ffmpeg -i input.mp3 -c:a copy -vn output.mp4:只保留音频,不转换视频,将MP3文件转换为MP4。
    • ffmpeg -af "volume=0.5" input.mp3 output.mp3:降低音频音量。
  3. 流媒体

    • ffmpeg -i input.mp4 -f flv -b:v 1000k -b:a 128k -hls_time 5 stream.m3u8:将视频流转换为HLS格式,用于流媒体播放。
    • ffmpeg -re -i source.mp4 -f flv -c copy server.flv:实时编码视频流到FLV格式。
  4. 编码/解码

    • ffmpeg -i input.mp4 -c:copy output.wav:将MP4转换为WAV格式,保持原始编码。
    • ffmpeg -i input.wav -c:a opus -b:a 64k output.mp3:将WAV音频编码为Ogg Vorbis格式,设置新的比特率。
  5. 合并/提取

    • ffmpeg -i "concat:file1.mp4|file2.mp4" -c copy output.mp4:合并多个视频文件。
    • ffmpeg -ss 00:00:05 -t 00:00:10 -i input.mp4 -vframes 10 output.jpg:提取视频的特定时间片段。
  6. 音频/视频同步

    • ffmpeg -i "concat:audio1.mp3|video1.mp4" -c:v copy -c:a aac -map 0:a:0 -map 0:v:0 output.mp4:将音频和视频同步。
  7. 音频/视频转码

    • ffmpeg -i input.mp4 -vf "scale=width=1920:height=1080" -c:v libx265 -crf 23 output.mp4:将视频分辨率调整到1920x1080,同时进行H.265编码。
  8. 音频/视频流媒体

    • ffmpeg -i source.mp4 -f hls -hls_list_size 10 -hls_time 5 -bsf:a aac_adtstoasc -bsf:v libx264 -c:v libx264 -preset slow -c:a aac -b:a 128k -hls_segment_filename playlist.m3u8:生成HLS流媒体。

这些命令只是FFmpeg众多功能的一部分,具体使用时需要根据实际需求选择相应的参数。你可以查阅FFmpeg的官方文档。

个人看法

起初,我使用ffmpeg的目的仅仅是为了把视频和音频合并,我发现ffmpeg在这方面真的很好用,但是,后来我的需求不多了,我也就放下ffmpeg了,因为有一些集成ffmpeg的软件真的很好用,当然如果你想体验原汁原味的视频处理,也可以学学ffmpeg的命令行。
ʕ•ᴥ•ʔ

ʕ ᵔᴥᵔ ʔ

ʕ•̀ ω • ʔ

ʕ•̀ o • ʔ

标签:视频,FFmpeg,音频,mp4,命令行,output,ffmpeg
From: https://www.cnblogs.com/lcyc/p/18184094

相关文章

  • FFmpeg开发笔记(二十二)FFmpeg中SAR与DAR的显示宽高比
    ​《FFmpeg开发实战:从零基础到短视频上线》一书提到:通常情况下,在视频流解析之后,从AVCodecContext结构得到的宽高就是视频画面的宽高。然而有的视频文件并非如此,如果按照AVCodecContext设定的宽高展示视频,会发现画面被压扁或者拉长了。比如该书第10章源码playsync.c在播放meg.vob时......
  • 【GUI软件】采集抖音博主的主页视频(可监控对标账号最新作品)
    目录一、背景介绍1.1爬取目标1.2演示视频1.3软件说明二、代码讲解2.1爬虫采集模块2.2软件界面模块2.3日志模块三、获取采集软件一、背景介绍1.1爬取目标您好!我是@马哥python说,一名10年程序猿。我用python开发了一个抖音爬虫采集软件,可自动按博主抓取其已发布视频数据。......
  • FFmpeg开发笔记(二十一)Windows环境给FFmpeg集成AVS3解码器
    ​AVS3是中国AVS工作组制定的第三代音视频编解码技术标准,也是全球首个已推出的面向8K及5G产业应用的视频编码标准。AVS工作组于2019年3月9日完成第三代AVS视频标准(AVS3)基准档次的制订工作,参考软件的测试表明,AVS3基准档次的性能比上一代标准AVS2和HEVC提升了约30%。libuavs3d是AV......
  • 一对一视频app开发,“锁”的合理使用很重要
    一对一视频app开发,“锁”的合理使用很重要,比如公平锁和非公平锁。一、基本概念公平锁:线程按照到来的先后顺序,排队等待使用资源。非公平锁:线程不一定按照先后顺序使用资源,而是可能出现“插队”的情况。ReentrantLock的公平锁和非公平锁synchronized是一种非公平锁,而Ree......
  • 一对一视频聊天源码,水印功能实现方案不容错过
    一对一视频聊天源码,水印功能实现方案不容错过一、基于原图生成水印图片(后端)这种方案就是将原图片添加水印之后生成了新图片,后续在一对一视频聊天源码前端页面进行展示是后端接口不返回原图片,而是返回带有水印的图片即可。这种方式最大的优点就是安全,因为水印图......
  • Qt/C++音视频开发74-合并标签图形/生成yolo运算结果图形/文字和图形合并成一个/水印滤
    一、前言在使用yolo做人工智能运算后,运算结果除了一个方框,还可能需要增加文字显示在对应方框上,以便标记是何种物体,比如显示是人还是动物,或者还有可能追踪人员,显示该人员的姓名。这种应用场景非常普遍,而且非常有必要,可以非常直观的直接看到对应移动的物体是什么。当然也有个缺点,就......
  • 一对一视频源码,实现限流对优化系统性能尤为重要
    一对一视频源码,实现限流对优化系统性能尤为重要,主要内容为滑动日志,令牌桶,漏桶三种限流算法的Java实现获取连接许可的接口一、滑动日志用一个有序集合来存储所有请求的时间戳,以空间换时间的方式来简化计算二、令牌桶利用延迟计算来维护令牌数量三、漏桶漏桶算法原理类似......
  • 一对一视频app开发,RabbitMQ数据隔离步骤详解
    一对一视频app开发,RabbitMQ数据隔离详解一、自动创建影子队列因为SpringAMQP中的中的关键方法是私有的,无法通过继承的方式进行实现对以配置好的队列进行扩展,所以需要自定义该类,来实现对自动创建影子队列,并和交换器进行绑定代码实现改造RabbitListenerAnnotationBeanP......
  • 一对一视频聊天源码,JDBC数据源隔离方法
    在开发一对一视频聊天源码时,数据隔离需要对DB,Redis,RabbitMQ进行数据隔离,接下来主要介绍一下JDBC数据源隔离方法。通过实现Spring动态数据源AbstractRoutingDataSource,通过ThreadLocal识别出来压测数据,如果是压测数据就路由到影子库,如果是正常流量则路由到主库,通过流量识别的改......
  • 一对一视频源码,Redis数据源还能这样隔离
    一对一视频源码,Redis数据源还能这样隔离通过ThreadLocal识别出来压测数据,自定义Redis的主键的序列化方式,如果是压测数据则在主键后面加上后缀,这样就可以通过不同主键将Redis数据进行隔离。一、实现key序列化publicclassKeyStringRedisSerializerextendsStringRedis......