我爱看高清论坛

 找回密码
 立即注册
搜索
查看: 278|回复: 1

FFMPEG学习【ffmpeg工具】

[复制链接]

该用户从未签到

管理员

QQ上不处理问题.有问题请到论坛反馈区反馈.谢谢!

UID
2
注册时间
2015-5-19
最后登录
2024-5-7
在线时间
4108 小时
回帖
1503
主题
4589
精华
9
汤圆
199185
威望
125
积分
26048
阅读权限
200

优秀录制员优秀音轨剪辑员最佳新人活跃会员热心会员推广达人宣传达人灌水之王突出贡献优秀版主论坛元老荣誉管理1周年勋章2周年勋章3周年勋章4周年勋章5周年勋章6周年勋章7周年勋章8周年勋章

发表于 2023-9-13 01:13:04 | 显示全部楼层
声明:本站所有作品片源均来源于互联网公开渠道,影视版权均归原电影公司所有,如有侵犯版权,请与52khd@52khd.cn联系,我们将立即删除. 52KHD宗旨点击进入

一、概要

  1. ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...
复制代码


二、描述
ffmpeg是一个非常快的视频和音频转换器,也可以从现场音频/视频源获取。 它还可以在任意采样率之间进行转换,并使用高质量的多相滤波器即时调整视频大小。


ffmpeg从-i选项指定的任意数量的输入“文件”(可以是常规文件,管道,网络流,抓取设备等)读取,并写入任意数量的输出“文件”,其中 由纯输出url指定。 在命令行上发现的任何不能被解释为选项的内容都被认为是输出url。


原则上,每个输入或输出网址可以包含任何数量的不同类型的流(视频/音频/字幕/附件/数据)。 流的允许数量和/或类型可能受到容器格式的限制。 选择流从哪个输入到哪个输出是自动完成的或使用-map选项指定(参见流选择一章)。


要在选项中引用输入文件,您必须使用其索引(基于0)。 例如。 第一个输入文件为0,第二个为1等。类似地,文件中的流由其索引引用。 例如。 2:3指第三个输入文件中的第四个流。 另请参阅Stream说明符一章。


通常,选项将应用于下一个指定的文件。 因此,顺序很重要,您可以在命令行上多次使用相同的选项。 然后将每个事件应用于下一个输入或输出文件。 此规则的例外是全局选项(例如详细程度级别),其首先应该指定。

不要混合输入和输出文件 - 首先指定所有输入文件,然后指定所有输出文件。 也不要混合属于不同文件的选项。 所有选项仅适用于下一个输入或输出文件,并在文件之间复位。
1、要将输出文件的视频比特率设置为64 kbit / s:

  1. ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
复制代码


2、要强制输出文件的帧速率为24 fps:

  1. ffmpeg -i input.avi -r 24 output.avi
复制代码


3、强制输入文件的帧速率(仅对原始格式有效)为1 fps,输出文件的帧速率为24 fps:

  1. ffmpeg -r 1 -i input.m2v -r 24 output.avi
复制代码


原始输入文件可能需要格式化选项。
三、详细说明

ffmpeg中的每个输出的代码转换过程可以通过下图来描述:

4.jpg

ffmpeg调用libavformat库(包含解复用器)来读取输入文件,并从中获取包含编码数据的数据包。 当有多个输入文件时, ffmpeg尝试通过跟踪任何活动输入流上的最低时间戳来保持同步。

然后将编码的数据包传递给解码器(除非为流选择了streamcopy,请参阅进一步说明)。 解码器产生未经压缩的帧(原始视频/ PCM音频/ ...),可以通过过滤进一步处理(见下一节)。 滤波后,帧被传送到编码器,对编码器进行编码并输出编码的数据包。 最后,将这些传递给muxer,它将编码的数据包写入输出文件。


一)、过滤

在编码之前,ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧。 几个链式过滤器形成一个过滤器图。 ffmpeg区分两种类型的过滤器:简单而复杂。

1、简单的过滤器

简单的滤光片是具有相同类型的正好一个输入和输出的滤光片。 在上图中,可以通过简单地在解码和编码之间插入一个附加步骤来表示它们:

5.jpg

请注意,某些过滤器更改帧属性,但不更改帧内容。 例如。 上述示例中的fps过滤器会更改帧数,但不会触摸帧内容。 另一个例子是setpts过滤器,它只设置时间戳,否则传递帧不变。

