FFMPEG安装

发布于:2024-07-05 ⋅ 阅读:(15) ⋅ 点赞:(0)

ffmpeg下载地址

http://ffmpeg.org/download.html#build-windowsicon-default.png?t=N7T8http://ffmpeg.org/download.html#build-windows

 下载完成后直接解压,解压后设置bin目录到环境变量的Path中

命令行使用ffmpeg -version查看是否生效

ffmpeg基础使用 - 简书参考ffmpeg常用命令[https://blog.csdn.net/newchenxf/article/details/51384360]ffmpeg参数中文详细解释[ht...icon-default.png?t=N7T8https://www.jianshu.com/p/ddafe46827b7

FFmpeg功能命令汇总 - 简书前言 如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能,Ric...icon-default.png?t=N7T8https://www.jianshu.com/p/a035056cbbf9

使用ffmpeg压缩和拼接音频 - 简书0.工程需求 很多商务人士在开会的过程中,会做录音。录音可以用于及时地复习和回顾,避免忘记会议中的内容。本文作者会展示一个完整的使用ffmpeg压缩和拼接音频的例子。在例子中...icon-default.png?t=N7T8https://www.jianshu.com/p/97441b1eb326?utm_campaign=maleskine&utm_content=note&utm_medium=seo_notes&utm_source=recommendation

Android 音视频开发(一):PCM 格式音频的播放与采集 - 简书什么是 PCM 格式 声音从模拟信号转化为数字信号的技术,经过采样、量化、编码三个过程将模拟信号数字化。 采样顾名思义,对模拟信号采集样本,该过程是从时间上对信号进行数字化,...icon-default.png?t=N7T8https://www.jianshu.com/p/a59e8f51d6f2

使用ffmpeg提取视频中的画面

ffmpeg -i 测试视频.mp4 -ss 00:10:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg

ffmpeg -i changshan.mp4 -r 30 -q:v 2 -f image2 pic-%03d.jpeg
-ss 指定开始时间

-t 指定从开始时间需要提取画面的时间段,即20秒开始设置为10则提取到30s

-r  表示每一秒提取多少帧

-q:v 表示存储jpeg的图像质量,一般2是高质量

image2  表示图片文件?

截取视频片段

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

-ss  指定截取视频起始时间点

-t  指定截取视频从截取起始时间点截取的时间段

-i  指定截取输入目标视频

提取视频中的音频数据,音频数据格式可使用命令  ffmpeg -i input.mp4查看

ffmpeg -i input.mp4 -acodec copy -vn output2.aac

提取视频中的纯视频文件,不包含音频

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

-an 不处理音频

使用ffmpeg直接下载视频

ffmpeg -i  视频url    output.mp4(保存的视频文件名称)  当前测试可下载m3u8文件

合成视频文件与音频文件

ffmpeg -i outputzixuan.mp4 -i 01.mp3 -vcodec copy -acodec copy -shortest hecheng.mp4
 

-shortest  使用音频或视频中最小长度作为总长度

fmpeg -i video.mp4 -ss 00:04:00 -i audio.mp3 -c:v copy -af apad -shortest output.mkv

-ss  指定音频起始时间为00:04:00

-c:v copy -af apad  超长无声填充???

压缩视频文件,压缩码率

ffmpeg -i hecheng.mp4 -b:v 5000k yasuo1.mp4

-b:v  指视频码率

-b:a  指音频码率

合成两个视频

ffmpeg -i 001.mp4 -i 002.mp4 -filter_complex "[0:v:0][0:a:0][1:v:0][1:a:0]concat=n=2:v=1:a=1[v][a]" -map "[v]" -map "[a]" output.mp4

  • -i input1.mp4 -i input2.mp4: 输入的两个视频文件。

  • -filter_complex: 指定复杂的视频和音频过滤器。

  • [0:v:0]: 第一个文件的视频流。

  • [0:a:0]: 第一个文件的音频流。

  • [1:v:0]: 第二个文件的视频流。

  • [1:a:0]: 第二个文件的音频流。

  • concat=n=2:v=1:a=1: 将视频和音频流按顺序连接。

  • [v]: 输出的视频流别名。

  • [a]: 输出的音频流别名。

  • -map "[v]": 指定输出文件的视频流。

  • -map "[a]": 指定输出文件的音频流。

  • output.mp4: 输出文件的名称。

确保输入的视频格式和编码是兼容的,否则可能需要进行转码操作。如果视频的分辨率或帧率不同,可能还需要添加-s(设置分辨率)和-r(设置帧率)等选项。

合并多个不同格式的视频,首先转码为ts文件,然后合成

MP4文件不支持concat命令

ffmpeg -i yasuo.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb tsyasuo.ts
ffmpeg -i output1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb tsoutput1.ts
ffmpeg -i yasuo2.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb tsyasuo.ts
ffmpeg -i "concat:tsyasuo.ts|tsoutput1.ts|tsyasuo2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc output36.mp4

将图片合并为视频

ffmpeg -r 30 -f image2 -i pic-%4d.jpeg  video.mp4

-r  帧率,注意改参数必须在ffmpeg后面,否则不生效

旋转视频

ffmpeg -i 需要旋转的视频.mp4 -metadata:s:v rotate="360"(旋转角度) -codec copy 输出视频.mp4

音频MP3文件转pcm文件

大段数据格式
ffmpeg -i test.mp3 -f s16be -ar 16000 -ac 1 -acodec pcm_s16be pcm16k.pcm
小端数据格式
ffmpeg -i test.mp3 -f s16le -ar 16000 -ac 1 -acodec pcm_s16le pcm16k.pcm
说明:
-acodec pcm_s16be:输出pcm格式,采用signed 16编码,字节序为大尾端(小尾端为le);
-ar 16000: 采样率为16000
-ac 1: 声道数为1

上面的命令不好使,需要知道采样率与声道数

ffmpeg -y -i test.mp3 -acodec pcm_s16le -f s16le -ac 2 -ar 16000 16k.pcm

pcm转mp3

ffmpeg -y -f s16be -ac 2 -ar 16000 -acodec pcm_s16le -i 16k.pcm new_mp3.mp3

//该命令验证正常

ffmpeg -y -ac 2 -ar 48000 -f s16le -i 02.pcm -c:a libmp3lame -q:a 2 result2.mp3

参数 说明
-y 允许覆盖
-f s16le 强制文件格式
-ac 2 双声道
-ar 16000 采样率
-acodec pcm_s16le 编码器
-i test.mp3 源文件

将大视频切割为多个视频片段脚本,可以在保存成为文件后再git bash中执行

#!/bin/bash
#脚本中注意换行符问题\r\n与\n
#开始时间单位秒
startTime=0
#结束时间单位秒
endTime=0
#视频长度单位秒
length=5190
i=0
while [ $endTime -le $length ]; do
    #statements
    i=$[$i+1]
    #分段间隔时间单位秒,480替换为对应要切割的时间段
    endTime=$[$startTime+480]
    #注意修改文件名名称及输出文件名称
    ffmpeg -i ./autotestvideo.mp4 -ss $startTime -to $endTime -acodec copy -vcodec copy $i.mp4
    startTime=$[endTime]
 
 
done