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.rhkb.cn/news/448072.html

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

相关文章

desmos和webgl绘制线条

目录 desmos绘制 webgl绘制 将线段坐标生成三角化坐标 处理斜接线段 处理圆角 尖角 先在desmos上面完成线条lineJoin绘制的,再将代码和公式转到js用webgl绘制. desmos绘制 示例 desmos计角斜接角时&#xff0c;需要用到的一些函数。在desmos定义成公共函数&#xff0c…

【全网最全】AI产品经理面试高频100题答案解析

详细的目录如下&#xff0c;需要的小伙伴可以详细看一下~ 第一章&#xff1a;机器学习和深度学习的关系 第二章&#xff1a;机器学习7大经典算法 算法一&#xff1a;K近邻算法【分类算法】 1.1 KNN 算法的实现原理 1.2 KNN应用场景举例&#xff1a;预测候选人能不能拿到 O…

心觉:激活潜意识财富密码:每天一练,财富自动来

Hi&#xff0c;我是心觉&#xff0c;与你一起玩转潜意识、脑波音乐和吸引力法则&#xff0c;轻松掌控自己的人生&#xff01; 挑战每日一省写作200/1000天 为什么有些人总是轻而易举地吸引到财富 而你却努力多年仍然徘徊在财务的困境中&#xff1f; 你每天都在辛苦工作&…

LabVIEW离心泵监测系统

LabVIEW的离心泵监测系统在监测离心泵的运行状态&#xff0c;通过实时数据采集和故障预警&#xff0c;提高泵的运行效率和安全性。系统集成了多种传感器&#xff0c;利用Modbus RTU协议和RS485串口总线进行数据通信&#xff0c;通过LabVIEW软件平台实现数据处理和用户界面交互。…

使用 MongoDB 构建 AI:利用实时客户数据优化产品生命周期

在《使用 MongoDB 构建 AI》系列博文中&#xff0c;我们看到越来越多的企业正在利用 AI 技术优化产品研发和用户支持流程。例如&#xff0c;我们介绍了以下案例&#xff1a; Ventecon 的 AI 助手帮助产品经理生成和优化新产品规范 Cognigy 的对话式 AI 帮助企业使用任意语言&a…

Opencv:FisherFace算法实现人脸检测

目录 简介 实现步骤 1. 图像读取和预处理 2. 创建和训练识别器 3. 图像识别和结果展示 4、结果展示 总结 简介 在人工智能和计算机视觉领域&#xff0c;人脸识别是一项非常有趣且实用的技术。本文将向您介绍如何使用OpenCV库以及FisherFace算法实现人脸识别。我们将一步…

数据可视化-使用python制作词云图(附代码)

想象一下&#xff0c;当你写完一篇日记或者一篇文章后&#xff0c;想要知道里面哪些词语出现得最多。这时候&#xff0c;词云图就能派上用场了。它会统计出文章里每个词语出现的次数&#xff0c;然后把这些词语以不同大小的字体展示出来&#xff0c;出现次数越多的词语&#xf…

【MATLAB代码】基于RSSI原理的蓝牙定位程序(N个锚点、三维空间),源代码可直接复制

文章目录 介绍主要功能技术细节适用场景程序结构运行截图源代码详细教程:基于RSSI的蓝牙定位程序1. 准备工作2. 代码结构2.1 清理工作环境2.2 定义参数2.3 生成锚点坐标2.4 定义信号强度与距离的关系2.5 模拟未知点的位置2.6 定位函数2.7 绘图2.8 输出结果2.9 定义定位函数3. …

SSL---SSL certificate problem

0 Preface/Foreword 0.1 SSL certificate problem 开发过程中&#xff0c;gitlab-runner连接gitlab时候出现SSL 证书问题。 场景&#xff1a;公司的gitlab runner服务器引入了SSL证书&#xff0c;每年都会主动更新一次。当前的gitlab-runner运行在PC机器上&#xff0c;但是g…

某乎接口zse96解析(附带可直接运行js)