2、复杂滤波器

复杂滤波器是不能被简单地应用于一个流的线性处理链的那些。 例如,当图形具有多个输入和/或输出,或当输出流类型与输入不同时,就是这种情况。 它们可以用下面的图表示:

6.jpg

复杂的过滤器配置为-filter_complex选项。 请注意,此选项是全局的,因为复杂的过滤器本质上不能明确地与单个流或文件相关联。

-lavfi选项等同于-filter_complex。

复杂滤波器的一个简单的例子是覆盖滤波器,其具有两个视频输入和一个视频输出,其中包含覆盖在另一个视频上的一个视频。 它的音频对应是amix过滤器。


二)、流拷贝

流复制是通过将复制参数提供给-codec选项而选择的模式。 它使ffmpeg省略了指定流的解码和编码步骤,因此它只解析和复用。 更改容器格式或修改容器级元数据是非常有用的。 在这种情况下,上图将简化为:

7.jpg

由于没有解码或编码,它非常快,没有质量损失。 但是,由于很多因素,在某些情况下可能无法正常工作。 应用过滤器显然也是不可能的,因为过滤器对未压缩的数据工作。



四、流选择

默认情况下,ffmpeg只包含输入文件中存在的每种类型的一个流(视频,音频,字幕),并将它们添加到每个输出文件。 它基于以下标准选择每个的“最佳”:对于视频,它是具有最高分辨率的流,对于音频,它是具有最多频道的流,对于字幕,它是第一个字幕流。 在相同类型的几个流量相等的情况下,选择具有最低索引的流。

您可以使用-vn / -an / -sn / -dn选项来禁用某些默认值。 对于完全手动控制,请使用-map选项,它禁用刚才描述的默认值。



五、选项

所有数值选项(如果没有另外规定)接受一个表示数字的字符串作为输入,后面可以跟着SI单位前缀之一,例如:'K','M'或'G'。

如果将“i”附加到SI单元前缀,则完整前缀将被解释为二进制倍数的单位前缀,其基于1024的幂而不是1000的幂。将“B”附加到SI单元前缀将乘以 值为8.这允许使用例如:'KB','MiB','G'和'B'作为数字后缀。

不带参数的选项是布尔选项,并将相应的值设置为true。 可以将选项名称前缀为“no”,将其设置为false。 例如使用“-nofoo”会将名称为“foo”的布尔选项设置为false。


一)、流说明符

每个流可以应用一些选项。 比特率或编解码器。 流说明符用于精确指定给定选项所属的流。

流说明符是通常附加到选项名称并由冒号分隔的字符串。 例如。 -codec:a:1 ac3包含与第二个音频流匹配的a:1流说明符。 因此,它将为第二个音频流选择ac3编解码器。

流说明符可以匹配多个流,以便将该选项应用于所有流。 例如。 -b中的流说明符:128k匹配所有音频流。

空的流说明符匹配所有流。 例如,-codec副本或-codec:copy将复制所有的流,而不需要重新编码。

流说明符的可能形式有:
stream_index
使用此索引匹配流。 例如。 -threads:1 4将第二个流的线程数设置为4。

stream_type[:stream_index]
stream_type是以下之一:视频为'v'或'V',音频'a',字幕's'',数据'd'和附件't'。 'v'匹配所有视频流,'V'仅匹配未附加图片,视频缩略图或封面艺术的视频流。 如果给出stream_index,则它匹配此类型的流号stream_index。 否则,它将匹配此类型的所有流。

p:program_id[:stream_index]
如果给出了stream_index,那么它将使用id program_id与程序中具有数字stream_index的流进行匹配。 否则,它会匹配程序中的所有流。

#stream_id或i:stream_id
通过流ID匹配流(例如MPEG-TS容器中的PID)。

m:key[:value]
使用具有指定值的元数据标签键匹配流。 如果没有给出值,则将包含给定标签的流与任何值进行匹配。

u

匹配具有可用配置的流,必须定义编解码器,并且必须存在视频维度或音频采样率等基本信息。

请注意,在ffmpeg中,元数据的匹配将仅适用于输入文件。


二)、一般选项

这些选项在ff *工具之间共享。

-L

显示证书



-h, -?, -help, --help [arg]
显示帮助。 可以指定可选参数来打印有关特定项目的帮助。 如果没有指定参数,则只显示基本(非高级)工具选项。
arg参数的可能值为:
long:打印高级工具选项以及基本工具选项。

