ffmpeg简单使用

官网:https://ffmpeg.org

FFmpeg 是领先的多媒体框架,能够解码、编码、 转码、复用、解复用、流、过滤和播放 几乎所有人类和机器创建的东西

常用参数

-i 设定输入流 
-f 设定输出格式 
-y 覆盖输出文件
-ss 开始时间 
-b 设定视频流量(码率),默认为200Kbit/s 
-r 设定帧速率,默认为25 
-s 设定画面的宽与高 
-aspect 设定画面的比例 
-pix_fmt 设置色彩空间
-vn 不处理视频 
-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器 
-ar 设定音频采样率 
-ac 设定声音的Channel数 
-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器 
-an 不处理音频

用法

视频转换格式

ffmpeg -i input.avi output.mp4

ffmpeg -i input.webm -vf "scale=trunc(iw/2)*2:trunc(ih/2)*2" output.mp4
这里 vf 参数的意义是,将视频的长宽强制转换为偶数,否则可能遇到“width not divisible by 2”的问题。

ffmpeg -y -i 2.flv  -vcodec copy -acodec copy -vbsf h264_mp4toannexb 2.mp4
-y覆盖输出文件  -vcodec copy使用与输入流相同的视频编解码器 -vbsf指定要应用的比特流滤镜

视频编码格式转换

ffmpeg -i input.mp4 -vcodec h264 output.mp4
ffmpeg -i input.mp4 -vcodec mpeg4 output.mp4
ffmpeg -i input.mp4 -c:v libx265 output.mp4
ffmpeg -i input.mp4 -c:v libx264 output.mp4

视频提取

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

视频剪切

ffmpeg -ss 00:00:15 -t 00:00:05 -i input.mp4 -vcodec copy -acodec copy output.mp4
    -ss表示开始切割的时间
    -t表示要切多少。上面就是从开始,切5秒钟出来。

为视频添加logo

ffmpeg -i input.mp4 -i logo.png -filter_complex overlay output.mp4
    -filter_complex overlay 是用于视频处理的 FFmpeg 命令中的一部分,它用于将一个视频流叠加(覆盖)在另一个视频流之上。这是一个常见的视频编辑和处理操作,通常用于创建叠加文字、图像、水印或其他视频元素的效果

视频叠加

ffmpeg -i input_video.mp4 -i overlay_video.mp4 -filter_complex "[0:v][1:v]overlay=100:200" output_video.mp4
    [0:v] 表示主视频的视频流,[1:v] 表示叠加视频的视频流。
    overlay=x:y 表示将叠加视频叠加在主视频上,其中 x 和 y 是坐标值,用于指定叠加视频的位置。

绿屏抠像

ffmpeg -i beijin.mp4 -i green_removed.mp4 -filter_complex "[1:v]chromakey=0x00FF00:0.1:0.2[v1];[0:v][v1]overlay=10:10" -c:a copy output.mp4
    0x00FF00:这是绿屏的颜色。在这个例子中,它表示绿色,使用十六进制表示法。你可以根据你的绿屏颜色来替换这个值。
    0.1:这是色度阈值。它定义了颜色抠像的精确度。值越小,抠像越精确,但可能会产生锯齿状的边缘。通常,你可以尝试不同的值以找到最佳的效果。
    0.2:这是亮度阈值。它定义了颜色的亮度范围,用于抠像。与色度阈值一样,你可以根据需要调整它。
    这些参数一起帮助chromakey滤镜从视频中去除绿屏(或其他特定颜色的背景),以便进一步处理。你可以根据实际情况调整这些参数,以获得最佳的抠像效果。

修改分辨率

#将输入的1920x1080缩小到960x540输出:
ffmpeg -i input.mp4 -vf scale=960:540 output.mp4
//ps: 也可写成 scale=960:-1, ffmpeg会通知缩放滤镜在输出时保持原始的宽高比

提取音频

ffmpeg -i 222.mp4 -acodec aac -vn output.aac

音频转换格式

ffmpeg -i input_audio.mp3 output_audio.wav

抓取视频的一些帧,存为jpeg图片

ffmpeg -i input.mp4 -ss 00:00:20 -t 10 -r 1 -q:v 2 -f image2 pic-%03d.jpeg
   -r 表示每一秒几帧
   -q:v表示存储jpeg的图像质量,一般2是高质量。
   -ss表示开始时间
   -t表示共要多少时间。

统一视频格式和编码等信息

ffmpeg -i input.mp4 -s 1080x1920 -r 30 -b:v 2000k -b:a 192k -c:v libx264 -c:a aac -pix_fmt yuv420p -y output.mp4
    -pix_fmt 设置色彩空间

直播

#直播推流
ffmpeg -re -i 2.mp4 -c:v copy -c:a aac -b:a 192k -strict -2 -f flv '推流地址'
    -re 以原始帧速率读取输入
    -b:a 设置音频输出码率
    -strict 参数用于指定音频编码器和视频编码器的严格性级别。-2 表示一个特定的级别,通常用于告诉 FFmpeg 使用较宽松的设置,以便兼容一些较旧的编解码器。
