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.xdnf.cn/news/1560843.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

AI系列:10分钟在本地启动大模型

总目录 前言环境使用Ollama运行大模型使用Open WebUI访问大模型Web方式访问API方式访问 资源监测CPU/GPU内存 退出参考网页 前言 随着对AI技术尤其是大语言模型的了解和开源项目的发展&#xff0c;相信很多人已经逐渐熟悉这门技术。如果你也想尝试一下&#xff0c;不妨试试花1…

NV080D-S8 高品质otp语音芯片:让漱口水售货机更智能和人性化

随着科技的快速发展&#xff0c;自动售货机作为一种方便的购物方式&#xff0c;已经逐渐融入到人们的日常生活中。特别是近年来&#xff0c;NV080D-S8高品质OTP语音芯片的应用&#xff0c;更是为漱口水售货机这样的细分市场带来了前所未有的智能体验与人性化服务。这款芯片凭借…

【路径规划】自主机器人的路径规划和导航

摘要 本文讨论了如何利用路径规划算法对自主机器人进行路径规划和导航。自主机器人在环境中的路径规划是通过参考路径与机器人的当前位置进行比对&#xff0c;采用纯追踪算法&#xff08;Pure Pursuit&#xff09;进行路径跟踪&#xff0c;以确保机器人沿预定路线行驶。本文通…

sqli-labs通关全详解

前言 我们下面进行第一个漏洞——SQL注入的学习&#xff0c;SQL注入是十大漏洞之一&#xff0c;较为常见&#xff0c;算是Web安全入门必学漏洞。我们之前一直都以CTFHub为主线进行学习&#xff0c;但由于SQL注入细节较多&#xff0c;CTFHub的题目并不能深入学习。为探讨清楚SQ…

深入浅出之FPN (Feature Pyramid Networks for Object Detection)网络

FPN&#xff08;Feature Pyramid Network&#xff09;&#xff0c;即特征金字塔网络&#xff0c;是一种用于解决目标检测和语义分割中多尺度问题的深度学习网络结构。以下是对FPN网络的详细介绍&#xff1a; 一、概述 FPN网络是在2017年的CVPR会议上提出的&#xff0c;主要目…

时尚巨头Shein在英国的销售额飙升至 15.5 亿英镑,仅次于美国和德国,Shein怎么上架产品?

去年&#xff0c;在线时尚零售商 Shein 在英国的销售额飙升至 15.5 亿英镑&#xff08;20 亿美元&#xff09;&#xff0c;比之前的收益增长了 38%。这一增长使英国成为继美国和德国之后的 Shein 第三大市场。仅次于美国和德国。 英国公司注册局的文件显示&#xff0c;Shein税…

【vue2.7.16系列】手把手教你搭建后台系统__thinkphp6开启多应用(6)

thinkphp6开启多应用 由于多应用模式属于扩展&#xff0c;我们需要额外安装&#xff1b;composer require topthink/think-multi-app 安装后&#xff0c;创建 adminapi 和 ajpi 两个应用目录文件夹&#xff1b; adminapi作为前端后台接口应用&#xff0c;api作为前端前台接口应…

(六)、CT中的滤光片

在X射线中衰减是吸收和散射的结果。X射线可以由于光电效应而衰减&#xff0c;也可以由于康普顿效应而衰减和散射。长波长X射线对CT图像形成的贡献不显著&#xff0c;但会增加患者的剂量&#xff0c;总体的来讲就是要保留穿透能力强的X光。 光电效应是指当光子与物质中的原子相互…

带货直播这么流畅,原来是这套技术系统在支撑!

我是小米,一个喜欢分享技术的29岁程序员。如果你喜欢我的文章,欢迎关注我的微信公众号“软件求生”,获取更多技术干货! Hi,大家好,我是你们的小米,今天要跟大家聊聊 社区直播带货的直播流程,这个流程看似简单,但其实背后有着许多复杂的技术支撑,今天我们就来拆解一下…