full:打印选项的完整列表,包括编码器,解码器,分离器,复用器,过滤器等的共享和私有选项。

decoder=decoder_name:打印名为decode_name的解码器的详细信息。 使用-decoders选项获取所有解码器的列表。
encoder=encoder_name:打印有关编码器的编码器名称的详细信息。 使用-encoders选项获取所有编码器的列表。
demuxer=demuxer_name:打印有关Demuxer_name的复制器的详细信息。 使用-formats选项来获取所有分割器和多路复用器的列表。
muxer=muxer_name:打印有关muxer_name的muxer的详细信息。 使用-formats选项获取所有muxers和demuxers的列表。
filter=filter_name:打印有关过滤器名称filter_name的详细信息。

-version
显示版本


-formats
显示可用的格式(包括设备)。

-demuxers
显示可用的分离器。

-muxers
显示可用的复用器。

-devices
显示可用的设备。

-codecs
显示libavcodec已知的所有编解码器。

请注意,本文档中使用术语“编解码器”作为更准确称为媒体比特流格式的快捷方式。

-decoders
显示可用的解码器。

-encoders
显示所有可用的编码器。

-bsfs
显示可用的位流过滤器


-protocols
显示可用的协议。


-filters
显示可用的libavfilter过滤器。

-pix_fmts
显示可用的像素格式。

-sample_fmts
显示可用的样本格式。

-layouts
显示频道名称和标准频道布局。

-colors
显示可识别的颜色名称。

-sources device[,opt1=val1[,opt2=val2]...]
显示输入设备的自动检测源。 某些设备可能会提供不能自动检测的依赖于系统的源名称。 返回的列表不能被假定为始终完成。

  1. ffmpeg -sources pulse,server=192.168.0.4
复制代码


-sinks device[,opt1=val1[,opt2=val2]...]
显示输出设备的自动检测的接收器。 某些设备可能会提供不能自动检测的系统相关的接收器名称。 返回的列表不能被假定为始终完成。

  1. ffmpeg -sinks pulse,server=192.168.0.4
复制代码

  1. ffmpeg -sinks pulse,server=192.168.0.4
复制代码


-loglevel [repeat+]loglevel | -v [repeat+]loglevel
设置库使用的日志记录级别。 添加“repeat +”表示重复的日志输出不应该被压缩到第一行,而“Last message repeat n times”行将被省略。 “重复”也可以单独使用。 如果单独使用“重复”,并且没有先前的日志级别,则将使用默认日志级别。 如果给出了多个loglevel参数,使用'repeat'不会改变loglevel。 loglevel是一个字符串或包含以下值之一的数字:
‘quiet, -8’

根本不显示; 安静。

‘panic, 0’

只显示可能导致进程崩溃的致命错误,例如断言失败。 这目前不用于任何东西。

‘fatal, 8’

只显示致命错误。 这些都是错误之后,过程绝对不能继续。

‘error, 16’

显示所有错误,包括可以从中恢复的错误。

‘warning, 24’

显示所有警告和错误。 将显示与可能不正确或意外事件相关的任何消息。

‘info, 32’

在处理过程中显示信息。 这是除了警告和错误之外。 这是默认值。

‘verbose, 40’

与信息相同,除了更详细。与信息相同,除了更详细。

‘debug, 48’

显示所有内容,包括调试信息。

‘trace, 56’

默认情况下,程序记录到stderr。 如果终端支持着色,则使用颜色来标记错误和警告。 可以禁用日志着色设置环境变量AV_LOG_FORCE_NOCOLOR或NO_COLOR,
或者可以强制设置环境变量AV_LOG_FORCE_COLOR。 环境变量NO_COLOR的使用已被弃用,将在将来的FFmpeg版本中被删除.

-report
将完整的命令行和控制台输出转储到当前目录中名为program-YYYYMMDD-HHMMSS.log的文件中。 此文件可用于错误报告。 它也意味着-loglevel verbose。

将环境变量FFREPORT设置为任何值具有相同的效果。 如果值为':' - 分离的key =值序列,这些选项将影响报告; 如果选项值包含特殊字符或选项分隔符“:”(请参阅ffmpeg-utils手册中的“引用和转义”部分),则必须转义选项值。

可以识别以下选项:

