FFmpeg的简单使用【Windows】

目录

一、视频生成图片

静态图片

转码过程

动态图片gif

二、图片生成视频

三、FFmpeg常用参数命令

3.1 主要参数

3.1.1、-i

3.1.2、-f

3.1.3、-ss

3.1.4、-t

3.2 音频参数

3.2.1、-aframes

3.2.2、 -b:a

3.2.3、-ar

3.2.4、-ac

3.2.5、-acodec

3.2.6、-an

3.2.7、-af

3.3 视频参数

3.3.1、-vframes

3.3.2、-b 

3.3.3、-b:v

3.3.4、-r

3.3.5、-s

3.3.6、-vn

3.3.7、-aspect

3.3.8、-vcodec

3.3.9、-vf

3.4 查看帮助 ffmpeg -h

四、使用FFmpeg工具进行视频转码的操作流程

解释说明

该过程的命令行

 五、抽取完整视频的视频和音频

5.1 保留封装格式

提取音频(保留编码格式)

提取视频(保留编码格式)

5.2 提取视频

提取视频(保留编码格式)

强制格式(转换编码格式)

5.3 提取音频

提取音频(保留编码格式)

强制格式(转换编码格式)

六、 提取像素格式(YUV和RGB格式)转换格式

6.1 提取YUV数据

6.2 提取RGB数据

6.3 RGB和YUV之间的转换

七、 更改视频和音频文件参数并输出新文件

7.1 保持编码格式

7.2 改变编码格式

7.3 修改帧率

正确命令

错误命令

7.4 修改视频码率

正确命令

错误命令

7.5 修改音频码率

7.6 同时修改音频码率和视频码率

7.7 修改视频分辨率

7.8 修改音频采样率


一、视频生成图片

  

静态图片

在视频所在文件中打开【命令提示符】窗口,然后输入以下命令即可将视频生成 .jpg 的图片

ffmpeg -i hang.mp4 -r 25 -f image2 data/image%3d.jpg

说明:

  • -i hang.mp4:指定输入文件问 hang.mp4。
  • -r 25:设置输出图像的帧率为每秒25帧。
  • -f image2:指定输出格式为图像序列。
  • data/image%3d.jpg:指定输出图像文件名的格式,其中%3d表示使用三位数字作为图像的编号,并以 .jpg作为文件扩展名,生成的图像文件将保存在当前路径下一个名为 data 的文件夹中【data文件夹如果一开始不存在的话将会报错】。
转码过程
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'hang.mp4':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf57.71.100Duration: 00:00:04.47, start: 0.000000, bitrate: 1116 kb/sStream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)Metadata:handler_name    : SoundHandlervendor_id       : [0][0][0][0]Stream #0:1[0x2](und): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, smpte170m/bt470bg/smpte170m, progressive), 480x854 [SAR 1:1 DAR 240:427], 976 kb/s, 29.55 fps, 30 tbr, 90k tbn (default)Metadata:handler_name    : VideoHandlervendor_id       : [0][0][0][0]

