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     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf57.71.100
  Duration: 00:00:04.47, start: 0.000000, bitrate: 1116 kb/s
  Stream #0:0[0x1](und): Audio: aac (LC) (mp4a / 0x6134706D), 44100 Hz, stereo, fltp, 128 kb/s (default)
      Metadata:
        handler_name    : SoundHandler
        vendor_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    : VideoHandler
        vendor_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     : isom
    minor_version   : 512
    compatible_brands: isomiso2avc1mp41
    encoder         : Lavf61.7.100
  Stream #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    : VideoHandler
        vendor_id       : [0][0][0][0]
        encoder         : Lavc61.19.100 mjpeg
      Side 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/protocol
    See 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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

未来汽车究竟该是什么样子?

24年10月14日&#xff0c;在中国&#xff08;深圳&#xff09;机器视觉展暨机器视觉技术及工业应用研讨会上&#xff0c;同行者分享了未来智能座舱应该长什么样子。 受此启发&#xff0c;个人觉得当前大多数新能源车都极力想做出电动感&#xff0c;但是布局传统没跳出来&#…

【Golang】Go 语言中的 time 包详解:全面掌握时间处理与应用

在 Go 语言中&#xff0c;time 包提供了强大的时间处理功能&#xff0c;适用于各种场景&#xff1a;获取当前时间、格式化和解析时间、计算时间间隔、设置定时器、处理超时等。在开发过程中&#xff0c;熟练掌握 time 包能够帮助我们轻松处理时间相关的操作&#xff0c;尤其是定…

【大模型理论篇】大模型中的强化学习RLHF(PPO)、DPO(Direct Preference Optimization)等概念的理解与解析

1. “人类对齐&#xff08;Human Alignment&#xff09;”背景介绍 本文主要针对大模型训练过程中的PPO(Proximal Policy Optimization)、DPO(Direct Preference Optimization)等概念进行解释和分析&#xff0c;更确切的说是在“人类对齐&#xff08;Human Alignment&#xff0…

aosp14分屏分割线区域部分深入剖析-framework实战干货

背景&#xff1a; 原来在学习分屏课程期间&#xff0c;当时没有对分屏分割线的区域部分进行详细介绍。 本篇文章就针对这个块的知识进行详细的补充讲解&#xff0c;首先可以通过下图所示分割线情况&#xff0c;这样有一个初步的认识 简单说分屏情况下分割线是可以拖拉到不同…

社交媒体对人际关系的影响:Facebook的案例分析

随着社交媒体的快速发展&#xff0c;人们的沟通方式和人际关系发生了深刻变化。作为全球最大的社交网络之一&#xff0c;Facebook在这一进程中扮演了重要角色。本文将分析Facebook如何影响人际关系&#xff0c;包括沟通方式的转变、情感连接的变化以及社交互动的质量。 1. 沟通…

无极低码课程【redis windows下服务注册密码修改】

下载Windows版本的Redis linux环境 (自行下载) 1.打开官网https://redis.io/downloads/ windows环境 1.打开github https://github.com/microsoftarchive/redis/releases 然后选择你喜欢的版本zip或msi下载 2.这里下载zip版,解压后后,打开安装目录 3.双击redis-server…

Xcode使用Instruments的dsym还原符号堆栈问题

文章目录 设置符号表的步骤参考资料 设置符号表的步骤 instruments 的 Settings 中&#xff0c;可以设置符号表的搜索路径 没有生效的话&#xff0c;继续看 File 里面的 Symbols - 出现弹窗后点击 Add Symbols - 然后再点击 Apply。 参考资料 https://xjkstar.github.i…

初级网络工程师之从入门到入狱(四)

本文是我在学习过程中记录学习的点点滴滴&#xff0c;目的是为了学完之后巩固一下顺便也和大家分享一下&#xff0c;日后忘记了也可以方便快速的复习。 网络工程师从入门到入狱 前言一、Wlan应用实战1.1、拓扑图详解1.2、LSW11.3、AC11.4、抓包1.5、Tunnel隧道模式解析1.6、AP、…

Flink 06 聚合操作入门学习,真不难

抛砖引玉 让你统计1小时内每种商品的销售额&#xff0c;用Flink 该怎么实现。 还是让你统计1小时内每种商品的销售额&#xff0c;但是要过滤掉退款的订单&#xff0c;用Flink 该怎么实现。 学了本文两个操作&#xff0c;不信你还不会。 AggregateFunction ❝ 通常用于对数据…