file:设置要用于报告的文件名; %p被扩展为程序的名称,%t被展开为时间戳,%%被扩展为普通的%


level:使用数值设置日志详细程度级别(请参见-loglevel)。

例如,要使用日志级别32(日志级别信息的别名)将报告输出到名为ffreport.log的文件:

FFREPORT=file=ffreport.log:level=32 ffmpeg -i input output
解析环境变量的错误并不致命,也不会在报表中显示。


-hide_banner
禁止打印横幅。
所有FFmpeg工具通常会显示版权声明,构建选项和库版本。 此选项可用于禁止打印此信息。

-cpuflags flags (global)
允许设置和清除cpu标志。 此选项用于测试。 除非你知道你在做什么,否则不要使用它

  1. ffmpeg -cpuflags -sse+mmx ...
  2. ffmpeg -cpuflags mmx ...
  3. ffmpeg -cpuflags 0 ...
复制代码


此选项的可能标志是:
‘x86’
‘mmx’
‘mmxext’
‘sse’
‘sse2’
‘sse2slow’
‘sse3’
‘sse3slow’
‘ssse3’
‘atom’
‘sse4.1’
‘sse4.2’
‘avx’
‘avx2’
‘xop’
‘fma3’
‘fma4’
‘3dnow’
‘3dnowext’
‘bmi1’
‘bmi2’
‘cmov’

‘ARM’
‘armv5te’
‘armv6’
‘armv6t2’
‘vfp’
‘vfpv3’
‘neon’
‘setend’

‘AArch64’
‘armv8’
‘vfp’
‘neon’

‘PowerPC’
‘altivec’


‘Specific Processors’
‘pentium2’
‘pentium3’
‘pentium4’
‘k6’
‘k62’
‘athlon’
‘athlonxp’
‘k8’


-opencl_bench
此选项用于对所有可用的OpenCL设备进行基准测试并打印结果。 仅当使用--enable-opencl编译FFmpeg时,此选项才可用。
当FFmpeg配置为--enable-opencl时,通过-opencl_options设置全局OpenCL上下文的选项。 有关支持的选项的完整列表,请参阅ffmpeg-utils手册中的“OpenCL Options”一节。

除此之外,这些选项包括能够选择特定的平台和设备来运行OpenCL代码。 默认情况下,FFmpeg将在第一个平台的第一个设备上运行。 虽然全局OpenCL上下文的选项为用户选择所选择的OpenCL设备提供了灵活性,但大多数用户可能希望为其系统选择最快的OpenCL设备。
此选项通过识别用户系统的适当设备来帮助选择最有效的配置。 所有内置基准测试都运行在所有OpenCL设备上,并对每个设备进行性能测试。 结果列表中的设备将根据其性

能进行排序,其中首先列出最快的设备。 用户随后可以使用通过-opencl_options认为最合适的设备调用ffmpeg,以获得OpenCL加速代码的最佳性能。
使用最快的OpenCL设备的典型用法包括以下步骤。
运行命令:

  1. ffmpeg -opencl_bench
复制代码


记下列表中第一个即最快设备的平台ID(pidx)和设备ID(didx)。 使用以下命令选择平台和设备:

  1. ffmpeg -opencl_options platform_idx=pidx:device_idx=didx ...
复制代码


-opencl_options options (global)
设置OpenCL环境选项。 仅当使用--enable-opencl编译FFmpeg时,此选项才可用。
选项必须是以“:”分隔的key = value选项对的列表。 有关支持的选项列表,请参阅ffmpeg-utils手册中的“OpenCL Options”一节。


三)、AVOption选项

这些选项由libavformat,libavdevice和libavcodec库直接提供。 要查看可用的AVOptions列表,请使用-help选项。 它们分为两类:
generic
可以为任何容器,编解码器或设备设置这些选项。 通用选项在容器/设备的AVFormatContext选项下以及编解码器的AVCodecContext选项下列出。

private
这些选项特定于给定的容器,设备或编解码器。 私有选项列在其相应的容器/设备/编解码器下。

例如,要将ID3v2.3标题而不是默认ID3v2.4写入MP3文件,请使用MP3 muxer的id3v2_version私有选项:

  1. ffmpeg -i input.flac -id3v2_version 3 out.mp3
复制代码


