ffmpeg使用

ffmpeg使用
 
去除水印
ffmpeg -i 1.mp4 -vf "delogo=x=50:y=640:w=180:h=60:show=0" -c:a copy 2.mp4
 
剪切片段
ffmpeg -i input.mp4 -ss 1:05 -t 10 output.mp4

-ss 5指定从输入视频第1:05秒开始截取,-t 10指明最多截取10秒。

但是上面的命令可能会比较慢,更好的命令如下:

ffmpeg -ss 1:05 -i input.mp4 -t 10 -c:v copy -c:a copy output.mp4

-ss 1:05放到-i前面,与原来的区别是,这样会先跳转到第1:05秒在开始解码输入视频,而原来的会从开始解码,只是丢弃掉前1:05秒的结果。
-c:v 和 -c:a分别指定视频和音频的编码格式。
-c:v copy -c:a copy标示视频与音频的编码不发生改变,而是直接复制,这样会大大提升速度

音频合并

ffmpeg64.exe -i "concat:123.mp3|124.mp3" -acodec copy output.mp3
 
视频合并
ffmpeg64.exe -i "concat:123.mp4|124.mp4" -c copy output.mp4
或者创建一个文本文件filelist.txt,写入文件名
file 'sp1.mp4'
file 'sp2.mp4'
file 'sp3.mp4'
保存后输入
ffmpeg -f concat -i filelist.txt -c copy output.mp4
可能出现Unsafe file name,需要加入-safe 0
ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4
 
调整视频速率
调整视频速率的原理为:修改视频的pts,dts
此过程由于不用进行解码编码,所以费时很少
 
ffmpeg -i input.mkv -an -filter:v "setpts=0.5*PTS" output.mkv

注意:

  • 调整速度倍率范围[0.25, 4]
  • 如果只调整视频的话最好把音频禁掉
  • 对视频进行加速时,如果不想丢帧,可以用-r 参数指定输出视频FPS
ffmpeg -i input.mkv -an -r 60 -filter:v "setpts=2.0*PTS" output.mkv 调整音频速率
简单的方法是调整音频采样率,但是这种方法会改变音色,
一般采用通过对原音进行冲采样,差值等方法。
 
ffmpeg -i input.mkv -filter:a "atempo=2.0" -vn output.mkv

注意:

  • 倍率调整范围为[0.5, 2.0]
  • 如果需要调整4倍可采用以下方法:
ffmpeg -i input.mkv -filter:a "atempo=2.0,atempo=2.0" -vn output.mkv 同时调整
ffmpeg -i input.mkv -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mkv
 
 
 
PS:   ffplay 播放没有声音的问题
有些在Windows没有声音,cmd使用出现
SDL_OpenAudio (1 channels, 44100 Hz): WASAPI can't initialize audio client
No more combinations to try, audio open failed
[swscaler @ 000000000b90abc0] deprecated pixel format used, make sure you did se
t range correctly
 
解决方法:在cmd设置 set SDL_AUDIODRIVER=directsound可以解决
 
 
 

翻转和旋转

参考链接:https://www.jianshu.com/p/3c8c4a892f3c
来源:简书

水平翻转语法: -vf hflip
ffplay -f lavfi -i testsrc -vf hflip
垂直翻转语法:-vf vflip
ffplay -f lavfi -i testsrc -vf vflip

语法: ffplay -i testsrc -vf transpose={0,1,2,3} output.mp4

0:逆时针旋转90°然后垂直翻转
1:顺时针旋转90°
2:逆时针旋转90°
3:顺时针旋转90°然后水平翻转

指定角度90° : ffplay -i testsrc -vf rotate=PI/2 output.mp4

 

ffmpeg 直接将m3u8转成mp4:

ffmpeg -i “http://xxxxxx/video/movie.m3u8” -vcodec copy -acodec copy -absf aac_adtstoasc output.mp4

 

其中 http://xxxxxx/video/movie.m3u8 视频的m3u8地址列表, output.mp4 为输出mp4的文件名

参考链接:https://blog.csdn.net/guojianwei2011/article/details/83242789

 

从视频中抽取音频

为了从视频文件中抽取音频,直接加一个 -vn 参数就可以了:

ffmpeg -i video.mp4 -vn audio.mp3

这会让命令复用原有文件的比特率,一般来说,使用 -ab (音频比特率)来指定编码比特率是比较好的:

ffmpeg -i video.mp4 -vn -ab 128k audio.mp3

一些常见的比特率有 96k, 128k, 192k, 256k, 320k (mp3也可以使用最高的比特率)。

其他的一些常用的参数比如 -ar (采样率: 22050, 441000, 48000), -ac (声道数), -f (音频格式, 通常会自动识别的). -ab 也可以使用 -b:a 来替代. 比如:

ffmpeg -i video.mov -vn -ar 44100 -ac 2 -b:a 128k -f mp3 audio.mp3

音频和视频合成

使用的条件是:视频文件中没有音频

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental output.mp4

video.mp4,audio.wav分别是要合并的视频和音频,output.mp4是合并后输出的音视频文件。

下面的命令是用audio音频替换video中的音频

ffmpeg -i video.mp4 -i audio.wav -c:v copy -c:a aac -strict experimental -map 0:v:0 -map 1:a:0 output.mp4



参考链接:https://www.zhihu.com/question/300182407/answer/722622224
 
下载m3u8格式的视频
需要用到视频页面的m3u8文件的url,文件里面有多个.ts后缀的内容,
ffmpeg -i https://xxxxxxx/index.m3u8 -c copy xxxx.mp4
或者 ffmpeg -i https://xxxxxxx/index.m3u8 xxxx.mp4
 
速度慢的话用
ffmpeg -i https://xxxxxxx/index.m3u8 -c copy -bsf:a aac_adtstoasc xxxx.mp4
 
如果不想下载,直接播放的话用
ffplay -i https://xxxxxxx/index.m3u8
 
有加密的话参考
 
調整音頻音量
當前音量的n倍
ffmpeg -i xxx.mp3 -filter "volume=n" output.mp3
當前音量分貝數加減n
ffmpeg -i xxx.mp3 -filter "volume=ndB" output.mp3
posted @ 2022-06-05 17:40  hanzhang  阅读(89)  评论(0编辑  收藏  举报