2024年上半年主要游戏安全风险

随着游戏行业的蓬勃发展&#xff0c;安全问题也日益成为行业关注的焦点。面对 2024 年上半年的游戏安全风险挑战&#xff0c;游戏行业需要不断加强技术能力&#xff0c;完善安全策略&#xff0c;与各方共同努力&#xff0c;打造一个更加安全全、公平的游戏环境。 AI 外挂&#…

vue项目开发环境关闭所有console.log

直接在main.js中加入代码&#xff1a; console.log function(){}

【微服务】负载均衡 - LoadBalancer(day4)

下述所有代码都是在订单服务中修改的&#xff0c;商品服务并不需要修改&#xff0c;只需要启动多个实例即可。 引入 在介绍Eureka组件的最后&#xff0c;留下了一个问题就是&#xff0c;无论启动多少个实例&#xff0c;只能调用第一个。原因是因为服务调用时获取的是一个实例…

若依 根据角色权限 动态添加路由 学习

源于这个问题对若依权限改造的学习&#xff0c;用ASP.NET Core Web api 做后端&#xff0c;所以不是纯净的若依前端&#xff0c;有部分改过。 ​​​​​​​若依 从字典类型跳到字典数据跳到了404-CSDN博客 从路由守卫获取到用户信息开始&#xff0c;到路由跳转结束的过程 …

JavaWebServlet09深入:注册系统01---注册界面

一套完整的网页到Java到数据库的创建&#xff1a; html&#xff1a;进行数据收集以及呈现 controller层&#xff1a;根据servlet处理前台html的响应和请求&#xff0c;对数据进行接收&#xff0c;封装和验证 service层&#xff1a;业务&#xff0c;验证是否存在调用创建的dao…

文通车牌识别算法:精准识别,畅行无忧

在当今数字化时代&#xff0c;高效准确的车牌识别技术对于交通管理、停车场管理等领域至关重要。文通车牌识别算法以其卓越的性能脱颖而出。 一、强大的识别能力 文通车牌识别算法不仅能够精准识别国内各种车牌&#xff0c;对于海外车牌也有着出色的识别效果。无论是常见的欧美…

hbuilderx上传appstore插件

在没有mac电脑的情况下&#xff0c;我们开发的ios app也需要上架&#xff0c;在hbuilderx打包好的ipa文件&#xff0c;需要一个工具上传到app store的构建版本上。 这里我们可以使用hbuilderx的香蕉云编上传插件&#xff1a; https://ext.dcloud.net.cn/plugin?id20511 使用…

EgoExoLearn智能体跨视角技能学习数据集 | CVPR 2024

在探索人工智能边界时&#xff0c;我们时常惊叹于人类孩童的学习能力 —— 可以轻易地将他人的动作映射到自己的视角&#xff0c;进而模仿并创新。当我们追求更高阶的人工智能的时候&#xff0c;无非是希望赋予机器这种与生俱来的天赋。 由上海人工智能实验室&#xff0c;南京…

本机ip地址指令是什么意思?本机ip地址指令怎么看的

在网络世界中&#xff0c;每-台接入互联网的设备&#xff0c;无论是个人电脑、智能手机还是服务器&#xff0c;都被赋予了一个独特的身份标识一HIP地址。 这个地址就像是设备在网络.上的门牌号&#xff0c;让数据和信息能够准确无误地找到并传输到目的地。对于普通用户而言&…

Math.js 进阶使用:数值比较和数学运算

一. 引言 上篇文章中&#xff0c;我们了解了 Math 工具函数在数值操作方面的妙用&#xff0c;主要包括&#xff1a;取绝对值、向上向下取整以及四舍五入的方法&#xff0c;详细了解请参考上一篇文章&#xff1a; Math 工具函数的妙用&#xff1a;常用的数值操作 本篇文章将继…