React国际化中英文切换实现

目录 概况 安装 文件结构 引入 使用 正常使用 传参使用 概况 react-intl-universal 是一个国际化库&#xff0c;专门为 React 应用提供多语言支持。与 React 原生的 react-intl 相比&#xff0c;react-intl-universal 支持从远程服务器加载语言包&#xff0c;动态切换语…

【Python】selenium遇到“InvalidArgumentException”的解决方法

在使用try……except 的时候捕获到这个错误&#xff1a; InvalidArgumentException: invalid argument (Session info: chrome112.0.5614.0) 这个错误代表的是&#xff0c;当传入的参数不符合期望时&#xff0c;就会抛出这个异常&#xff1a; InvalidArgumentException: invali…

【MySQL 保姆级教学】在Linux(CentoS 7)中安装MySQL(1)

目录 1. 卸载linux&#xff08;Centos7&#xff09; 中不要的环境2. 获取MySQL官方yum源2.1 获取yum源前先查看自己 linux&#xff08;Centos&#xff09;的版本2.2 获取官方yum源 3. 安装xftp和连接4. 开放连接端口5. 上传文件到Centos76. 安装MySQL6.1 顺利安装6.2 查询是否安…

QGraphics类型学习使用【Qt】【C++】

QGraphics类型学习使用 需求过程全部完整代码 首先已知&#xff0c;QGraphicsView&#xff0c;QGraphicsScene, QGraphicsItem&#xff0c;分别称为&#xff1a;视图&#xff0c;场景&#xff0c;图元&#xff0c;图表就是各种各样的元素&#xff0c;图片元素&#xff0c;线条元…

Unity Apple Vision Pro 开发:Metal 渲染模式开启透视遇到背景黑屏的解决方法

XR 开发者社区链接&#xff1a; SpatialXR社区&#xff1a;完整课程、项目下载、项目孵化宣发、答疑、投融资、专属圈子 以下步骤适用于 PolySpatial 2.0 及以上的版本。 我们可以在 Project Settings 中的 Apple visionOS 里将 App Mode 设为 Metal Rendering with Composit…

【C语言】分支结构switch

switch分支语句 多适用于明确表达式结果的情况&#xff0c;多个分支&#xff0c;用if过于繁琐。 case后跟具体的表达式值&#xff0c;break&#xff1b;跳出分支语句。 #include <stdio.h> #include <math.h> /* 功能&#xff1a;选择结构&#xff08;switch&…

Flink CDC同步mysql数据到doris

前置参考 flink快速安装&#xff1a;Flink入门-CSDN博客 doris快速安装&#xff1a;Apache Doris快速安装-CSDN博客 Flink CDC简介 Flink CDC 是一个基于流的数据集成工具&#xff0c;旨在为用户提供一套功能更加全面的编程接口&#xff08;API&#xff09;。 该工具使得用户能…

AI测试之 TestGPT

如今最火热的技术莫非OpenAI的ChatGPT莫属&#xff0c;AI技术也在很多方面得到广泛应用。今天我们要介绍的TestGPT就是一个软件测试领域中当红的应用。 TestGPT是什么&#xff1f; TestGPT是一家总部位于以色列特拉维夫的初创公司 CodiumAI Ltd.&#xff0c;发布的一款用于测…

hadoop集群搭建-克隆虚拟机,安装jdk,hadoop

2.2 hadoop运行环境的搭建 2.2.1 环境准备 1&#xff09;安装模板虚拟机&#xff0c;IP地址 192.168.10.100&#xff0c;主机名hadoop100&#xff0c;内存41GB&#xff0c;硬盘50GB 2&#xff09;虚拟机配置 首先测试虚拟机是否可以正常上网&#xff0c;测试方法ping www.b…

配置环境windows-IIS默认拒绝put,delete的解决方案

方法一&#xff1a; <system.webServer> </system.webServer> 方法二&#xff1a;移除网站“模块”中的"webdavmodule"

【芯智雲城】Boradcom(博通) 多领域技术解决方案介绍

Broadcom Inc. 是一家全球领先的技术企业&#xff0c;业务范围囊括多种半导体、企业用软件和安全解决方案的设计、开发和供应。Broadcom 的类别领先产品组合在许多重要的市场中发挥作用&#xff0c;其中包括云、数据中心、网络、带宽、无线技术、存储&#xff0c;以及工业和企业…