某乎接口zse96解析 下面是作者呕心沥血,观看各路大神和某乎js拼接在一起的js,附带浏览器环境,可以直接运行示例接口多请求几次发现,出来zse96在变化之外,其余的基本不变,那么源码中直接搜索x-zse-96,得出下面2个函数 var tE = eo(te, tp.body, {xUDId: tv,zse93: tT,xApp…

IO编程--拷贝文件、文件总行数输出、时间打印

一、使用fread和fwrite完成两个文件的拷贝&#xff0c;要求源文件和目标文件由外界输入 代码如下: #include <myhead.h> int main(int argc, const char *argv[]) {//判断是否输入两个文件名if(argc!3){fprintf(stderr,"文件个数错误");return -1;}//以读形式打…

【去哪儿-注册安全分析报告-缺少轨迹的滑动条】

前言 由于网站注册入口容易被黑客攻击&#xff0c;存在如下安全问题&#xff1a; 1. 暴力破解密码&#xff0c;造成用户信息泄露 2. 短信盗刷的安全问题&#xff0c;影响业务及导致用户投诉 3. 带来经济损失&#xff0c;尤其是后付费客户&#xff0c;风险巨大&#xff0c;造…

Linux系统——lvm逻辑卷

Linux系统——lvm逻辑卷 一、lvm逻辑卷1、lvm操作流程2、操作指令 二、逻辑卷操作1、创建逻辑卷1.1 /dev/cloud/openstack 5G xfs /cloud/openstack1.2 /dev/cloud/docker 10G ext4 /cloud/docker 2、逻辑卷扩容2.1 扩容流程2.2 需求一&#xff1a;扩容ext4文件系统的逻辑卷2.3…

4款高效电脑录屏软件推荐:高清、不卡顿、无水印

在当今这个数字化时代&#xff0c;屏幕录制技术已经成为教育工作者、游戏玩家以及各类数字内容创作者不可或缺的工具。一款高效、稳定的录屏软件不仅能够帮你轻松捕捉屏幕上的精彩瞬间&#xff0c;还能提升你的内容创作效率。今天&#xff0c;我们就为大家推荐5款高清、不卡顿、…

斯坦福大学提出电影剧本可视化工具ScriptViz:能够根据剧本中的文本和对话自动检索相关的电影画面,帮助剧作家更好地构思和调整剧情

title:斯坦福大学提出电影剧本可视化工具ScriptViz&#xff1a;能够根据剧本中的文本和对话自动检索相关的电影画面&#xff0c;帮助剧作家更好地构思和调整剧情 斯坦福大学的研究者们开发了一个电影剧本可视化工具ScriptViz工具&#xff0c;ScriptViz的工作原理可以简单地理解…

oceanbase的日志量太大,撑爆磁盘,修改下日志级别

oceanbase的日志量太大&#xff0c;撑爆磁盘&#xff0c;修改下日志级别&#xff1a; [adminlnpg ~]$ obclient -h127.0.0.1 -uroot -P2881 -plinux123 Welcome to the OceanBase. Commands end with ; or \g. Your OceanBase connection id is 3221561020 Server version: O…

echarts显示隐藏柱状图柱子的背景色

showBackground: true, //控制是否显示背景色backgroundStyle: {// color: rgba(180, 180, 180, 0.4) //背景色的颜色color: red} 关键代码是 showBackground: true, //控制是否显示背景色 设置为false或者直接而不写就是不显示背景色&#xff0c;默认是不显示背景色 true的时…

IO作业代码

问题 通过 fwrite和 fread去拷贝 文件到另外一个文件上 #include<myhead.h> #include <stdio.h> #include <string.h> #include <stdlib.h> #include<errno.h> #include<time.h> int main(int argc, const char *argv[]) { FILE *fp fo…

ES 全文检索完全匹配高亮查询

我们ES会将数据文字进行拆词操作&#xff0c;并将拆解之后的数据保存到倒排索引当中几十使用文字的一部分也能查询到数据&#xff0c;这种检索方式我们就称之为全文检索&#xff0c;ES的查询结果也会倒排索引中去查询匹配 下面的查询结果中输入的词&#xff0c;就是输入小也可…

【量化交易】聚宽安装

安装JQData 更换源&#xff1a; 如果使用的是pip默认的PyPI源&#xff0c;可以尝试更换为一个更快的国内镜像源。例如阿里云、豆瓣等提供的PyPI镜像。 更改方法可以通过设置环境变量或者在pip命令中直接指定&#xff1a; PS C:\Users\bilirjs\Documents> pip config set …