所有编解码器AVOptions都是每个流,因此应该附加一个流说明符。
注意:-nooption语法不能用于布尔AVOptions,请使用-option 0 / -option 1。
注意:通过将v / a / s添加到选项名称来指定每个流AVOptions的旧的未记录方式现在已经过时,将很快被删除。


四)、主要选项

-f fmt (input/output)
强制输入或输出文件格式。 通常会自动检测格式的输入文件,并从输出文件的文件扩展名中猜出,因此在大多数情况下不需要此选项。

-i url (input)
输入文件url

-y (global)
覆盖输出文件而不要求。

-n (global)
不要覆盖输出文件,如果指定的输出文件已经存在,则立即退出。

-stream_loop number (input)
输入流的设置次数应循环。 循环0表示无循环,循环-1表示无限循环。

-c[:stream_specifier] codec (input/output,per-stream)
-codec[:stream_specifier] codec (input/output,per-stream)
在一个或多个流中选择一个编码器(在输出文件之前使用时)或解码器(在输入文件之前使用时)。 编解码器是解码器/编码器的名称或特殊值复制(仅输出),以指示流不被重新编码。
例如:

  1. ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
复制代码


使用libx264对所有视频流进行编码,并复制所有音频流。
对于每个流,应用最后一个匹配的c选项

  1. ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
复制代码


将复制除第二个视频之外的所有流,这些视频将使用libx264进行编码,第138个音频将以libvorbis编码。

-t duration (input/output)
当用作输入选项(在-i之前)时,在此输入文件中寻找定位。 请注意,在大多数格式中,不可能完全寻求,所以ffmpeg将寻找到位置之前最接近的搜索点。 当代码转换和-accurate_seek被启用(默认)时,搜索点和位置之间的这个额外的段将被解码和丢弃。 当做流复制或使用-noaccurate_seek时,它将被保留。
当用作输出选项(在输出url之前)时,解码,但丢弃输入,直到时间戳达到位置。
位置必须是持续时间规范,请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的“持续时间”部分。

-sseof position (input/output)
像-ss选项,但相对于“文件的结尾”。 这是负值在文件中较早,0在EOF。

-itsoffset offset(input)
设置输入时间偏移量。
偏移量必须是持续时间规范,请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的持续时间部分。
偏移量被添加到输入文件的时间戳。 指定正偏移意味着相应的流被延迟了偏移量中指定的持续时间。

-timestamp date (output)
在容器中设置录制时间戳。
日期必须是日期规范,请参阅(ffmpeg-utils)ffmpeg-utils(1)手册中的Date部分。

-metadata[:metadata_specifier] key=value (output,per-metadata)
设置元数据键/值对。
可以使用可选的metadata_specifier来设置流,章节或程序上的元数据。 有关详细信息,请参阅-map_metadata文档。
此选项将覆盖使用-map_metadata设置的元数据。 也可以使用空值删除元数据。
例如,在输出文件中设置标题:

  1. ffmpeg -i in.avi -metadata title="my title" out.flv
复制代码


要设置第一个音频流的语言:

  1. ffmpeg -i INPUT -metadata:s:a:0 language=eng OUTPUT
复制代码


-disposition[:stream_specifier] value (output,per-stream)
设置流的配置。
此选项将覆盖从输入流复制的配置。 也可以通过将其设置为0来删除。
以下处置得到承认:
default
dub
original
comment
lyrics
karaoke
forced
hearing_impaired
visual_impaired
clean_effects
captions
descriptions
metadata
例如:使第二个音频流成为默认流:

  1. ffmpeg -i in.mkv -disposition:a:1 default out.mkv
复制代码


要使第二个字幕流成为默认流,并从第一个字幕流中删除默认配置:

  1. ffmpeg -i INPUT -disposition:s:0 0 -disposition:s:1 default OUTPUT
复制代码


-program [title=title:][program_num=program_num:]st=stream[:st=stream...] (output)
创建一个具有指定标题的程序,program_num并将指定的流添加到该程序中。

-target type (output)
指定目标文件类型(vcd,svcd,dvd,dv,dv50)。 类型可能以pal-,ntsc-或film-为前缀,以使用相应的标准。 然后自动设置所有格式选项(比特率,编解码器,缓冲区大小)。 你可以输入:

  1. ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
复制代码


不过,您可以指定其他选项,只要您知道它们与标准不冲突,如下所示:

  1. ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
复制代码


-dframes number (output)
设置要输出的数据帧数。 这是对于_frame:d的过时别名,您应该使用它。

