FFmpeg

FFmpeg检测透明通道

检测透明通道 #

FFmpeg命令 #

$ ffmpeg -v error -i 123.mp4 -vf "select='eq(n,0)', alphaextract" -f null /dev/null

[Parsed_alphaextract_1 @ 0x7fe8f5208100] Requested planes not available.
[Parsed_alphaextract_1 @ 0x7fe8f5208100] Failed to configure input pad on Parsed_alphaextract_1
[vf#0:0 @ 0x7fe8f5005f40] Error reinitializing filters!
Failed to inject frame into filter network: Invalid argument
Error while filtering: Invalid argument
[out#0/null @ 0x7fe8f5004900] Nothing was written into output file, because at least one of its streams received no packets.

判断条件 #

如果出现以上报错信息,则说明视频中没有透明通道。

...

ffmpeg规范音频的响度

通过FFmpeg内置滤镜、手动调整音量、或者ffmpeg-normalize实现对响度的控制。

内置归一化滤波器 #

loudnorm:通过EBU R.128进行响度标准化。您可以设置积分的体积目标,体积范围目标或最大真实峰。建议用于发布音频和视频,并被世界各地的广播公司使用。

...

ffmpeg在特定的时间混合一个或多个音频

使用FFmpeg中的adelay和amix滤镜给音频做混音

在30秒后混合1个音频

ffmpeg -i 1-1.mp3 -i 2.mp3 -filter_complex "[1]adelay=delays=30s:all=1[aud1];[0][aud1]amix=inputs=2" -vsync 2 -y 3.mp3

在30秒后混合2个音频

ffmpeg -i 1-1.mp3 -i 2.mp3 -i 3.mp3 -filter_complex "[1]adelay=delays=30s:all=1[aud1];[2]adelay=delays=30s:all=1[aud2];[0][aud1][aud2]amix=inputs=3" -vsync 2 -y 4.mp3

混合多个参照混合2个的命令修改下即可

...

FFmpeg 水印

图片水印、文字水印、画中画

图片水印 #

ffmpeg -i input.mp4 -vf "movie=wenzi.png[watermark];[in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out] " output.mp4

-i :一般表示输入

input.mp4:这里表示要处理的视频源

-vf:滤镜相关,视频裁剪,水印等等操作都需要它完成

...

ffprobe详解

ffprobe是ffmpeg提供的三大工具之一,用来查看音视频文件的各种信息,比如:封装格式、音频/视频流信息、数据包信息等。

ffprobe的源码是ffprobe.c,开发过程中如果想获取ffprobe查看的信息,可以通过分析源码,获得对应字段。

...

ffmpeg 删除音视频文件中的元数据

清除mp3文件中自带的专辑(album),艺术家(artist),流派(genre)等元数据。

ffmpeg -i "test.mp3" -b:a 320k -map_metadata -1 -y "out.mp3"

-map_metadata -1 表示清除所有元数据

ffmpeg 裁剪视频

ffmpeg命令裁剪视频,一般用于裁剪黑边

ffmpeg_HJ9roRU2Q.png

说明 #

FFmpeg裁剪视频.png

命令 #

ffmpeg -i input.mp4 -vf crop=iw/3:ih:0:0 output.mp4
ffmpeg -i input.mp4 -vf crop=iw/3:ih:iw/3:0 output.mp4
ffmpeg -i input.mp4 -vf crop=iw/3:ih:iw/3*2:0 output.mp4

ffmpeg加水印

FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。

...

ffmpeg 9:16和16:9互相转换

​今天搜集了一下16:9和9:16相互转换的命令。将多余的部分用模糊背景填充,感觉比直接加黑边好很多。

16:9转9:16 #

命令 #

ffmpeg -i input.mp4 -lavfi "[0:v]scale=256/81*iw:256/81*ih,boxblur=luma_radius=min(h\,w)/40:luma_power=3:chroma_radius=min(cw\,ch)/40:chroma_power=1[bg];[bg][0:v]overlay=(W-w)/2:(H-h)/2,setsar=1,crop=w=iw*81/256"  output.mp4

效果 #

16-9.jpg

...

ffmpeg输出苹果编码格式prores

ffmpeg输出苹果编码格式prores。分辨率1080p,25帧,5个音轨。

ffmpeg -i 06无字幕mp4-使用此视频的画面.mp4 -i 06有字幕-使用此视频的国际音轨.mov -map 0:v -s 1920x1080 -r 25 -c:v prores_ks -profile:v 3 -pix_fmt yuv422p10le -map 1:1 -acodec pcm_s24le -ar 48000 -ac 1 -map 1:2 -acodec pcm_s24le -ar 48000 -ac 1 -map 1:3 -acodec pcm_s24le -ar 48000 -ac 1 -map 1:4 -acodec pcm_s24le -ar 48000 -ac 1 -map 1:5 -acodec pcm_s24le -ar 48000 -ac 1 06-out.mov