#直播推流加背景音乐(混声)
ffmpeg -re -i 2.mp4 -stream_loop -1 -i Track03.mp3 -filter_complex [0:a][1:a]amix -c:v copy -c:a aac -b:a 192k -strict -2 -f flv '推流地址'
    -stream_loop -1 设置循环播放输入流的次数,-1表示无限循环
    -filter_complex滤镜
    [0:a] 和 [1:a] 是音频输入流的标签,它们分别代表输入文件的第一个和第二个音频流。然后,amix 是混音滤镜,用于混合这两个音频流。混音操作会将这两个音频流合并为一个,通常是通过叠加它们或者按照一定的音量比例混合。
ffmpeg -re -i 2.mp4 -stream_loop -1 -i Track03.mp3 -filter_complex "[0:a]volume=0.5[a0];[1:a]volume=0.8[a1];[a0][a1]amix" -ac 2 -c:v copy -c:a aac -b:a 192k -strict -2 -f flv '推流地址'
    [0:a]volume=0.5[a0] 表示将第一个输入文件的音频流的音量设置为原来的一半,并将其输出为 [a0]。
    [1:a]volume=0.8[a1] 表示将第二个输入文件的音频流的音量设置为原来的 80%,并将其输出为 [a1]。
    [a0][a1]amix 表示将经过音量调整的两个音频流混合成一个。
    -ac 2 参数用于指定输出文件的音频通道数,这里设置为 2 表示输出文件为双声道音频
#背景音乐列表循环播放
ffmpeg -re -i 2.mp4 -stream_loop -1 -f concat -safe 0 -i music_list.txt -filter_complex "[0:a]volume=0.5[a0];[1:a]volume=0.8[a1];[a0][a1]amix" -shortest -ac 2 -c:v copy -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
    -f concat 表示使用文件连接协议。
    -safe 0 允许使用绝对文件路径。
    -shortest 会在最短输入流结束后停止输出,从而确保输出流的持续时间与最短输入流相匹配。
    -i music_list.txt 指定输入文件,即包含文件列表的文本文件。
  文件列表格式:
    cat music_list.txt
    file '/root/music/track5.mp3'
    file '/root/music/track07.mp3'
    file '/root/music/track06.mp3'
#视频素材和音乐素材循环播放
ffmpeg -re -stream_loop -1 -f concat -safe 0 -i video_list.txt -stream_loop -1 -f concat -safe 0 -i music_list.txt -filter_complex "[0:a]volume=0.5[a0];[1:a]volume=0.8[a1];[a0][a1]amix" -ac 2 -c:v copy -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
     [0:a]volume=0.5[a0];[1:a]volume=0.8[a1]混音时调整声音大小比例
#视频素材和音乐素材循环播放消除原视频声音
ffmpeg -re -stream_loop -1 -an -f concat -safe 0 -i video_list.txt -stream_loop -1 -f concat -safe 0 -i music_list.txt -ac 2 -c:v copy -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
#给视频添加时间
ffmpeg -re -stream_loop -1 -i /root/video/2.mp4 -vf "drawtext=text='%{localtime\:%H}\:%{localtime\:%M}\:%{localtime\:%S}':x=100:y=500:fontsize=30:fontcolor=white" -ac 2 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
    -vf 参数用于指定视频滤镜(Video Filter)。视频滤镜是一种用于对视频进行各种图像处理操作的工具,例如旋转、裁剪、调整亮度、对比度、添加水印、文本叠加等。 -vf 参数后跟着一个包含一个或多个视频滤镜的字符串,这些滤镜将按照给定的顺序应用于输入视频流。
    drawtext:添加文本水印。
#视频素材和音乐素材循环播放并且加时间水印
ffmpeg -re -stream_loop -1 -f concat -safe 0 -i video_list.txt -stream_loop -1 -f concat -safe 0 -i music_list.txt -filter_complex "[0:v]drawtext=text='%{localtime\:%H}\:%{localtime\:%M}\:%{localtime\:%S}':x=100:y=500:fontsize=30:fontcolor=white;[0:a][1:a]amix=inputs=2"  -ac 2 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
    =inputs=2 是告诉 amix 滤镜混合前两个输入流,不加默认混合所有输入流。
#视频素材和音乐素材循环播放并且加时间水印修改字体
ffmpeg -re -stream_loop -1 -f concat -safe 0 -i video_list.txt -stream_loop -1 -f concat -safe 0 -i music_list.txt -filter_complex "[0:v]drawtext=text='%{localtime\:%H}\:%{localtime\:%M}\:%{localtime\:%S}':x=100:y=500:fontsize=30:fontfile=/root/DS-DIGIT-4.ttf:fontcolor=white;[0:a][1:a]amix=inputs=2"  -ac 2 -c:v libx264 -c:a aac -b:a 192k -strict -2 -f flv "推流地址"
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,752评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,100评论 3 387
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,244评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,099评论 1 286
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,210评论 6 385
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,307评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,346评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,133评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,546评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,849评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,019评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,702评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,331评论 3 319
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,030评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,260评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,871评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,898评论 2 351

推荐阅读更多精彩内容