-frames[:stream_specifier] framecount (output,per-stream)
在framecount框架之后停止写入流。

-q[:stream_specifier] q (output,per-stream)
-qscale[:stream_specifier] q (output,per-stream)
使用固定质量标尺(VBR)。 q / qscale的含义取决于编解码。 如果使用qscale而没有stream_specifier,那么它只适用于视频流,这是为了保持与以前的行为的兼容性,并且指定相同的编解码器特定值到2个不同的编解码器,音频和视频通常不是什么意思当没有stream_specifier 用来。

-filter[:stream_specifier] filtergraph (output,per-stream)
创建由过滤器指定的过滤器,并使用它过滤流。
过滤器是要应用于流的过滤器的描述,并且必须具有相同类型流的单个输入和单个输出。 在过滤器中,输入与标签相关联,输出到标签输出。 有关filtergraph语法的更多信息,请参阅ffmpeg-filters手册。
如果要创建具有多个输入和/或输出的滤波器,请参阅-filter_complex选项。

-filter_script[:stream_specifier] filename (output,per-stream)
此选项与过滤器类似,唯一的区别是它的参数是要从中读取过滤器描述的文件的名称。

-filter_threads nb_threads (global)
定义用于处理过滤器管道的线程数。 每个管道将产生一个线程池,这个线程可以用于并行处理。 默认值是可用CPU的数量。

-pre[:stream_specifier] preset_name (output,per-stream)
指定匹配流的预设。

-stats (global)
打印编码进度/统计。默认情况下,要明确禁用它,您需要指定-nostat。

-progress url (global)
将程序友好的进度信息发送到URL。
进度信息大约每秒写入编码过程结束。它由“key = value”行组成。键仅包含字母数字字符。进度信息序列的最后一个关键是始终是“进度”。

-stdin
在标准输入上启用交互。默认为开,除非使用标准输入作为输入。要明确禁用交互,您需要指定-nostdin。
禁用标准输入上的交互是有用的,例如,如果ffmpeg在后台进程组中。 ffmpeg ... </ dev / null可以大致相同的结果,但它需要一个shell。

-debug_ts (global)
打印时间戳信息。默认情况下关闭。此选项对于测试和调试目的非常有用,输出格式可能会从一个版本更改为另一个版本,因此不应该由便携式脚本使用。
另见选项-fdebug ts。

-attach filename (output)
向输出文件添加附件。 这是由Matroska的几种格式支持的。 用于渲染字幕的字体。 附件实现为特定类型的流,因此此选项将向文件添加新流。 这样就可以以通常的方式在此流上使用每个流选项。 使用此选项创建的附件流将在所有其他流(即使用-map或自动映射创建的流)之后创建。
请注意,对于Matroska,您还必须设置mimetype元数据标签:

  1. ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype = application / x-truetype-font out.mkv
复制代码


(假设附件流在输出文件中将是第三个)。

-dump_attachment [:stream_specifier] filename(输入,每个流)
将匹配的附件流解压缩到名为filename的文件中。 如果文件名为空,则将使用文件名元数据标签的值。
例如。 将第一个附件提取到名为“out.ttf”的文件中:

  1. ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
复制代码


将所有附件提取到文件名标签确定的文件中:

  1. ffmpeg -dump_attachment:t "" -i INPUT
复制代码


技术说明 - 附件实现为编解码器extradata,因此该选项实际上可用于从任何流中提取extradata,而不仅仅是附件。

-noautorotate
根据文件元数据禁用自动旋转视频。

回复

使用道具 举报

  • TA的每日心情
    擦汗
    4 天前
  • 签到天数: 60 天

    [LV.6]常住居民II

    预备下忍

    UID
    32102
    注册时间
    2023-7-13
    最后登录
    2024-5-7
    在线时间
    0 小时
    回帖
    111
    主题
    0
    精华
    0
    汤圆
    636
    威望
    0
    积分
    111
    阅读权限
    30
    发表于 2023-12-3 11:53:43 | 显示全部楼层
    很专业, 音频的效果决定观感

    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    小黑屋|Archiver|我爱看高清论坛 ( 鄂ICP备15010622号-1 )

    GMT+8, 2024-5-8 04:51

    Powered by 52KHD.CN

    © 2015-2023 俩木成林博客(看高清)

    快速回复 返回顶部 返回列表