前言
Mac 给 ffmpeg 配置环境变量:
执行命令行:
`open -e ~/.bash_profile
export PATH=$PATH:/Users/luna/Downloads/ffmpeg
source ~/.zshrc || source ~/.bash_profile // ~/.zshrc 或 ~/.bash_profile (取决于你使用的 shell)来永久地修改 PATH`
如果在执行source ~/.zshrc时报错,可以尝试先清下缓存再试。
运行命令: brew cleanup
常用命令:
open -e ~/.bash_profile
source ~/.bash_profile
echo $PATH
案例1
批量将 /Users/luna/Desktop/vlog/file 文件夹下的多个mp3文件和image.jpeg图片合成多个mp4文件
cd /Users/luna/Desktop/vlog/file
for audio in *.mp3 do ffmpeg -loop 1 -i image.jpeg -i "$audio" -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest "${audio%.*}.mp4" done
说明
-loop 1:使得图片在视频中循环播放-i image.jpeg:输入的图片文件-i "$audio":输入的音频文件-c:v libx264和-c:a aac:设置视频和音频的编码格式-tune stillimage:优化设置以适应静态图片-b:a 192k:设置音频的比特率-pix_fmt yuv420p:设置像素格式-shortest:使输出的视频长度与最短的输入流(这里是音频流)长度一致"${audio%.*}.mp4":输出的 mp4 文件的名称,文件名与输入的音频文件相同,只是扩展名改为 .mp4
案例2
将/Users/luna/Desktop/vlog/file 目录下多个mp3文件合成一个output.mp3
for f in *.mp3; do echo "file '$f'" >> mylist.txt; done ffmpeg -f concat -safe 0 -i mylist.txt -c copy output.mp3
说明
- 把每一个 mp3 文件的文件名添加到 mylist.txt 文件中,前面加上 "file " 这是为了创建一个 ffmpeg 可以识别的播放列表
-f concat:设置输入格式为 concat,这是 ffmpeg 的一个特殊的输入格式,用于连接多个文件-safe 0:关闭 ffmpeg 的安全检查,这是因为我们的输入文件列表来自于我们自己创建的 mylist.txt,我们知道它是安全的-i mylist.txt:设置输入文件为 mylist.txt,这个文件包含了我们要合并的所有 mp3 文件的文件名-c copy:复制输入流到输出,不进行转码,这样可以保持原始质量并减少处理时间output.mp3:设置输出文件名为 output.mp3
案例3
将output.mp3文件和image.jpeg 图片合成output.mp4
ffmpeg -loop 1 -i image.jpeg -i output.mp3 -c:v libx264 -tune stillimage -c:a aac -b:a 192k -pix_fmt yuv420p -shortest output.mp4
说明
ffmpeg:这是命令行工具 ffmpeg 的调用命令,用于处理多媒体内容,如音频,视频和图像。-loop 1:表示将输入的图片循环播放。-i image.jpeg:表示输入的图片文件是 image.jpeg。-i output.mp3:表示输入的音频文件是 output.mp3。-c:v libx264:表示将视频流(v)编码为 libx264 格式。libx264 是一种广泛使用的高效视频编码格式。-tune stillimage:对编码设置进行优化,使其适合静态图像输入。-c:a aac:表示将音频流(a)编码为 aac 格式。aac 是一种常用的音频编码格式。-b:a 192k:表示设置音频流的比特率为192千比特/秒,用来控制音频质量。-pix_fmt yuv420p:表示设置像素格式为 yuv420p。yuv420p 是一种常用的像素格式,它具有良好的兼容性。-shortest:这个参数的作用是将输出的视频长度与最短的输入流(在这个情况下,应该是音频流)保持一致。output.mp4:表示输出的视频文件名是 output.mp4,文件格式为 mp4。
案例4
将output.mp4截取前两分钟
ffmpeg -i output.mp4 -t 00:02:00 -c copy output2.mp4
说明
-i output.mp4:-i参数后面是输入文件的名称,这里的输入文件是output.mp4。-t 00:02:00:-t参数后面是你想从输入文件中提取的内容的长度。在这里,我们设定提取的长度为两分钟。-c copy:-c参数后面跟的是你想用于输出文件的编解码器。使用copy作为参数值表示我们想直接复制输入文件的编解码器,也就是说,不对输入的视频或音频流进行转码。output2.mp4:这是输出文件的名称。