⑴ 我想用ffmpeg命令行转换一个视频文件,视、音频编码格式不变,只是将画面旋转90度,请问命令行该如何写
在你的转码命令里面添加上-vf rotate=PI/2或者-vf rotate=3*PI/2,例如
ffmpeg -i E:\ffmpeg\test.mp4 -y -vf rotate=PI/2 E:\ffmpeg\dest1.mp4
⑵ FFMPEG进阶系列03-ffmpeg转码专题(中)x264参数详解
更多音视频知识请点击 : 专注音视频开发
x264编码参数简介
x264.exe --fullhelp 打印
用于简化命令行而设计的系统。各预设模板所对应的参数设定,详见帮助:x264.exe --fullhelp.
21. frame-packing
默认: 20
根据给定的半径对量化曲线进行高斯模糊(gaussian blur)。分配给各帧的量化值在时间方向上与相邻几帧相模糊,以限制量化值波动。
当mb-tree开启时,cplxblur无效。
参见: --qcomp, --qblur, --no-mbtree
手动忽略标准码率控制。选择一个文件,强制指定某些帧的量化值和帧类型。格式为“帧号 帧类型 量化值”。例子:
也叫--subme
默认: 未设定
这些选项在输出流中设定标志,可以被解码工具读取并做相应处理。值得注意的是,大多数选项在大多数情境下都是无意义 的,所以通常都被解码软件所忽略。
参见: Gamma Correction
推荐值: 默认,除非你知道源用的是哪种
'auto'会自动根据输出文件的文件名来挑选。
⑶ ffmpeg-python中文文档(三)——API参考
表示上游节点的传出边缘;可以用来创建更多的下游节点。
输入文件 URL (ffmpeg -i option)
在一个 ffmpeg 命令行中包含所有给定的输出
输出文件地址
不询问就覆盖输出文件(ffmpeg -y 选项)
在指定文件上运行 ffprobe 并返回输出的 JSON 表示。
构建用于调用 ffmpeg 的命令行。
构建要传递给 ffmpeg 的命令行参数。
为提供的节点图调用 ffmpeg 。
参数
为提供的节点图异步调用 ffmpeg。
参数
例子
运行和流式输入:
运行并捕获输出:
使用 numpy 逐帧处理视频:
通过重新混合颜色通道来调整视频输入帧。
连接音频和视频流,将它们一个接一个地连接在一起。
筛选器适用于同步视频和音频流的片段。所有段必须具有每种类型的相同数量的流,这也是输出时的流数。
参数
裁剪输入视频。
参数
在输入图像上绘制一个彩色框。
参数
使用 libfreetype 库从视频顶部的指定文件中绘制文本字符串或文本。
要启用此过滤器的编译,您需要使用 --enable-libfreetype . 要启用默认字体回退和字体选项,您需要使用 --enable-libfontconfig . 要启用 text_shaping 选项,您需要使用 --enable-libfribidi
参数
· box - 用于使用背景颜色在文本周围绘制一个框。该值必须是 1(启用)或 0(禁用)。框的默认值为 0。
· boxborderw – 使用 boxcolor 设置要在框周围绘制的边框宽度。boxborderw 的默认值为 0。
· boxcolor - 用于在文本周围绘制框的颜色。有关此选项的语法,请查看 ffmpeg-utils 手册中的“颜色”部分。 boxcolor 的默认值为“white”。
· line_spacing – 使用 box 设置要在框周围绘制的边框的行间距(以像素为单位)。line_spacing 的默认值为 0。
· borderw – 使用边框颜色设置要在文本周围绘制的边框宽度。边框的默认值为 0。
· bordercolor – 设置用于在文本周围绘制边框的颜色。有关此选项的语法,请查看 ffmpeg-utils 手册中的“颜色”部分。边框颜色的默认值为“黑色”。
· 扩展- 选择文本的扩展方式。可以是 none、strftime(已弃用)或 normal(默认)。有关详细信息,请参阅下面的文本扩展部分。
· basetime – 设置计数的开始时间。值以微秒为单位。仅适用于已弃用的 strftime 扩展模式。要在正常扩展模式下进行模拟,请使用 pts 函数,提供开始时间(以秒为单位)作为第二个参数。
· fix_bounds - 如果为 true,检查并修复文本坐标以避免剪切。
· fontcolor - 用于绘制字体的颜色。有关此选项的语法,请查看 ffmpeg-utils 手册中的“颜色”部分。fontcolor 的默认值为“黑色”。
· fontcolor_expr – 与文本相同的扩展字符串以获得动态字体颜色值。默认情况下,此选项具有空值并且不被处理。设置此选项时,它会覆盖 fontcolor 选项。
· font - 用于绘制文本的字体系列。默认情况下无。
· fontfile – 用于绘制文本的字体文件。必须包含路径。如果禁用了 fontconfig 支持,则此参数是必需的。
· alpha – 绘制应用 alpha 混合的文本。该值可以是介于 0.0 和 1.0 之间的数字。该表达式也接受相同的变量 x、y。默认值为 1。请参阅 fontcolor_expr。
· fontsize – 用于绘制文本的字体大小。字体大小的默认值为 16。
· text_shaping – 如果设置为 1,则在绘制文本之前尝试对文本进行整形(例如,反转从右到左文本的顺序并加入阿拉伯字符)。否则,只需按照给定的方式绘制文本。默认为 1(如果支持)。
· ft_load_flags –用于加载字体的标志。这些标志映射了 libfreetype 支持的相应标志,并且是以下值的组合:
默认值为“默认”。有关更多信息,请参阅 FT_LOAD_* libfreetype 标志的文档。
· shadowcolor – 用于在已绘制文本后面绘制阴影的颜色。有关此选项的语法,请查看 ffmpeg-utils 手册中的“颜色”部分。shadowcolor 的默认值为“黑色”。
· shadowx – 文本阴影位置相对于文本位置的 x 偏移量。它可以是正值或负值。默认值为“0”。
· shadowy – 文本阴影位置相对于文本位置的 y 偏移量。它可以是正值或负值。默认值为“0”。
· start_number – n/frame_num 变量的起始帧号。默认值为“0”。
· tabsize - 用于呈现选项卡的空格数大小。默认值为 4。
· timecode – 以“hh:mm:ss[:;.]ff”格式设置初始时间码表示。它可以带或不带文本参数使用。必须指定 timecode_rate 选项。
· rate – 设置时间码帧率(仅限时间码)。
· timecode_rate – 的别名rate。
· r – 的别名rate。
· tc24hmax – 如果设置为 1,时间码选项的输出将在 24 小时左右回绕。默认值为 0(禁用)。
· text -- 要绘制的文本字符串。文本必须是 UTF-8 编码字符序列。如果没有使用参数 textfile 指定文件,则此参数是必需的。
· textfile – 包含要绘制的文本的文本文件。文本必须是 UTF-8 编码字符序列。如果没有使用参数 text 指定文本字符串,则此参数是必需的。如果同时指定了 text 和 textfile,则会引发错误。
· reload – 如果设置为 1,文本文件将在每一帧之前重新加载。一定要自动更新它,否则它可能会被部分读取,甚至失败。
· x – 指定将在视频帧内绘制文本的偏移量的表达式。它相对于输出图像的左边框。默认值为“0”。
· y - 指定将在视频帧内绘制文本的偏移量的表达式。它相对于输出图像的上边框。默认值为“0”。有关接受的常量和函数的列表,请参见下文。
表达式常量:
x 和 y 的参数是包含以下常量和函数的表达式:
· dar:输入显示纵横比,同 (w / h) * sar
· hsub:水平色度子样本值。例如,对于像素格式“yuv422p”,hsub 为 2,vsub 为 1。
· vsub:垂直色度子样本值。例如,对于像素格式“yuv422p”,hsub 为 2,vsub 为 1。
· line_h:每个文本行的高度
· lh:别名为line_h.
· main_h:输入高度
· h: 的别名main_h。
· H: 的别名main_h。
· main_w:输入宽度
· w: 的别名main_w。
· W: 的别名main_w。
· ascent:对于所有渲染的字形,从基线到用于放置字形轮廓点的最高/上网格坐标的最大距离。这是一个正值,因为网格的 Y 轴向上。
· max_glyph_a: 的别名ascent。
· 下降:对于所有渲染的字形,从基线到用于放置字形轮廓点的最低网格坐标的最大距离。由于网格的方向,这是一个负值,Y 轴向上。
· max_glyph_d: 的别名descent。
· max_glyph_h:最大字形高度,即渲染文本中包含的所有字形的最大高度,相当于上升-下降。
· max_glyph_w:最大字形宽度,即渲染文本中包含的所有字形的最大宽度。
· n:输入帧数,从0开始
· rand(min, max):返回一个包含在 min 和 max 之间的随机数
· sar:输入样本纵横比。
· t:时间戳,以秒为单位,如果输入时间戳未知,则为 NAN
· text_h:渲染文本的高度
· th: 的别名text_h。
· text_w:渲染文本的宽度
· tw: 的别名text_w。
· x:绘制文本的 x 偏移坐标。
· y:绘制文本的 y 偏移坐标。
这些参数允许 x 和 y 表达式相互引用,因此您可以例如指定 y=x/dar.
应用自定义过滤器。
filter通常由更高级别的过滤器函数使用,例如 hflip ,但如果缺少过滤器实现 ffmpeg-python ,您可以 filter 直接调用以 ffmpeg-python 将过滤器名称和参数逐字传递给 ffmpeg 。
参数
函数名称后缀_是为了避免与标准 pythonfilter 函数混淆。
例子
替代名称 filter ,以免与内置的 pythonfilter 运算符冲突。
应用具有一个或多个输出的自定义过滤器。
这 filter 与过滤器可以产生多个输出相同。
要引用输出流,请使用 .stream 运算符或括号简写:
例子
水平翻转输入视频。
修改输入的色调和/或饱和度。
参数
将一个视频叠加在另一个视频之上。
参数
更改输入帧的 PTS(表示时间戳)。
FFmpeg里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顾名思义,前者是解码的时间,后者是显示的时间。
参数
修剪输入,使输出包含输入的一个连续子部分。
参数
垂直翻转输入视频。
应用缩放和平移效果。
参数
⑷ FFmpeg命令行使用
FFmpeg的命令非常多,经常看着会云里雾里的,个人认为没必要去硬背,只要打开Terminal,输入 ffmpeg -help 命令,这条命令会告述你FFmpeg支持的大部分常用命令以及使用方式。查看这些输出的信息,基本上就会使用很多常用的命令了。
你会发现执行 ffmpeg -help 会输出一大坨,那都是些啥玩意呢,不着急,咱们一步一步来慢慢品尝。
第一个就是输出我们安装的FFmpeg的版本号
--prefix 是指FFmpeg的安装路径
--enable 是你安装的FFmpeg支持的三方库 这里可以看出支持 libx264 、 libx265 的编码,以及支持 videotoolbox , videotoolbox 是Mac、iOS上的一个系统自带硬编解码库,FFmpeg也给予了支持,非常的给力。
这是输出FFmpeg里面包含的库,这些都是独立的,是可以单独拎出来使用的,你如果只要编解码,那你就只要在项目中导入 libavcodec 即可
这是告诉我们命令行使用格式
[options] 这个是全局参数
[infile options] 这个是输入文件的参数
infile 这个是输入文件的路径
[outfile options] 这个是输出文件的参数
outfile 这个是输出文件的路径
细心的你肯定发现 infile 、 outfile 的后面有个 ... ,这是在告诉我们输入、输出文件可以分别有一个或者多个。
比如执行 ffmpeg -i test.h264 -i test.aac -c test.mp4
这条命令会把一个h264文件和一个aac的音频文件合并并输出一个mp4格式的文件,这其中就有两个输入文件、一个输出文件。
这些是详细的帮助信息
-h long 打印更多的选项参数。
-h full 打印所有的选项参数,包括所有针对于 format 和 codec 的选项,信息特别的长。
man ffmpeg : 查看FFmpeg的帮助手册。
-h type=name 打印指定名称的 decoder/encoder/demuxer/muxer/filter 的所有选项信息。
比如你要查询 scale 滤镜的使用方式,我们就执行 ffmpeg -h filter=scale
输出如下:
这就告诉我们 scale 滤镜有 w 、 h 等参数,我们就这样使用 scale 滤镜,
ffmpeg -i input.mp4 -filter_complex "scale=w=iw/2h=ih/2" output.mp4
其中 iw 代表输入视频的宽, ih 代表输入视频的高,这条命令就把输入的视频缩小一倍,这里你可能会有疑问,我都不记得那些滤镜的名字,就无法使用这个去查了,哈哈不要急,还记得上面的帮助命令吗, ffmpeg -filters 可以输出所有的滤镜名字了,如果你觉的输出太多,你不好找的话,你只要记得这个滤镜大概是叫什么名字、包含什么字母,你就借助 grep 指令去输出里面搜索关键字,这样就只会输出你关心的滤镜名了,如 ffmpeg -filters | grep over
以上是帮助命令,如果你忘记了某个编译器、像素格式或者滤镜的名字,你就可以用这些命令去查看。
以上就是全局参数
以上是音视频的公共参数
以上是视频处理相关参数
以上是音频处理相关
以上字幕处理相关参数
以上就是 ffmpeg -help 的输出说明了,下面咱们来看看常用的命令。
-r 10 表示1秒视频会生成10张图片
-f avfoundation 指定采用avfoundation采集数据使用
-i 1:0 表示 指定视频设备索引为1,指定录音设备索引为0。
使用 ffmpeg -list_devices 1 -f avfoundation -i '' 可以打印出设备列表,如下:
因此上述命令中的 -i 1:0 表示采用【Capture screen 0】【Built-in Microphone】即采用屏幕和系统自带的麦克风进行采集。
⑸ ffmpeg录屏/录音/录摄像头----命令行实现
原文地址: https://blog.csdn.net/lailaiquququ11/article/details/80968272
ffmpeg在linux下支持的采集设备的种类比较多。
在操作设备之前,我们可以查看当前系统可以支持的操作设备:
ffmpeg -hide_banner -devices
///////////////////////////////////
采集设备fbdev的参数:我们能看出fb(FrameBuffer)的操作参数,指定帧率就行(默认值为25).
ffmpeg -h demuxer=fbdev
ffmpeg -framerate 30 -f fbdev -i /dev/fb0 out.mp4
/////////////////////////////////////
v4l2 即就是video4linux2的缩写,也是常见视频设备。获取摄像头的视频图片~
通过ffmpeg -h demuxer=v4l2 查看相关的操作参数
例子:
获取本电脑的v4l2摄像头所支持的色彩格式和分辨率:
ffmpeg -hide_banner -f v4l2 -list_formats all -i /dev/video0
接下来可以使用下面的命令行,用摄像头采集视频文件:
ffmpeg -hide_banner -s 1920*1080 -i /dev/video0 out2.avi
对应的输出信息为:
因为我的摄像头不支持1920 1080,默认还原成了前面他所支持的参数 1280 720,输出的视频编码采用了avi的默认编码和码率参数。
////////////////////////////////////////////////
ffmpeg在linux下桌面图形的时候,通常是用x11grab设备采集桌面图像。
ffmpeg -h demuxer=x11grab 可以获得操作的参数:
参数包括了,采集分辨率-video_size , 支持鼠标光标 -draw_mouse, 跟中鼠标轨迹 -follow_mouse, 指定采集区域 -region_border等参数。
例子:
1)录制桌面
ffmpeg -f x11grab -framerate 25 -video_size 1366*768 -i :0.0 out.mp4
图像的分辨率,以实际电脑的支持来,我的因为是1366*768,所刚好录制下整个屏幕
我设置的参数为: 帧率为25帧 ,分辨率为 1366*768,采集设备为 0.0,输出的文件为out.mp4
2)带鼠标的录制桌面
ffmpeg -f x11grab -framerate 25 -video_size 1366*768 -follow_mouse 1 -i :0.0 out.mp4
3)指定录制区域
ffmpeg -f x11grab -framerate 25 -video_size 352*288 -i :0.0+300,200 out4.mp4
-i :0.0+300,200 制定了x坐标为300 y坐标为200
这样就可以录制桌面了。
⑹ FFmpeg功能命令汇总
前言
如此强大的FFmpeg,能够实现视频采集、视频格式转化、视频截图、视频添加水印、视频切片、视频录制、视频推流、更改音视频参数功能等。通过终端命令如何实现这些功能,Richy在本文做一记录,以备之后查阅。
注意:下面一一列举的命令,未归类整理,命令参数供参考。
如果参数有误,大家可对照文章- FFmpeg参数命令 ,进行修改。
第一组
1.分离视频音频流
ffmpeg -i input_file -vcodec -an output_file_video//分离视频流ffmpeg -i input_file -acodec -vn output_file_audio//分离音频流
2.视频解复用
ffmpeg –i test.mp4 –vcodec –an –f m4v test.264
ffmpeg –i test.avi –vcodec –an –f m4v test.264
3.视频转码
ffmpeg –i test.mp4 –vcodec h264 –s 352*278 –an –f m4v test.264
//转码为码流原始文件
ffmpeg –i test.mp4 –vcodec h264 –bf 0 –g 25 –s 352*278 –an –f m4v test.264 //转码为码流原始文件
ffmpeg –i test.avi -vcodec mpeg4 –vtag xvid –qsame test_xvid.avi //转码为封装文件
说明: -bf B帧数目控制,-g 关键帧间隔控制,-s 分辨率控制
4.视频封装
ffmpeg –i video_file –i audio_file –vcodec –acodec output_file
5.视频剪切
ffmpeg –i test.avi –r 1 –f image2 image-%3d.jpeg //提取图片
ffmpeg -ss 0:1:30 -t 0:0:20 -i input.avi -vcodec -acodec output.avi //剪切视频//-r 提取图像的频率,-ss 开始时间,-t 持续时间
6.视频录制
ffmpeg –i rtsp://192.168.3.205:5555/test –vcodec out.avi
7、利用ffmpeg视频切片
主要把视频源切成若干个.ts格式的视频片段然后生成一个.m3u8的切片文件索引提供给html5的video做hls直播源
命令如下:
ffmpeg -i 视频源地址 -strict -2 -c:v libx264 -c:a aac -f hls m3u8文件输出地址
8、ffmpeg缩放视频
假设原始视频尺寸是 1080p(即 1920×1080 px,16:9),使用下面命令可以缩小到 480p:
命令如下:
ffmpeg -i 视频源地址 -vf scale=853:480 -acodec aac -vcodec h264 视频输出地址(如:out.mp4)
各个参数的含义:-i a.mov 指定待处理视频的文件名-vf scale=853:480 vf 参数用于指定视频滤镜,其中 scale 表示缩放,后面的数字表示缩放至 853×480 px,其中的 853px 是计算而得,因为原始视频的宽高比为 16:9,所以为了让目标视频的高度为 480px,则宽度 = 480 x 9 / 16 = 853-acodec aac 指定音频使用 aac 编码。注:因为 ffmpeg 的内置 aac 编码目前(写这篇文章时)还是试验阶段,故会提示添加参数 “-strict -2” 才能继续,尽管添加即可。又或者使用外部的 libfaac(需要重新编译 ffmpeg)。-vcodec h264 指定视频使用 h264 编码。注:目前手机一般视频拍摄的格式(封装格式、文件格式)为 mov 或者 mp4,这两者的音频编码都是 aac,视频都是 h264。out.mp4 指定输出文件名上面的参数 scale=853:480 当中的宽度和高度实际应用场景中通常只需指定一个,比如指定高度为 480 或者 720,至于宽度则可以传入 “-1” 表示由原始视频的宽高比自动计算而得。即参数可以写为:scale=-1:480,当然也可以 scale=480:-1
9、ffmpeg裁剪
有时可能只需要视频的正中一块,而两头的内容不需要,这时可以对视频进行裁剪(crop),比如有一个竖向的视频 1080 x 1920,如果指向保留中间 1080×1080 部分命令如下:ffmpeg -i 视频源地址 -strict -2 -vf crop=1080:1080:0:420 视频输出地址(如:out.mp4)
其中的 crop=1080:1080:0:420 才裁剪参数,具体含义是 crop=width:height:x:y,其中 width 和 height 表示裁剪后的尺寸,x:y 表示裁剪区域的左上角坐标。比如当前这个示例,我们只需要保留竖向视频的中间部分,所以 x 不用偏移,故传入0,而 y 则需要向下偏移:(1920 – 1080) / 2 = 420
10. 转视频格式
ffmpeng -i source.mp4 -c:v libx264 -crf 24 destination.flv
其中 -crf 很重要,是控制转码后视频的质量,质量越高,文件也就越大。
此值的范围是 0 到 51:0 表示高清无损;23 是默认值(如果没有指定此参数);51 虽然文件最小,但效果是最差的。
值越小,质量越高,但文件也越大,建议的值范围是 18 到 28。而值 18 是视觉上看起来无损或接近无损的,当然不代表是数据(技术上)的转码无损。
第二组
1.ffmpeg 把文件当做直播推送至服务器 (RTMP + FLV)
ffmpeg - re -i demo.mp4 -c - f flv rtmp://w.gslb.letv/live/streamid
2.将直播的媒体保存到本地
ffmpeg -i rtmp://r.glsb.letv/live/streamid -c streamfile.flv
3.将一个直播流,视频改用h264压缩,音频改用faac压缩,送至另一个直播服务器
ffmpeg -i rtmp://r.glsb.letv/live/streamidA -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://w.glsb.letv/live/streamb
4.提取视频中的音频,并保存为mp3 然后输出
ffmpeg -i input.avi -b:a 128k output.mp3
第三组
1.获取视频的信息
ffmpeg -i video.avi
2.将图片序列合成视频
ffmpeg -f image2 -i image%d.jpg video.mpg
上面的命令会把当前目录下的图片(名字如:image1.jpg. image2.jpg. 等...)合并成video.mpg
3.将视频分解成图片序列
ffmpeg -i video.mpg image%d.jpg
上面的命令会生成image1.jpg. image2.jpg. ...
支持的图片格式有:PGM. PPM. PAM. PGMYUV. JPEG. GIF. PNG. TIFF. SGI
4.为视频重新编码以适合在iPod/iPhone上播放
ffmpeg -i source_video.avi input -acodec aac -ab 128kb -vcodec mpeg4 -b 1200kb -mbd 2 -flags +4mv+trell -aic 2 -cmp 2 -subcmp 2 -s 320x180 -title X final_video.mp4
5.为视频重新编码以适合在PSP上播放
ffmpeg -i source_video.avi -b 300 -s 320x240 -vcodec xvid -ab 32 -ar 24000 -acodec aac final_video.mp4
6.从视频抽出声音.并存为Mp3
ffmpeg -i source_video.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 sound.mp3
7.将wav文件转成Mp3
ffmpeg -i son_origine.avi -vn -ar 44100 -ac 2 -ab 192 -f mp3 son_final.mp3
8.将.avi视频转成.mpg
ffmpeg -i video_origine.avi video_finale.mpg
9.将.mpg转成.avi
ffmpeg -i video_origine.mpg video_finale.avi
10.将.avi转成gif动画(未压缩)
ffmpeg -i video_origine.avi gif_anime.gif
11.合成视频和音频
ffmpeg -i son.wav -i video_origine.avi video_finale.mpg
12.将.avi转成.flv
ffmpeg -i video_origine.avi -ab 56 -ar 44100 -b 200 -r 15 -s 320x240 -f flv video_finale.flv
13.将.avi转成dv
ffmpeg -i video_origine.avi -s pal -r pal -aspect 4:3 -ar 48000 -ac 2 video_finale.dv
或者:
ffmpeg -i video_origine.avi -target pal-dv video_finale.dv
14.将.avi压缩成divx
ffmpeg -i video_origine.avi -s 320x240 -vcodec msmpeg4v2 video_finale.avi
15.将Ogg Theora压缩成Mpeg dvd
ffmpeg -i film_sortie_cinelerra.ogm -s 720x576 -vcodec mpeg2video -acodec mp3 film_terminate.mpg
16.将.avi压缩成SVCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-svcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-dvcd video_finale.mpg
17.将.avi压缩成VCD mpeg2
NTSC格式:
ffmpeg -i video_origine.avi -target ntsc-vcd video_finale.mpg
PAL格式:
ffmpeg -i video_origine.avi -target pal-vcd video_finale.mpg
18.多通道编码
ffmpeg -i fichierentree -pass 2 -passlogfile ffmpeg2pass fichiersortie-2
19.从flv提取mp3
ffmpeg -i source.flv -ab 128k dest.mp3
第四组
1、将文件当做直播送至live
ffmpeg -re -i localFile.mp4 -c -f flv rtmp://server/live/streamName
2、将直播媒体保存至本地文件
ffmpeg -i rtmp://server/live/streamName -c mp.flv
3、将其中一个直播流,视频改用h264压缩,音频不变,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a -c:v libx264 -vpre slow -f flv rtmp://server/live/h264Stream
4、将其中一个直播流,视频改用h264压缩,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -c:a libfaac -ar 44100 -ab 48k -c:v libx264 -vpre slow -vpre baseline -f flv rtmp://server/live/h264Stream
5、将其中一个直播流,视频不变,音频改用faac压缩,送至另外一个直播服务流
ffmpeg -i rtmp://server/live/originalStream -acodec libfaac -ar 44100 -ab 48k -vcodec -f flv rtmp://server/live/h264_AAC_Stream
6、将一个高清流,复制为几个不同视频清晰度的流重新发布,其中音频不变
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -acodec -vcodec x264lib -s 640×360 -b 500k -vpre medium -vpre baseline rtmp://server/live/baseline_500k -acodec -vcodec x264lib -s 480×272 -b 300k -vpre medium -vpre baseline rtmp://server/live/baseline_300k -acodec -vcodec x264lib -s 320×200 -b 150k -vpre medium -vpre baseline rtmp://server/live/baseline_150k -acodec libfaac -vn -ab 48k rtmp://server/live/audio_only_AAC_48k
7、功能一样,只是采用-x264opts选项
ffmpeg -re -i rtmp://server/live/high_FMLE_stream -c:a -c:v x264lib -s 640×360 -x264opts bitrate=500:profile=baseline:preset=slow rtmp://server/live/baseline_500k -c:a -c:v x264lib -s 480×272 -x264opts bitrate=300:profile=baseline:preset=slow rtmp://server/live/baseline_300k -c:a -c:v x264lib -s 320×200 -x264opts bitrate=150:profile=baseline:preset=slow rtmp://server/live/baseline_150k -c:a libfaac -vn -b:a 48k rtmp://server/live/audio_only_AAC_48k
8、将当前摄像头及音频通过DSSHOW采集,视频h264、音频faac压缩后发布
ffmpeg -r 25 -f dshow -s 640×480 -i video=”video source name”:audio=”audio source name” -vcodec libx264 -b 600k -vpre slow -acodec libfaac -ab 128k -f flv rtmp://server/application/stream_name
9、将一个JPG图片经过h264压缩循环输出为mp4视频
ffmpeg.exe -i INPUT.jpg -an -vcodec libx264 -coder 1 -flags +loop -cmp +chroma -subq 10 -qcomp 0.6 -qmin 10 -qmax 51 -qdiff 4 -flags2 +dct8x8 -trellis 2 -partitions +parti8x8+parti4x4 -crf 24 -threads 0 -r 25 -g 25 -y OUTPUT.mp4
10、将普通流视频改用h264压缩,音频不变,送至高清流服务(新版本FMS live=1)
ffmpeg -i rtmp://server/live/originalStream -c:a -c:v libx264 -vpre slow -f flv “rtmp://server/live/h264Stream live=1〃
文/骚之哈塞给(作者)
⑺ ffmpeg 命令大全
前言
FFMPEG是特别强大的专门用于处理音视频的开源库。你既可以使用它的API对音视频进行处理,也可以使用它提供的工具,如 ffmpeg, ffplay, ffprobe,来编辑你的音视频文件。
本文将简要介绍一下 FFMPEG 库的基本目录结构及其功能,然后详细介绍一下我们在日常工作中,如何使用 ffmpeg 提供的工具来处理音视频文件。
在讲解 FFMPEG 命令之前,我们先要介绍一些音视频格式的基要概念。
我们按使用目的可以将 FFMPEG 命令分成以下几类:
除了 FFMPEG 的基本信息查询命令外,其它命令都按下图所示的流程处理音视频
先是解复用获取到编码的数据包,然后将编码的数据包传送给解码器(除非为数据流选择了流拷贝,请参阅进一步描述)。 解码器产生未压缩的帧(原始视频/ PCM音频/ ...),可以通过滤波进一步处理(见下一节)。 在过滤之后,帧被传递到编码器,编码器并输出编码的数据包。 最后,这些传递给复用器,将编码的数据包写入输出文件。
默认情况下,ffmpeg只包含输入文件中每种类型(视频,音频,字幕)的一个流,并将其添加到每个输出文件中。 它根据以下标准挑选每一个的“最佳”:对于视频,它是具有最高分辨率的流,对于音频,它是具有最多channel的流,对于字幕,是第一个字幕流。 在相同类型的几个流相等的情况下,选择具有最低索引的流。
您可以通过使用-vn / -an / -sn / -dn选项来禁用某些默认设置。 要进行全面的手动控制,请使用-map选项,该选项禁用刚描述的默认设置。
FFMPEG 可以使用下面的参数进行基本信息查询。例如,想查询一下现在使用的 FFMPEG 都支持哪些 filter,就可以用 ffmpeg -filters 来查询。详细参数说明如下:
查询编译器libfdk_aac的信息
FFMPEG 处理音视频时使用的命令格式与参数
ffmpeg 通过 -i 选项读取输任意数量的输入“文件”(可以是常规文件,管道,网络流,抓取设备等,并写入任意数量的输出“文件”。
原则上,每个输入/输出“文件”都可以包含任意数量的不同类型的视频流(视频/音频/字幕/附件/数据)。 流的数量和/或类型是由容器格式来限制。 选择从哪个输入进入到哪个输出将自动完成或使用 -map 选项。
要引用选项中的输入文件,您必须使用它们的索引(从0开始)。 例如。 第一个输入文件是0,第二个输入文件是1,等等。类似地,文件内的流被它们的索引引用。 例如。 2:3是指第三个输入文件中的第四个流
上面就是 FFMPEG 处理音视频的常用命令,下面是一些常用参数
首先通过下面的命令查看一下 mac 上都有哪些设备。
注意,桌面的输入对帧率没有要求,所以不用限制桌面的帧率。其实限制了也没用。
由于没有解码或编码,速度非常快,没有质量损失。 但是,由于许多因素,在某些情况下可能无法正常工作。 应用过滤器显然也是不可能的,因为过滤器处理未压缩的数据
上面的命令表式的是音频、视频都直接 ,只是将 mp4 的封装格式转成了flv。
在编码之前,ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧。 几个链式过滤器形成一个过滤器图形。 ffmpeg区分两种类型的过滤器图形:简单和复杂。
请注意,某些滤镜会更改帧属性,但不会改变帧内容。 例如。 上例中的fps过滤器会改变帧数,但不会触及帧内容。 另一个例子是setpts过滤器。
复杂的过滤器图使用-filter_complex选项进行配置。 请注意,此选项是全局性的,因为复杂的过滤器图形本质上不能与单个流或文件明确关联。
-lavfi选项等同于-filter_complex。
一个复杂的过滤器图的一个简单的例子是覆盖过滤器,它有两个视频输入和一个视频输出,包含一个视频叠加在另一个上面。 它的音频对应是amix滤波器
添加文字水印
添加本地时间水印
https://www.jianshu.com/p/e4ad7e1e7ed5
先通过 ffplay 找到要删除 LOGO 的位置
使用 delogo 滤镜删除 LOGO
crop 格式:crop=out_w:out_h:x:y
https://blog.csdn.net/matrix_laboratory/article/details/53158307
首先创建一个 inputs.txt 文件,文件内容如下:
然后执行下面的命令:
播放yuv数据,需要指定分辨率