解释说明:

  • 输入文件格式为: mov/mp4/m4a/3gp/3g2/mj2
  • 其中数据包括:
    • 主要品牌(major_brand)
    • 次要版本(minor_version)
    • 兼容品牌(compatible_brands)
  • 视频时长为4秒47毫秒,起始时间为0秒,比特率为 1116 kb/s
  • 音频流(Stream #0:0)的详细信息:
    • 编码格式:aac(LC),使用的是AAC长期配置文件(Long Term Profile)
    • 标签:mp4a / 0x6134706D,这是音频编解码器的标签
    • 采样频率:44100Hz
    • 声道数量:stereo,双声道
    • 精度:flp,表示使用的是浮点数精度
    • 比特率:128kb/s
  • 视频流(Stream #0:1)的详细信息:
    • 编码格式:h264(High),使用的是H.264高级配置文件(profile)
    • 标签:avc1 / 0x31637661,这是视频编解码器的标签
    • 像素格式:yuv420p,这是一种常见的颜色空间编码方式
    • 色彩空间:tv,smpte170m/bt470bg/smpte170m,这是表示视频的色彩空间遵循这些标准之一
    • 扫描类型:progressive,表示视频是非交错的(逐行扫描)
    • 分辨率:480 * 854
    • 方向比例:SAR 1:1 DAR 240:427,样本宽高比(Sample Aspect Ratio)为1:1,显示宽高比(Display Aspect Ratio)为240:427
    • 比特率:976kb/s
    • 帧速率:29.55fps
    • 时间基:30 tbr,90k tbn,时间基比率(Time Base Rate)为30,时间基数(Time Base Number)为90k
Output #0, image2, to 'data/image%3d.jpg':Metadata:major_brand     : isomminor_version   : 512compatible_brands: isomiso2avc1mp41encoder         : Lavf61.7.100Stream #0:0(und): Video: mjpeg, yuv420p(pc, smpte170m/bt470bg/smpte170m, progressive), 480x854 [SAR 1:1 DAR 240:427], q=2-31, 200 kb/s, 25 fps, 25 tbn (default)Metadata:handler_name    : VideoHandlervendor_id       : [0][0][0][0]encoder         : Lavc61.19.100 mjpegSide data:cpb: bitrate max/min/avg: 0/0/200000 buffer size: 0 vbv_delay: N/A
[out#0/image2 @ 000001e29ef3c300] video:1804KiB audio:0KiB subtitle:0KiB other streams:0KiB global headers:0KiB muxing overhead: unknown
frame=  112 fps=0.0 q=24.8 Lsize=N/A time=00:00:04.48 bitrate=N/A dup=0 drop=21 speed=15.6x

 转换过程中的输出信息说明:

  • 输出文件格式为图像序列(image2),保存在 'data/image%3d.jpg'中
  • 输出文件的元数据与输入文件相似,包括:
    • 主要品牌(major_brand)
    • 次要版本(minor_version)
    • 兼容品牌(compatible_brands)
  • 视频流(Stream #0:0)的详细信息:
    • 编码格式:mjpeg,使用的是Motion JPEG编码
    • 像素格式:yuv420p,这是一种常见的颜色空间编码方式
    • 色彩空间:yuv420p(pc,smpte170m/bt470bg/smpte170m, progressive),表示视频的色彩空间遵循这些标准之一
    • 扫描类型:progressive,表示视频是非交错的(逐行扫描)
    • 分辨率:480 * 854
    • 方向比例:SAR 1:1 DAR 240:427,样本宽高比(Sample Aspect Ratio)为1:1,显示宽高比(Display Aspect Ratio)为240:427
    • 编码质量:q=2-31,这表示量化等级(quality level)的范围是从2到31
    • 比特率:200kb/s
    • 帧速率:25fps
    • 时间基:25 tbn,时间基数(Time Base Number)为25
  • 视频数据总量为1804KiB,没有音频、字幕或其他流的数据
  • 转换过程中输出的帧数为112帧,帧速率为0fps,转换时间为4秒48毫秒

动态图片gif

ffmpeg -i hang.mp4 -t 3 -r 1 data/image1.gif

说明:

  • -i hang.mp4:指定输入文件为 hang.mp4
  • -t 3:设置输出文件的最大持续时间为3秒,如果原视频文件超过3秒,那么只会处理前3秒的内容
  • -r 1:设置输出帧率为1帧每秒,这意味着在生成GIF时,每秒钟只选取一帧图像
  • image1.gif:指定输出文件的名称为image1.gif,输出格式为GIF
ffmpeg -i hang.mp4 -t 4 -r 25 -s 640*360 data/image3.gif

说明:

  • -i hang.mp4:指定输入文件为 hang.mp4
  • -t 4:设置输出文件的最大持续时间为4秒,如果原视频文件超过4秒,那么只会处理前3秒的内容
  • -r 25:设置输出帧率为25帧每秒,这意味着在生成GIF时,每秒钟只选取一帧图像
  • -s 640*360:设置输出的分辨率大小为640*360像素,这回强制输出的GIF图像具有指定的尺寸
  • image2.gif:指定输出文件的名称为image2.gif,输出格式为GIF

二、图片生成视频

注意:合成的视频没有音频

ffmpeg -r 25 -f image2 -i data/image%3d.jpg -vcodec libx264 -s 480*854-g 1 -keyint_min 25 -sc_threshold 0 -pix_fmt yuv420p out.mp4

说明 :

  • -r 25:设置输出视频的帧率为每秒25帧
  • -f image2:指定输入格式为图像序列
  • -i data/image%3d.jpg:指定输入图像文件名的格式,其中%3d表示使用三位数字作为图像的编号
  • -vcodec libx264:执行视频编码器为libx264,这是一个常用的H.264编码器
  • -s 480*854:设置输出视频的分辨率为480*854像素
  • -g 1:设置关键帧间隔为1,即每一帧都是关键帧
  • -keyint_min 25:设置最小关键帧间隔为25帧
  • -sc_threshold 0:设置场景切换阈值为0,这意味着不考虑场景切换
  • -pix_fmt yuv420p:设置像素格式为yuv420p,这是H.264编码器的常用格式
  • out.mp4:指定输出文件名为out.mp4

三、FFmpeg常用参数命令

3.1 主要参数

3.1.1、-i

说明:指定输入文件

用途:告诉 FFmpeg 从哪里读取多媒体文件

示例:

// 将 input.mp4 文件作为输入,并将其转换为 output.mp4 文件
ffmpeg -i input.mp4 output.mp4
3.1.2、-f

说明: 指定输出格式

用途:告诉FFmpeg输出文件应该以哪种容器格式

示例:

// 将 input.mp4 文件转换为 Matroska 容器格式的 output.mkv 文件
ffmpeg -i input.mp4 -f matroska output.mkv
3.1.3、-ss

说明: 从指定的时间戳开始处理视频

用途:允许从视频中的某个特定时间点开始处理

示例:

// 从 input.mp4 文件的1分30秒处开始处理,并处理接下来的30秒,最终输出为 output.mp4 文件
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 output.mp4
3.1.4、-t

说明: 处理指定的持续时间

用途:允许从指定时间点开始处理一段特定时长的视频

示例:

// 从 input.mp4 文件的1分30秒处开始处理,并处理接下来的30秒,最终输出为 output.mp4 文件
ffmpeg -i input.mp4 -ss 00:01:30 -t 00:00:30 output.mp4

3.2 音频参数

3.2.1、-aframes

说明:设置要输出的音频帧数

用途:用于限制输出音频的长度,特别适用于需要精确控制输出音频帧数的情况

示例:

// 提取前200帧音频并复制编解码器
ffmpeg -i input.mp4 -aframes 200 -c:a copy output.mp3
3.2.2、 -b:a

说明:设置音频的比特率

用途:控制输出音频的质量,比特率越高,通常音质越好,但文件大小也会越大

示例:

// 设置音频比特率为128kbps
ffmpeg -i input.mp4 -b:a 128k output.mp3
3.2.3、-ar

说明:设定音频的采样率

用途:改变输出音频的采样率,通常用于提高或降低音频的质量

示例:

// 设置音频采样率为44100Hz
ffmpeg -i input.mp4 -ar 44100 output.mp3
3.2.4、-ac

说明:设定音频的声道数(通道数)

用途:用于调整输出音频的声道数,如单声道(1声道)或立体声(2声道)

示例:

// 设置音频为立体声
ffmpeg -i input.mp4 -ac 2 output.mp3
3.2.5、-acodec

说明:设定音频编解码器

用途:选择不同的音频编解码器进行编码或解码

示例:

// 复制音频流
ffmpeg -i input.mp4 -acodec aac output.mp4

注意:如果使用 copy,则表示直接复制输入文件中的音频流而不进行重新编码 

3.2.6、-an

说明:禁用音频流

用途:用于输出文件时不包含音频流,通常用于仅保留视频或生成静音文件

示例:

// 生成静音视频文件
ffmpeg -i input.mp4 -an output.mp4
3.2.7、-af

说明:应用音频滤镜

用途:对音频进行各种处理,如调整音量、淡入淡出、混音等

示例:

// 调整音量为1.5倍
ffmpeg -i input.mp4 -af "volume=1.5" output.mp4

3.3 视频参数

3.3.1、-vframes

说明:设置要输出的视频帧数

用途:用于限制输出视频的帧数

示例:

// 将从 input.mp4 文件中提取前100帧,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -vframes 100 output.mp4
3.3.2、-b 

说明:设定视频的比特率(过时)

用途:早期版本的ffmpeg使用 -b 来设定视频比特率,但现在推荐使用 -b:v

示例:

// 将 input.mp4 文件的视频比特率设置为1000kbps,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -b:v 1000k output.mp4
3.3.3、-b:v

说明:设定视频的比特率

用途:控制输出视频的质量,比特率越高,通常视频质量越好,但文件大小也会越大

示例:

// 将 input.mp4 文件的视频比特率设置为1000kbps,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -b:v 1000k output.mp4
3.3.4、-r

说明:设定帧速率

用途:改变输出视频的帧速率

示例:

// 将 input.mp4 文件的帧速率设置为30fps,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -r 30 output.mp4
3.3.5、-s

说明:设定画面的宽与高

用途:改变输出视频的分辨率

示例:

// 将 input.mp4 文件的分辨率设置为640x480,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -s 640x480 output.mp4
3.3.6、-vn

说明:不处理视频

用途:用于输出文件时不包含视频流,通常用于仅保留音频

示例:

// 从 input.mp4 文件中提取音频,并输出为 output.mp3 文件,不包含视频流
ffmpeg -i input.mp4 -vn output.mp3
3.3.7、-aspect

说明:设置画面的宽高比

用途:改变输出视频的宽高比

示例:

// 将 input.mp4 文件的画面宽高比设置为16:9,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -aspect 16:9 output.mp4
3.3.8、-vcodec

说明:设定视频编解码器

用途:选择不同的视频编解码器进行编码或解码

示例:

// 将 input.mp4 文件的视频编解码器设置为H.264,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -vcodec h264 output.mp4

注意: 如果使用 copy,则表示直接复制输入文件中视频流而不进行重新编码。

3.3.9、-vf

说明:视频过滤器

用途:对视频进行各种处理,如裁剪、缩放、添加水印等

示例:

// 将 input.mp4 文件的视频先缩放到640x480,然后裁剪为16:9的比例,并输出为 output.mp4 文件
ffmpeg -i input.mp4 -vf "scale=640:480,crop=ih*16/9:ih" output.mp4

3.4 查看帮助 ffmpeg -h

Getting help:-h      -- print basic options  // 获取基本帮助选项-h long -- print more options-h full -- print all options (including all format and codec specific options, very long)-h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocolSee man ffmpeg for detailed description of the options.Per-stream options can be followed by :<stream_spec> to apply that option to specific streams only. <stream_spec> can be a stream index, or v/a/s for video/audio/subtitle (see manual for full syntax).Print help / information / capabilities:
-L                  show license // 显示许可证信息
-h <topic>          show help // 显示特定主题的帮助信息
-version            show version // 显示版本信息
-muxers             show available muxers // 显示可用的复用器
-demuxers           show available demuxers // 显示可用的解复用器
-devices            show available devices // 显示可用的设备
-decoders           show available decoders // 显示可用的解码器
-encoders           show available encoders // 显示可用的编码器
-filters            show available filters // 显示可用的滤镜
-pix_fmts           show available pixel formats // 显示可用的像素格式
-layouts            show standard channel layouts // 显示标准的声道布局
-sample_fmts        show available audio sample formats // 显示可用的音频样本格式// 全局选项
Global options (affect whole program instead of just one file):  
-v <loglevel>       set logging level // 设置日志级别
-y                  overwrite output files // 覆盖输出文件,无需确认
-n                  never overwrite output files // 从不覆盖输出文件
-stats              print progress report during encoding // 在编码过程中打印进度报告// 主文件选项
Per-file options (input and output): 
-f <fmt>            force container format (auto-detected otherwise) // 强制使用指定的容器格式(否则自动检测)
-t <duration>       stop transcoding after specified duration // 在指定的持续时间后停止转码
-to <time_stop>     stop transcoding after specified time is reached // 在到达指定时间后停止转码
-ss <time_off>      start transcoding at specified time // 从指定的时间开始转码Per-file options (output-only):
-metadata[:<spec>] <key=value>  add metadata // 添加元数据Per-stream options:
-c[:<stream_spec>] <codec>  select encoder/decoder ('copy' to copy stream without reencoding) // 选择编码器/解码器(使用copy可以不解码直接复制流)
-filter[:<stream_spec>] <filter_graph>  apply specified filters to audio/video // 应用指定的滤镜到音频/视频// 视频选项
Video options:  
-r[:<stream_spec>] <rate>  override input framerate/convert to given output framerate (Hz value, fraction or abbreviation) // 覆盖输出帧率/转换为给定的输出帧率(单位为Hz值,分数或简写)
-aspect[:<stream_spec>] <aspect>  set aspect ratio (4:3, 16:9 or 1.3333, 1.7777) // 设置宽高比(如:4:3、16:9或1.3333、1.7777)
-vn                 disable video // 禁用视频
-vcodec <codec>     alias for -c:v (select encoder/decoder for video streams) // 等同于-c:v(选择视频的编码器/解码器)
-vf <filter_graph>  alias for -filter:v (apply filters to video streams) // 等同于-filter:v(应用滤镜到视频流)
-b <bitrate>        video bitrate (please use -b:v) // 视频比特率(建议使用-b:v)// 音频选项
Audio options:  
-aq <quality>       set audio quality (codec-specific) // 设置音频质量(编解码器特定)
-ar[:<stream_spec>] <rate>  set audio sampling rate (in Hz) // 设置音频采样率(单位为Hz)
-ac[:<stream_spec>] <channels>  set number of audio channels // 设置音频声道数
-an                 disable audio // 禁用音频
-acodec <codec>     alias for -c:a (select encoder/decoder for audio streams) // 等同于-c:a(选择音频流的编码器/解码器)
-ab <bitrate>       alias for -b:a (select bitrate for audio streams) // 等同于-b:a(选择音频流的比特率)
-af <filter_graph>  alias for -filter:a (apply filters to audio streams) // 等同于-filter:a(应用滤镜到音频流)// 字幕选项
Subtitle options:  
-sn                 disable subtitle // 禁用字幕
-scodec <codec>     alias for -c:s (select encoder/decoder for subtitle streams) // 等同于-c:s(选择字幕流的编码器/解码器)

四、使用FFmpeg工具进行视频转码的操作流程

下方图像描述了如何使用FFmpeg将一个分辨率为1280*720的MP4视频文件转换为一个分辨率为1920*1080的FLV视频文件,同时保持视频流不变。

解释说明

  •  输入文件:test_1280*720.mp4
    • 这是一个分辨率为1280*720的MP4格式视频文件,它包含以下内容:
      • 1个视频流:AVC(H.264)编码
      • 1个音频流:AAC LC编码
  • Demuxer:解复用器,负责将输入文件中的音视频流分开。
  • Decoder:视频流通过解码器进行解码买得到原始的数据帧。在这个过程中,对数据帧进行了缩放(从1280*720到1920*1080),这就是所谓的“帧处理”(filter),而音频流则直接复制到输出文件,不做任何编码转换。
  • Encoder:处理后的数据帧经过编码器重新编码成新的H.264编码数据包。
  • Muxer:编码后的视频流和音频流由Muxer(复用器)合成输出文件所需的完整封装格式,在这种情况下时FLV格式。
  • 输出文件:test_1920*1080.flv
    • 这是最终的输出文件,是一个分辨率为1920*1080的FLV格式视频文件

该过程的命令行

ffmpeg -i test_1280*720.mp4 -acodec copy -vcodec libx264 -s 1920*1080 text_1920*1080.flv

该命令的具体含义:

  • -i:指定输入文件
  • test_1280*720.mp4:输入文件名
  • -acodec copy:将音频流直接复制到输出文案金,不做任何编码转换
  • -vcodec libx264:使用libx264库进行视频编码
  • -s 1920*1080:设置输出分辨率
  • test_1920*1080.flv:输出文件名

 五、抽取完整视频的视频和音频

5.1 保留封装格式

如果你想要从一个视频文件中分别提取音频和视频流,并保留他们的原始编码格式,可以使用以下命令:

提取音频(保留编码格式)
ffmpeg -i test.mp4 -acodec copy -vn audio.mp4

 说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -acodec copy:表示音频流将直接复制,不进行重新编码。
  • -vn:表示不处理视频流,即禁用视频输出。
  • audio.mp4:输出文件名,这里假设输出为 audio.mp4。
提取视频(保留编码格式)
ffmpeg -i test.mp4 -vcodec copy -an video.mp4

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -vcodec copy:表示视频流将直接复制,不进行重新编码。
  • -an:表示不处理音频流,即禁用音频输出。
  • video.mp4:输出文件名,这里假设输出为 video.mp4。

5.2 提取视频

如果想从视频文件中提取视频流,可以保留原始编码格式或者转换为其他编码格式。

提取视频(保留编码格式)
ffmpeg -i test.mp4 -vcodec copy -an test_copy.h264

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -vcodec copy:表示视频流将直接复制,不进行重新编码。
  • -an:表示不处理音频流,即禁用音频输出。
  • test_copy.h264:输出文件名,这里假设输出为 test_copy.h264。
强制格式(转换编码格式)
ffmpeg -i test.mp4 -vcodec libx264 -an test.h264

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -vcodec libx264:使用libx264编码器重新编码视频流。
  • -an:表示不处理音频流,即禁用音频输出。
  • test.h264:输出文件名,这里假设输出为 test.h264。

5.3 提取音频

如果想从视频文件中提取音频流,可以保留原始编码或转换为其他编码格式。

提取音频(保留编码格式)
ffmpeg -i test.mp4 -acodec copy -vn test.aac

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -acodec copy:表示音频流将直接复制,不进行重新编码。
  • -vn:表示不处理视频流,即禁用视频输出。
  • test.aac:输出文件名,这里假设输出为 test.aac。
强制格式(转换编码格式)
ffmpeg -i test.mp4 -acodec libmp3lame -vn test.mp3

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -acodec libmp3lame:使用libmp3lame编码器重新编码音频流。
  • -vn:表示不处理视频流,即禁用视频输出。
  • test.mp3:输出文件名,这里假设输出为 test.mp3。

六、 提取像素格式(YUV和RGB格式)转换格式

6.1 提取YUV数据

这条命令将生成一个包含前3秒、分辨率为320*240像素、采用YUV 4:2:0采样格式的YUV文件。

ffmpeg -i test.mp4 -t 3 -pix_fmt yuv420p -s 320x240 YUV_320x240.yuv

说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -t 3:表示只提取前3秒钟的数据。
  • -pix_fmt yuv420p:设置输出的像素格式为 YUV 4:2:0 采样格式。
  • -s 320x240:设置输出的分辨率大小为 320x240 像素。
  • YUV_320x240.yuv:输出文件名,这里假设输出为 YUV_320x240.yuv

6.2 提取RGB数据

这条命令将生成一个包含前3秒、分辨率为320*240像素、采用24位RGB格式的RGB文件。

ffmpeg -i test.mp4 -t 3 -pix_fmt rgb24 -s 320x240 rgb24_320x240.rgb

 说明:

  • -i test.mp4:指定输入文件为 test.mp4。
  • -t 3:表示只提取前3秒钟的数据。
  • -pix_fmt rgb24:设置输出的像素格式为 24位 RGB 格式。
  • -s 320x240:设置输出的分辨率大小为 320x240 像素。
  • rgb24_320x240.rgb:输出文件名,这里假设输出为 rgb24_320x240.rgb

6.3 RGB和YUV之间的转换

如果您有一个YUV格式的文件,并且想要将其转换为RGB格式,可以使用以下命令:

ffmpeg -s 320x240 -pix_fmt yuv420p -i yuv420p_320x240.yuv -pix_fmt rgb24 rgb24_320x240_2.rgb

 说明:

  • -s 320x240:指定输入的分辨率大小为 320x240 像素。
  • -pix_fmt yuv420p:指定输入的像素格式为 YUV 4:2:0 采样格式。
  • -i yuv420p_320x240.yuv:指定输入文件为 yuv420p_320x240.yuv。
  • -pix_fmt rgb24:设置输出的像素格式为 24位 RGB 格式。
  • rgb24_320x240_2.rgb:输出文件名,这里假设输出为 rgb24_320x240_2.rgb。

七、 更改视频和音频文件参数并输出新文件

7.1 保持编码格式

这条命令会从test.mp4中提取视频和音频流,并以相同的编码格式输出到test_copy.ts文件中,同时将输出格式改为.ts(Transport Stream)。

ffmpeg -i test.mp4 -vcodec copy -acodec copy test_copy.ts

7.2 改变编码格式

这条命令会将test.mp4的视频流重新编码为H.265(使用libx265编码器),音频流重新编码为MP3(使用libmp3ame编码器),并输出到out_h265_mp3.mkv文件中。

ffmpeg -i test.mp4 -vcodec libx265 -acodec libmp3lame out_h265_mp3.mkv

7.3 修改帧率

正确命令

这条命令会将test.mp4的帧率设置为每秒15帧,并输出到output2.mp4文件中

ffmpeg -i test.mp4 -r 15 output2.mp4
错误命令

这条命令试图修改帧率,但同时使用 -codec copy 来复制流,这是不可能的,因为复制流不支持修改帧率。

ffmpeg -i test.mp4 -r 15 -codec copy output.mp4

7.4 修改视频码率

正确命令

这条命令会将test.mp4的视频比特率设置为400kbps,并输出到output_bv.mkv文件中。

ffmpeg -i test.mp4 -b:v 400k output_bv.mkv
错误命令

这条命令试图同时设置视频和音频的总比特率,但 -b 参数通常用于设置总的比特率,这样会导致音频和视频都被重新编码。

ffmpeg -i test.mp4 -b 400k output_b.mkv

7.5 修改音频码率

这条命令会将test.mp4的音频比特率设置为192kbps,并输出到output_ba.mp4文件中。

ffmpeg -i test.mp4 -b:a 192k output_ba.mp4

7.6 同时修改音频码率和视频码率

这条命令会将test.mp4的视频比特率设置为400kbps,音频比特率设置为192kbps,并输出到output_bva.mp4文件中。

ffmpeg -i test.mp4 -b:v 400k -b:a 192k output_bva.mp4

7.7 修改视频分辨率

这条命令会将test.mp4的分辨率调整为480*270,并输出到output_480x270.mp4文件中。

ffmpeg -i test.mp4 -s 480x270 output_480x270.mp4

7.8 修改音频采样率

这条命令会将test.mp4的音频采样率设置为44.1kHz,并输出到output_44100hz.mp4文件中。

ffmpeg -i test.mp4 -ar 44100 output_44100hz.mp4

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/56634.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

PHP 表达式 Exception::__toString

在PHP中&#xff0c;Exception::__toString是一个魔术方法&#xff08;Magic Method&#xff09;&#xff0c;用于定义当尝试将对象作为字符串输出时的行为。具体来说&#xff0c;当一个异常对象&#xff08;通常是Exception类或其子类的实例&#xff09;被当作字符串处理时&am…

WinLicense_3.1.2.0一机一码工具下载

WinLicense_3.1.2.0下载链接&#xff1a;夸克网盘分享 使用教程见主页教程

HarmonyOS中ArkUi框架中常用的装饰器

目录 1.装饰器 1&#xff09;Component 1--装饰内容 2&#xff09;Entry 1--装饰内容 2--使用说明 3&#xff09;Preview 1--装饰内容 2--使用说明 4&#xff09;CustomDialog 1--装饰内容 2--使用说明 5&#xff09;Observed 1--装饰内容 2--使用说明 6&#xff09;ObjectLin…

2024-10-15 问AI: [AI面试题] 人工智能中使用了哪些不同的搜索算法?

文心一言 人工智能中使用了多种不同的搜索算法来解决问题&#xff0c;这些算法各有特点&#xff0c;适用于不同的场景和问题类型。以下是一些常见的人工智能搜索算法&#xff1a; 深度优先搜索&#xff08;DFS&#xff09;&#xff1a; 是一种基于树或图的搜索算法。核心思想是…

【Flutter】Dart:Isolate

在 Dart 和 Flutter 中&#xff0c;所有的代码默认都运行在单一的线程&#xff08;即主线程&#xff09;上&#xff0c;这个线程也叫做 UI 线程。当进行耗时操作&#xff08;如复杂计算或网络请求&#xff09;时&#xff0c;如果不使用多线程处理&#xff0c;主线程会被阻塞&am…

【实战篇】用SkyWalking排查线上[xxl-job xxl-rpc remoting error]问题

一、组件简介和问题描述 SkyWalking 简介 Apache SkyWalking 是一个开源的 APM&#xff08;应用性能管理&#xff09;工具&#xff0c;专注于微服务、云原生和容器化环境。它提供了分布式追踪、性能监控和依赖分析等功能&#xff0c;帮助开发者快速定位和解决性能瓶颈和故障。…

【机器学习(十三)】零代码开发案例之股票价格预测分析—Sentosa_DSML社区版

文章目录 一、背景描述二、Sentosa_DSML社区版算法实现(一) 数据读入(二) 特征工程(三) 样本分区(四) 模型训练和评估(五) 模型可视化 三、总结 一、背景描述 股票价格是一种不稳定的时间序列,受多种因素的影响。影响股市的外部因素很多,主要有经济因素、政治因素和公司自身因素…

PHP获取图片属性(size, width, 和 height)的函数

在PHP中&#xff0c;要获取图片的尺寸&#xff08;宽度和高度&#xff09;&#xff0c;你可以使用 getimagesize() 函数。这个函数不仅返回图片的宽度和高度&#xff0c;还返回图片的类型和MIME类型等信息。 以下是 getimagesize() 函数的基本用法&#xff1a; <?php /…

云原生-降本增效最佳案例分享-学习笔记

云原生&#xff08;以技术为“内核”&#xff0c;一个核心的位置&#xff09;产业发展态势分析&#xff0c;云原生&#xff08;运维和研发测&#xff09;国内发展迅猛2021年市场的规模已经达到了千亿元&#xff0c;企业对云原生的投入和支出&#xff01;不同行业对于云原生的重…

ASP.NET Core8.0学习笔记(二十)——EFCore导航属性与外键

一、什么是实体间关系 数据库表&#xff08;实体&#xff09;之间的关系&#xff1a;一对一&#xff08;学生-成绩&#xff09;、一对多&#xff08;学生-科目&#xff09;、多对多&#xff08;教师-班级&#xff09;。数据库中&#xff0c;每一个实体可以由主键唯一标识&…

数据挖掘示例

案例背景&#xff0c;有公司进行橡胶玩具的生产&#xff0c;一共生产两种产品&#xff0c;分别为橡皮鱼和橡皮鸭。 已知条件为&#xff1a; 1、公司的橡胶原材料能够生产500只橡皮鸭或者400条橡皮鱼。 2、生产效率为公司产量不会高于400只橡皮鸭和300条橡皮鱼。 3、每只橡皮…

MySQL表的基本查询下/分组聚合统计

1&#xff0c;update 对查询到的结果进行列值更新&#xff0c;可以和older by&#xff0c;where&#xff0c;limit合并使用&#xff0c;为了方便讲解&#xff0c;将会以题目练习的方式进行说明&#xff1a; 1&#xff0c;将孙悟空同学的数学成绩变更为 80 分 本道题和where联…

动态规划(1)斐波那契数列模型

动态规划算法流程&#xff1a; 1、状态表示&#xff1a; 指的是dp&#xff08;dynamic programming&#xff09;表里面的值所表示的含义 如何得出&#xff1a;1、题目要求 2、经验题目要求 3、分析问题的过程中发现重复子问题 2、状态转移方程 dp[i]等于什么 3、初始化 保证…

dbt doc 生成文档命令示例应用

DBT提供了强大的命令行工具&#xff0c;它使数据分析师和工程师能够更有效地转换仓库中的数据。dbt的一个关键特性是能够为数据模型生成文档&#xff0c;这就是dbt docs命令发挥作用的地方。本教程将指导您完成使用dbt生成和提供项目文档的过程。 dbt doc 命令 dbt docs命令有…

案例实践 | 以长安链为坚实底层,江海链助力南通民政打造慈善应用标杆

案例名称-江海链 ■ 实施单位 中国移动通信集团江苏有限公司南通分公司、中国移动通信集团江苏有限公司 ■ 业主单位 江苏省南通市民政局 ■ 上线时间 2023年12月 ■ 用户群体 南通市民政局、南通慈善总会等慈善组织及全市民众 ■ 用户规模 全市近30家慈善组织&#…

查询hive数据库报错Required field ‘type‘ is unset

文章目录 一、报错内容TProtocolException: Required field ‘type’ is unset 一、报错内容TProtocolException: Required field ‘type’ is unset org.apache.thrift.protocol.TProtocolException: Required field ‘type’ is unset! Struct:TPrimitiveTypeEntry(type:nu…

leetcode二叉树(八)-二叉树的最大深度

题目 104.二叉树的最大深度 给定一个二叉树 root &#xff0c;返回其最大深度。 二叉树的 最大深度 是指从根节点到最远叶子节点的最长路径上的节点数。 示例 1&#xff1a; 输入&#xff1a;root [3,9,20,null,null,15,7] 输出&#xff1a;3示例 2&#xff1a; 输入&…

C语言二级刷题

&#xff08;1&#xff09;考点9 &#x1f601; 1. #include <stdio.h> #define S(x) x*x #define T(x) S(x)*S(x) main() { int k5, j2;printf("%d,%d\n", S(kj),T(kj)); }本题考查宏定义 以kj直接代替x 则S(kj)kj*kj 2. #include <stdio.h> …

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波

【STM32 HAL库】MPU6050姿态解算 卡尔曼滤波 前言MPU6050寄存器代码详解mpu6050.cmpu6050.h 使用说明 前言 本篇文章基于卡尔曼滤波的原理详解与公式推导&#xff0c;来详细的解释下如何使用卡尔曼滤波来解算MPU6050的姿态 参考资料&#xff1a;Github_mpu6050 MPU6050寄存器…

项目管理软件真的能让敏捷开发变得更简单吗?

敏捷开发是一种以快速交付和适应变化为核心特点的软件开发方法。其特点包括尽早并持续交付、能够驾驭需求变化、版本周期内尽量不加任务、业务与开发协同工作、以人为核心、团队配置敏捷等。 例如&#xff0c;尽早并持续交付可使用的软件&#xff0c;使客户能够更早地体验产品…