FFmpeg 2 - ffplay、ffprobe、ffmpeg 命令使用

news/2024/11/20 17:32:28/

文章目录

    • ffplay
      • 命令说明
        • 基础命令
        • 高级命令
      • 使用示例
        • 播放
        • 简单过滤器
    • ffprobe 查看视频信息
      • 选项说明
      • 使用示例
        • 基本使用
        • 输出格式
        • frame 帧信息
    • ffmpeg
      • 命令说明
        • 基本选项
        • 流标识
        • 音频选项
        • 视频选项
        • 高级选项
      • 使用示例
        • 查看支持信息
        • 操作视频
        • 编码格式转换
        • 视频压缩
        • 视频拼接
      • 视频帧操作
      • 图片与视频
      • 图片格式转换
      • 硬解码与软解码
      • 分解与复用命令
      • 处理原始数据的命令
      • 滤镜命令
      • 裁剪与合并命令
      • 图片与视频互转命令
      • 直播拉流和推流


官方文档的 Command Line Tools Documentation 部分,有命令的详细介绍
https://ffmpeg.org/documentation.html

示例来源于网络,待整理更新。


ffplay

命令说明

基础命令

帮助

  • -L, show license
  • -h topic, show help
  • -? topic, show help
  • -help topic, show help
  • --help topic, show help
  • -version, show version

显示信息

  • -buildconf, show build configuration
  • -formats, show available formats
  • -muxers, show available muxers
  • -demuxers, show available demuxers
  • -devices, show available devices
  • -codecs, show available codecs
  • -decoders, show available decoders
  • -encoders, show available encoders
  • -bsfs, show available bit stream filters
  • -protocols, show available protocols
  • -filters, show available filters
  • -pix_fmts, show available pixel formats
  • -layouts, show standard channel layouts
  • -sample_fmts, show available audio sample formats
  • -dispositions, show available stream dispositions
  • -colors, show available color names

设置

  • -loglevel loglevel, set logging level
  • -v loglevel, set logging level
  • -report, generate a report
  • -max_alloc bytes set maximum size of a single allocated block
  • -sources device, list sources of the input device
  • -sinks device, list sinks of the output device
  • -x width, force displayed width | 强制显示宽带
  • -y height, force displayed height | | 强制显示高度
  • -s size, set frame size (WxH or abbreviation)
  • -fs, force full screen | 以全屏模式启动
  • -an, disable audio | 禁用音频(不播放声音)
  • -vn, disable video | 禁用视频(不播放视频)
  • -sn, disable subtitling | 禁用字幕(不显示字幕)
  • -ss pos, seek to a given position in seconds 跳转到指定的位置,注意时间单位;比如:
    • 55, 55 seconds
    • 12:03:45, 12 hours, 03 minutes and 45 seconds
    • 23.189, 23.189 second
  • -t duration , play “duration” seconds of audio/video | 设置播放视频/音频长度,时间单位如 -ss选项
  • -bytes val, seek by bytes 0=off 1=on -1=auto | 按字节进行跳转(0=off 1=on -1=auto)
  • -seek_interval seconds, set seek interval for left/right keys, in seconds 自定义左/右键定位拖动间隔(以秒为单位),默认值为10秒
  • -nodisp, disable graphical display 关闭图形化显示窗口,视频将不显示
  • -noborder, borderless window 无边框窗口
  • -alwaysontop, window always on top
  • -volume volume, set startup volume 0=min 100=max | 设置起始音量。音量范围[0 ~100]
  • -f fmt, force format
  • -window_title window title, set window title | 设置窗口标题(默认为输入文件名)
  • -af filter_graph, set audio filters
  • -showmode mode, select show mode (0 = video, 1 = waves, 2 = RDFT)
    设置显示模式,可用的模式值:0 显示视频,1 显示音频波形,2 显示音频频谱。
    缺省为0,如果视频不存在则自动选择2
  • -i input_file, read specified file
  • -codec decoder_name, force decoder
  • -autorotate, automatically rotate video

高级命令

  • -cpuflags flags, force specific cpu flags
    打印多个回放统计信息,包括显示流持续时间,编解码器参数,流中的当前位置,以及音频/视频同步差值。
    默认情况下处于启用状态,要显式禁用它则需要指定-nostats。
  • -cpucount count, force specific cpu count
  • -hide_banner, hide_banner do not show program banner
  • -ast stream_specifier, select desired audio stream
    指定音频流索引,比如-ast 3,播放流索引为3的音频流
  • -vst stream_specifier, select desired video stream
    指定视频流索引,比如-vst 4,播放流索引为4的视频流
  • -sst stream_specifier, select desired subtitle stream
    指定字幕流索引,比如-sst 5,播放流索引为5的字幕流
  • -pix_fmt format, force pixel format
  • -stats, show status
  • -fast, non spec compliant optimizations
    非标准化规范的多媒体兼容优化。
  • -genpts, generate pts | 生成pts。
  • -drp, let decoder reorder pts 0=off 1=on -1=auto
  • -lowres
  • -sync type, force audio-video sync. type (type=audio/video/ext)
    同步类型 将主时钟设置为audio(type=audio),video(type=video)或external(type=ext),默认是audio为主时钟。
  • -autoexit, force at the end | 视频播放完毕后退出
  • -exitonkeydown, force on key down | 键盘按下任何键退出播放
  • -exitonmousedown, force on mouse down | 鼠标按下任何键退出播放
  • -loop loop count, force number of times the playback shall be looped
  • -framedrop, drop frames when cpu is too slow | 如果视频不同步则丢弃视频帧。当主时钟非视频时钟时默认开启。 若需禁用则使用 -noframedrop
  • -infbuf, don’t limit the input buffer size (useful with realtime streams)
    不限制输入缓冲区大小。尽可能快地从输入中读取尽可能多的数据。 播放实时流时默认启用,如果未及时读取数据,则可能会丢弃数据。
    此选项将不限制缓冲区的大小。若需禁用则使用 -noinfbuf
  • -left x pos, force the x position for the left of the window
  • -top y pos, force the y position for the top of the window
  • -vf filter_graph, force video filters
  • -rdftspeed msecs, rdft speed
  • -default, generic catch all option
  • -acodec decoder_name, force audio decoder | 强制使用设置的音频解码器进行音频解码
  • -scodec decoder_name, force subtitle decoder | 强制使用设置的字幕解码器进行字幕解码
  • -vcodec decoder_name, force video decoder | 强制使用设置的视频解码器进行视频解码
  • -find_stream_info, read and decode the streams to fill missing information with heuristics
  • -filter_threads, number of filter threads per graph

使用示例

播放

# 播放音频、视频文件
ffplay test.mp3ffplay input.mp4# 播放完自动退出
ffplay -autoexit input.mp4# 循环播放文件10次
ffplay 文件名 -loop 10# 播放本地文件, 设置标题
ffplay -window_title "test time" -ss 2 -t 10 -autoexit test.mp4# 播放网络流
ffplay -window_title "rtmp stream" rtmp://10.0.100.88:443/webcast/bshdlive-pc# 禁用音频或视频
# 禁用音频:
ffplay test.mp4 -an# 禁用视频:
ffplay test.mp4 -vn# 播放视频第一路音频流;参数如果是2 就是第二路音频流,如果没有就会静音。
ffplay 文件名 -ast 1# 播放视频第一路视频流;参数如果是2 就是第二路视频流 没有显示黑屏
ffplay 文件名 -vst 1# 播放pcm文件 必须设置参数正确
ffplay .pcm文件 -f 格式 -channels 2 声道数 -ar 采样率# -f rawvideo 代表原始格式
ffplay -f rawvideo -pixel_format yuv420p -s 480480 .yuv文件# -s 480480 宽高
-pixel_format yuv420p 表示格式# 播放rgb原始数据
ffplay -f rawvideo -pixel_format rgb24 -s 480*480 .rgb文件# 指定ffplay使用音频为基准进行音视频同步默认ffplay也是这样
ffplay 文件名 -sync audio# 指定ffplay使用视频为基准进行音视频同步
ffplay 文件名 -sync video# 指定ffplay使用外部时钟为基准进行音视频同步
ffplay 文件名 -ext video

# 强制解码器
# mpeg4解码器
ffplay -vcodec mpeg4 test.mp4# h264解码器:
ffplay -vcodec h264 test.mp4 # 播放YUV数据
ffplay -pixel_format yuv420p -video_size 320x240 -framerate 5 yuv420p_320x240.yuv# 播放RGB数据
ffplay -pixel_format rgb24 -video_size 320x240 -i rgb24_320x240.rgbffplay -pixel_format rgb24 -video_size 320x240 -framerate 5 -i rgb24_320x240.rgb# 播放PCM数据
ffplay -ar 48000 -ac 2 -f f32le 48000_2_f32le.pcm-ar set audio sampling rate (in Hz) (from 0 to INT_MAX) (default 0)-ac set number of audio channels (from 0 to INT_MAX) (default 0)

简单过滤器

# 视频旋转
ffplay -i test.mp4 -vf transpose=1# 视频反转
ffplay test.mp4 -vf hflip
ffplay test.mp4 -vf vflip# 视频旋转和反转
ffplay test.mp4 -vf hflip,transpose=1# 音频变速播放
ffplay -i test.mp4 -af atempo=2# 视频变速播放
ffplay -i test.mp4 -vf setpts=PTS/2# 音视频同时变速
ffplay -i test.mp4 -vf setpts=PTS/2 -af atempo=2

ffprobe 查看视频信息

选项说明

  • -L, 显示协议
  • -h/-?/-help/--help topic, 帮助可以选择话题
  • -version, 显示版本
  • -buildconf, 展示编译配置选项
  • -formats, 显示支持的编码
  • -muxers, 展示支持的封装器
  • -demuxers, 展示支持的解封装器
  • -devices, 展示支持的设备
  • -codecs, 展示支持的编码
  • -decoders, 显示支持的解码器
  • -encoders, 显示支持的编码器

  • -bsfs, 显示支持的比特流过滤器
  • -protocols, 展示支持的协议
  • -filters, 展示支持的过滤器
  • -pix_fmts, 显示支持的像素格式
  • -layouts, 展示支持的声道格式
  • -sample_fmts, 显示支持的采样格式
  • -colors, 展示支持的颜色名称
  • -loglevel loglevel, 设置日志级别
  • -v loglevel, 设置日志级别
  • -report, 生成报告
  • -max_alloc bytes, 设置单个已分配块的最大大小
  • -cpuflags flags, 指定cpu标志
  • -hide_banner hide_banner, 不显示程序横幅
  • -sources device, 列出源的输出设备
  • -sinks device, 列出输出设备的接收器
  • -f format, 指定格式
  • -unit, 显示显示值的单位
  • -prefix, 对显示的值使用SI前缀
  • -byte_binary_prefix, 对字节单位使用二进制前缀
  • -sexagesimal, 对时间单位使用六十进制格式 HOURS:MM:SS.MICROSECONDS
  • -pretty, 美化显示输出的值,让人可读

  • -print_format format, 设置打印格式 (available formats are: default, compact, csv, flat, ini, json, xml)
  • -of format, -print_format的编码

  • -select_streams stream_specifier, 选择指定的stream
  • -sections, 打印节结构和节信息,然后退出

  • -show_data, 显示数据包信息
  • -show_data_hash, 显示数据包hash值
  • -show_error, 显示探测中的错误
  • -show_format, 显示格式/容器信息
  • -show_frames, 显示帧信息
  • -show_format_entry entry, 显示格式/容器信息中的特定条目
  • -show_entries entry_list, 显示一组指定的项
  • -show_log, 显示log
  • -show_packets, 显示packet信息
  • -show_programs , 显示程序信息
  • -show_streams, 显示stream的信息
  • -show_chapters, 显示chapters的信息
  • -count_frames, 每个stream中的帧数
  • -count_packets, 每个stream中的包数量

  • -show_program_version, ffprobe的版本
  • -show_library_versions, 库的版本
  • -show_versions, 程序和库的版本号

  • -show_pixel_formats, 展示像素格式描述
  • -show_private_data, 显示私有数据
  • -private, 和显示私有数据一样
  • -bitexact, 强制提取bit输出
  • -read_intervals read_intervals, 设置读取间隔
  • -default, 默认所有选项
  • -i input_file, 读取指定文件
  • -print_filename print_file, 重新显示输入的文件名
  • -find_stream_info, 读取并解码流,用启发式方法填充缺失的信息

使用示例

基本使用

# 查看音频视频文件信息
ffprobe 文件名# 查看文件的输出格式信息,时间长度,文件大小,比特率,流数目等。
ffprobe -show_format 文件名# 以json格式输出 流 信息
ffprobe -print_format json -show_streams 文件名# 显示帧信息
ffprobe -show_frames 文件名# 查看包信息 
ffprobe -show_packets 文件名

输出格式

支持格式:xml、ini、json、csv、flat

ffprobe -show_format test.mp4 -print_format jsonffprobe -show_frames -of json input.flv

frame 帧信息

 # 查看视频总帧数
ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_frames -of default=nokey=1:noprint_wrappers=1 gemfield.mp4ffprobe -select_streams v -of xml -show_entries frame=pkt_pts,pkt_dts,pkt_size,pkt_duration,pict_type a.mp4# 查看音频总帧数
ffprobe -v error -count_frames -select_streams a:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1ffprobe -v error -count_frames -select_streams v:0 -show_entries stream=nb_read_frames -of default=nokey=1:noprint_wrappers=1 -skip_frame nokey gemfield.mp4 # 查看 key frame 所在的时间
ffprobe -v error -skip_frame nokey -select_streams v:0 -show_entries frame=pkt_pts_time -of csv=print_section=0 gemfield.mp4 # 查看 key frame 分布的情况
ffprobe -v error -show_frames gemfield.mp4 | grep pict_type# 查看 key frame 所在的帧数 
ffprobe -v error -select_streams v -show_frames -show_entries frame=pict_type -of csv gemfield.mp4 | grep -n I | cut -d ':' -f 1# 重新设置 key frame interval 
ffmpeg -i gemfield.mp4 -vcodec libx264 -x264-params keyint=1:scenecut=0 -acodec copy out.mp4# 查看视频波特率 
ffprobe -v error -select_streams v:0 -show_entries stream=bit_rate -of default=noprint_wrappers=1:nokey=1 gemfield.mp4

# 只查看音频(a)、视频(v)、字幕(s)的信息
ffprobe -show_frames -select_streams v -of json input.mp4
ffprobe -show_frames -select_streams a -of json input.mp4

# packet 数据包 
ffprobe -show_packets video.mp4

show_packets 查看的多媒体包信息使用PACKET标签所包括起来,其中包含的信息主要如下:

  • codec_type: 多媒体类型,例如视频包,音频包等;
  • stream_index: 多媒体的stream索引;
  • pts: 多媒体的显示时间值
  • pts_time: 根据不同格式计算过后的多媒体的显示时间
  • dts: 多媒体解码时间值
  • dts_time: 根据不同格式计算过后的多媒体解码时间
  • duration: 多媒体包占用的时间值
  • duration_time: 根据不同格式计算过后的多媒体包占用的时间值
  • size: 多媒体包的大小
  • pos: 多媒体包所在的文件偏移位置
  • flags: 多媒体包标记,关键包与非关键包的标记

ffmpeg

ffmpeg [global options] {[infile options]['-i' 'infile'] ...} {[outfile options] 'outfile' ...}

参数选项由三部分组成:可选的一组全局参数、一组或多组输入文件参数、一组或多组输出文件参数。
其中,每组输入文件参数以 -i 为结束标记;
每组输出文件参数以输出文件名为结束标记。


ffmepg 中的转码过程,如下图:

 _______              ______________
|       |            |              |
| input |  demuxer   | encoded data |   decoder
| file  | ---------> | packets      | -----+
|_______|            |______________|      |v_________|         || decoded || frames  ||_________|________             ______________       |
|        |           |              |      |
| output | <-------- | encoded data | <----+
| file   |   muxer   | packets      |   encoder
|________|           |______________|

Filtering

Simple filtergraphs

 _________                        ______________
|         |                      |              |
| decoded |                      | encoded data |
| frames  |\                   _ | packets      |
|_________| \                  /||______________|\   __________   /simple     _\||          | /  encoderfiltergraph   | filtered |/| frames   ||__________|_______        _____________        _______        ________
|       |      |             |      |       |      |        |
| input | ---> | deinterlace | ---> | scale | ---> | output |
|_______|      |_____________|      |_______|      |________|

Complex filtergraphs

 _________
|         |
| input 0 |\                    __________
|_________| \                  |          |\   _________    /| output 0 |\ |         |  / |__________|_________     \| complex | /
|         |     |         |/
| input 1 |---->| filter  |\
|_________|     |         | \   __________/| graph   |  \ |          |/ |         |   \| output 1 |_________   /  |_________|    |__________|
|         | /
| input 2 |/
|_________|

命令说明

基本选项

支持能力

  • -formats, 列出支持的文件格式。
  • -codecs, 列出支持的编解码器。
  • -decoders, 列出支持的解码器。
  • -encoders, 列出支持的编码器。
  • -protocols, 列出支持的协议。
  • -bsfs, 列出支持的比特流过滤器。
  • -filters, 列出支持的滤镜。
  • -pix_fmts, 列出支持的图像采样格式。
  • -sample_fmts, 列出支持的声音采样格式。

常用输入选项

  • -i filename, 指定输入文件名。
  • -f fmt, 强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
  • -ss hh:mm:ss[.xxx], 设定输入文件的起始时间点,启动后将跳转到此时间点然后开始读取数据。
  • -y, 覆盖已有文件。
  • -t duration, 指定时长。
  • -fs limit_size, 设置文件大小的上限。
  • -ss limit_size, 从指定的时间(单位为秒)开始,也支持[-]hh:mm:ss[.xxx]格式
  • -re, 代表按照帧率发送。在作为推流工具的时候一定要加入该参数,否则ffmpeg会按照最高速率向流媒体服务器不停地发送数据。
  • -map, 指定输出文件的流映射关系。如果没有-map选项,则ffmpeg采用默认的映射关系。

对于输入,以下选项通常是自动识别的,但也可以强制设定。

  • -c codec, 指定解码器,需使用能力集列表中的名称。
  • -acodec codec, 指定声音的解码器,需使用能力集列表中的名称。
  • -vcodec codec, 指定视频的解码器,需使用能力集列表中的名称。
  • -b:v bitrate, 设定视频流的比特率,整数,单位bps。
  • -r fps, 设定视频流的帧率,整数,单位fps。
  • -s WxH, 设定视频的画面大小。也可以通过挂载画面缩放滤镜实现。
  • -pix_fmt format, 设定视频流的图像格式(如RGB还是YUV)。
  • -ar sample rate, 设定音频流的采样率,整数,单位Hz。
  • -ab bitrate, 设定音频流的比特率,整数,单位bps。
  • -ac channels, 设置音频流的声道数目。

常用输出选项

  • -f fmt, 强制设定文件格式,需使用能力集列表中的名称(缺省是根据扩展名选择的)。
  • -c codec, 指定编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
  • -acodec codec, 指定声音的编码器,需使用能力集列表中的名称(编码器设定为”copy“表示不进行编解码)。
  • -vcodec codec, 指定视频的编码器,需使用能力集列表中的名称(编解码器设定为”copy“表示不进行编解码)。
  • -r fps, 设定视频编码器的帧率,整数,单位fps。
  • -pix_fmt format, 设置视频编码器使用的图像格式(如RGB还是YUV)。
  • -ar sample rate, 设定音频编码器的采样率,整数,单位Hz。
  • -b bitrate, 设定音视频编码器输出的比特率,整数,单位bps。
  • -ab bitrate, 设定音频编码器输出的比特率,整数,单位bps。
  • -ac channels, 设置音频编码器的声道数目。
  • -an, 忽略任何音频流。
  • -vn, 忽略任何视频流。
  • -t hh:mm:ss[.xxx], 设定输出文件的时间长度。
  • -to hh:mm:ss[.xxx], 如果没有设定输出文件的时间长度的画可以设定终止时间点。

流标识

FFMPEG的某些选项可以对一个特定的媒体流起作用,这种情况下需要在选项后面增加一个流标识。流标识允许以下几种格式`,

  • 流序号。譬如“:1”表示第二个流。
  • 流类型。譬如“:a“表示音频流,流类型可以和流序号合并使用,譬如“🅰️1”表示第二个音频流。
  • 节目。节目和流序号可以合并使用。
  • 流标识。流标识是一个内部标识号。

假如要设定第二个音频流为copy,则需要指定-codec🅰️1 copy


音频选项

  • -ab, 设置比特率(单位为bit/s)。
  • -aq, 等价于q:a,老版本为qscale:a,用于设定音频质量。
  • -aq quality, 设置音频质量(指定编码)。
  • -ar rate, 设置音频采样率(单位为Hz)。
  • -ac channels, 设置声道数。1就是单声道,2就是立体声。
  • -an, 取消音频轨。
  • -acodec codec, 指定音频编码('copy’代表不做音频转码)。
  • -aframes, 等价于frames:a,输出选项,用于指定输出的音频帧数目。
  • -atag, 等价于tag:a,用于设定音频流的标签。
  • -af, 等价于filter:a,用于设定一个声音的后处理过滤链,其参数为一个描述声音后处理链的字符串。
  • -vol volume, 设置录制音量大小(默认256)<百分比>。

视频选项

  • -b, 指定比特率(bit/s),ffmpeg是自动使用VBR的,若指定了该参数则使用平均比特率。
  • -bitexact, 使用标准比特率。
  • -vb, 指定视频比特率(bit/s).
  • -r rate, 帧速率(fps)。
  • -s size, 指定分辨率(320 * 320)
  • -aspect aspect, 设置视频长宽比(4:3,16:9或者1.3333,1.7777)。
  • -croptop size, 设置顶部切除尺寸(in pixels)。
  • -cropbottom size, 设置顶底切除尺寸(in pixels)。
  • -cropleft size, 设置左切除尺寸(in pixels)。
  • -cropright size, 设置右切除尺寸(in pixels)。
  • -padtop size, 设置顶部补齐尺寸(in pixels)。
  • -padbottom size, 设置底部补齐尺寸(in pixels)。
  • -padleft size, 设置左补齐尺寸(in pixels)。
  • -padright size, 设置右补齐尺寸(in pixels)。
  • -padcolor color, 补齐带颜色(000000-FFFFFF)。
  • -vn, 取消视频的输出。
  • -vcode codec, 强制使用 codec 编解码方式( 'copy’代表不进行重新编码)。
  • -vframes, 等价于 frames:v,输出选项,用于指定输出的视频帧数目。
  • -aspect, 设置宽高比,如4:3、16:9、1.3333、1.7777等。
  • -bits_per_raw_sample, 设置每个像素点的比特数。
  • -vstats, 产生video统计信息。
  • -vf, 等价于 filter:v,用于设定一个图像的后处理过滤链,其参数为一个描述图像后处理链的字符串。
  • -vtag, 等价于 tag:v,用于设定视频流的标签。
  • -force_fps, 强制设定视频帧率。
  • -force_key_frames, 显式控制关键帧的插入,参数为字符串,可以是一个时间戳,也可以是一个 expr:前缀的表达式。如 -force_key_frames 0:05:00-force_key_frames expr:gte(t,n_forced*5)

高级选项

  • -re, 要求按照既定速率处理输入数据,这个速率即是输入文件的帧率。
  • -map, 指定输出文件的流映射关系。例如 “-map 1:0 -map 1:1”要求将第二个输入文件的第一个流和第二个流写入到输出文件。如果没有-map选项,ffmpeg采用缺省的映射关系。

使用示例

查看支持信息

# 查看FFmpeg支持的编码器
ffmpeg configure -encoders# 查看FFmpeg支持的解码器
ffmpeg configure -decoders# 查看FFmpeg支持的通信协议 
ffmpeg configure -protocols# 查看FFmpeg所支持的音视频编码格式、文件封装格式与流媒体传输协议
ffmpeg configure --help# 列出ffmpeg支持的所有格式
ffmpeg -formats
# 将一个老式的avi文件转成mp4
ffmpeg -i final.avi -acodec copy -vcodec copy final.mp4 

# 从一个视频文件中抽取一帧图像
ffmpeg -y -i test.mp4 -ss 00:03:22.000 -vframes 1 -an test.jpg

ffmpeg -i final.avi -vf scale=640:640 square.avi  

4、

# 使用alsa接口录制一段音频存放到某个wav文件中
ffmpeg -f alsa -i hw:0 -t 100 alsaout.wav# 使用alsa接口搭建一个个人网络电台
ffmpeg -f alsa -i default -acodec aac -strict -2 -b:a 128k -r 44100 /var/www/data/main.m3u8

# 将一个mp4文件的音视频流实时转码之后发送给某个远程设备,远程设备可以通过http获取的sdp文件来接收rtp媒体数据。
ffmpeg -re -i example.mp4 -acodec copy -vcodec libx264 -s 480x270 -map 0:0 -f rtp rtp://10.131.202.62:1234 -map 0:1 -f rtp rtp://10.131.202.62:1238 > /var/www/live.sdp


操作视频

设置视频的屏幕高宽比

ffmpeg -i input.mp4 -aspect 16:9 output.mp4 

通常使用的宽高比是:
16:9
4:3
16:10
5:4
2:21:1
2:35:1
2:39:1


编码格式转换

MPEG4编码转成H264编码

ffmpeg -i input.mp4 -strict -2 -vcodec h264 output.mp4

H264编码转成MPEG4编码

ffmpeg -i input.mp4 -strict -2 -vcodec mpeg4 output.mp4

视频压缩

ffmpeg -i 2020.mp4 -vcodec h264 -vf scale=640:-2 -threads 4 2020_conv.mp4ffmpeg -i 1579251906.mp4 -strict -2 -vcodec h264 1579251906_output.mp4

参数解释:

  • -i 2020.mp4, 输入文件,源文件
  • 2020_conv.mp4, 输出文件,目标文件
  • -vf scale=640:-2, 改变视频分辨率,缩放到640px宽,高度的-2是考虑到libx264要求高度是偶数,所以设置成-2,让软件自动计算得出一个接近等比例的偶数高
  • -threads 4, 4核运算

其他参数:

  • -s 1280x720 设置输出文件的分辨率,w*h
  • -b:v, 输出文件的码率,一般500k左右即可,人眼看不到明显的闪烁,这个是与视频大小最直接相关的。
  • -preset, 针对特定类型的源内容(比如电影、动画等),还可以使用-tune参数进行特别的优化。
    指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。
    与 veryslow相比,placebo以极高的编码时间为代价,只换取了大概1%的视频质量提升。这是一种收益递减准则:slow 与 medium相比提升了5%~10%;slower 与 slow相比提升了5%;veryslow 与 slower相比提升了3%。
  • -an, 去除音频流。
  • -vn, 去除视频流。
  • -c:a, 指定音频编码器。
  • -c:v, 指定视频编码器,libx264,libx265,H.262,H.264,H.265。
    • libx264:最流行的开源 H.264 编码器。
    • NVENC:基于 NVIDIA GPU 的 H.264 编码器。
    • libx265:开源的 HEVC 编码器。
    • libvpx:谷歌的 VP8 和 VP9 编码器。
    • libaom:AV1 编码器。
  • -vcodec copy, 表示不重新编码,在格式未改变的情况采用。
  • -re, 以源文件固有帧率发送数据。
  • -minrate 964K -maxrate 3856K -bufsize 2000K, 指定码率最小为964K,最大为3856K,缓冲区大小为 2000K。
  • -y, 不经过确认,输出时直接覆盖同名文件。
  • -crf, 参数来控制转码,取值范围为 051,其中0为无损模式,1828是一个合理的范围,数值越大,画质越差。

视频拼接

# 将4个视频拼接成一个很长的视频(无声音)
ffmpeg -i 0.mp4 -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex '[0:0][1:0] [2:0][3:0] concat=n=4:v=1 [v]' -map '[v]' output.mp4# 将4个视频拼接成一个很长的视频(有声音)
ffmpeg -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex '[0:0][0:1] [1:0][1:1] [2:0][2:1] concat=n=3:v=1:a=1 [v][a]' -map '[v]' -map '[a]'  output.mp4

参数解释:

  • [0:0][0:1] [1:0][1:1] [2:0][2:1], 分别表示第1个输入文件的视频、音频,第2个输入文件的视频、音频,第3个输入文件的视频、音频。
  • concat=n=3:v=1:a=1, 表示有3个输入文件,输出一条视频流和一条音频流。
  • [v][a], 得到的视频流和音频流的名字,注意在 bash 等 shell 中需要用引号,防止通配符扩展。

横向拼接2个视频

ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex "[0:v]pad=iw*2:ih*1[a];[a][1:v]overlay=w" out.mp4

参数解释:

  • pad 将合成的视频宽高,这里iw代表第1个视频的宽,iw*2代表合成后的视频宽度加倍,ih为第1个视频的高,合成的两个视频最好分辨率一致。
  • overlay 覆盖,[a][1:v]overlay=w,后面代表是覆盖位置w:0。

竖向拼接2个视频

ffmpeg -i 0.mp4 -i 1.mp4 -filter_complex "[0:v]pad=iw:ih*2[a];[a][1:v]overlay=0:h" out_2.mp4

横向拼接3个视频

ffmpeg -i 0.mp4 -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw*3:ih*1[a];[a][1:v]overlay=w[b];[b][2:v]overlay=2.0*w" out_v3.mp4

竖向拼接3个视频

ffmpeg -i 0.mp4 -i 1.mp4 -i 2.mp4 -filter_complex "[0:v]pad=iw:ih*3[a];[a][1:v]overlay=0:h[b];[b][2:v]overlay=0:2.0*h" out_v4.mp4

4个视频2x2方式排列

ffmpeg -i 0.mp4 -i 1.mp4 -i 2.mp4 -i 3.mp4 -filter_complex "[0:v]pad=iw*2:ih*2[a];[a][1:v]overlay=w[b];[b][2:v]overlay=0:h[c];[c][3:v]overlay=w:h" out.mp4

切割视频

ffmpeg -i input.mp4 -ss 00:00:50.0 -codec copy -t 20 output.mp4
  • 表示将文件input.mp4从第50s开始剪切20s的时间,
  • 输出到文件output.mp4中,
  • 其中 -ss指定偏移时间( time Offset) ,
  • -t 指定的时长( duration)

视频帧操作

ffmpeg和H264视频的编解码

# 查看每帧的信息
ffprobe -v error -show_frames gemfield.mp4 

pict_type=I 可以看出这是个关键帧,然后key_frame=1 表示这是 IDR frame,如果 key_frame=0 表示这是 Non-IDR frame。


截取视频中的某一帧

把 gemfield.mp4 视频的第1分05秒的一帧图像截取出来。


input seeking

ffmpeg -ss 00:1:05 -i gemfield.mp4 -frames:v 1 out.jpg

output seeking

ffmpeg -i gemfield.mp4 -ss 00:1:05 -frames:v 1 out1.jpg

参数解释:

  • -frame:v 1,在video stream上截取1帧。
    input seeking使用的是key frames,所以速度很快;
    而output seeking是逐帧decode,直到1分05秒,所以速度很慢。

重要说明:

ffmpeg 截取视频帧有2种 seeking 方式,对应有2种 coding 模式:transcoding 和 stream copying(ffmpeg -c copy)。

transcoding 模式:需要 decoding + encoding 的模式,即先 decoding 再encoding。

stream copying 模式:不需要decoding + encoding的模式,由命令行选项-codec加上参数copy来指定(-c:v copy )。在这种模式下,ffmpeg在video stream上就会忽略 decoding 和 encoding步骤。


图片与视频

图片转视频(规则的名称)

ffmpeg -f image2 -i 'in%6d.jpg' -vcodec libx264 -r 25 -b 200k test.mp4

参数解释:

  • -r 25, 表示每秒播放25帧
  • -b 200k, 指定码率为200k

图片的文件名为"in000000.jpg",从0开始依次递增。


图片转视频(不规则的名称)

不规则图片名称转视频。


方法一

不规则图片名称合成视频文件。

ffmpeg -framerate 10 -pattern_type glob -i '*.jpg' out.mp4cat *.png | ffmpeg -f image2pipe -i - output.mp4

参数解释:

  • -framerate 10:视频帧率
  • -pattern_type glob:Glob pattern- 模糊匹配
  • -f image2pipe- :图像管道,模糊匹配得到图片名称

方法二

不规则图片名称合成视频文件。
先动手把不规则文件重命名规则图片名。

def getTpyeFile(filelist, type):     res = []     for item in filelist:name, suf = os.path.splitext(item) # 文件名,后缀if suf == type:res.append(item)return respwd = os.getcwd() # 返回当前目录的绝对路径
dirs = os.listdir() # 当前目录下所有的文件名组成的数组
typefiles = getTpyeFile(dirs, '.jpg')for i in range(0,len(typefiles)):os.rename(typefiles[i],"./%d.jpg" % (i)) #将文件以数字规则命令

将需要合成的图片放在txt中,通过读取txt文件合并成视频。

ffmpeg -f concat -i files.txt output.mp4

图片格式转换

# webp转换成jpg
ffmpeg -i in.webp out.jpg# webp转换成png
ffmpeg -i in.webp out.png# jpg转换成png 
ffmpeg -i in.jpg out.png# jpg转换成webp 
ffmpeg -i in.jpg out.webp# png转换成webp 
ffmpeg -i in.png out.webp# png转换成jpg 
ffmpeg -i in.png out.jpg

如果在手机中录制了一个时间比较长的视频无法分享到微信中,那么可以使用ffmpeg将该视频文件切割为多个文件

ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -codec copy small-2.mp4

# 使一个视频中的音频静音, 即只保留视频
ffmpeg -i input.mp4 -an -vcodec copy output.mp4

# 从MP4文件中抽取视频流导出为裸H264数据
ffmpeg -i output.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
  • 视频数据使用mp4toannexb这个bitstream filter来转换为原始的H264数据,

# 使用AAC音频数据和H264的视频生成MP4文件
ffmpeg -i test.aac -i test.h264 -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f mp4 output.mp4

7、

# 对音频文件的编码格式做转换
ffmpeg -i input.wav -acodec libfdk_aac output.aac

# 从WAV音频文件中导出PCM裸数据
ffmpeg -i input.wav -acodec pcm_s16le -f s16le output.pcm
  • 这样就可以导出用16个bit来表示一个sample的PCM数据了,
  • 并且每个sample的字节排列顺序都是小尾端表示的格式,
  • 声道数和采样率使用的都是原始WAV文件的声道数和采样率的PCM数据。

# 重新编码视频文件, 复制音频流, 同时封装到MP4格式的文件中
ffmpeg -i input.flv -vcodec libx264 -acodec copy output.mp4

# 将一个MP4格式的视频转换成为gif格式的动图
ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 image.gif
  • 上述代码按照分辨比例不动宽度改为100( 使用VideoFilter的scaleFilter) ,
  • 帧率改为10(-r),只处理前5秒钟(-t)的视频,生成gif

# 将一个视频的画面部分生成图片,可以用来分析一个视频里面的每一帧都是什么内容
ffmpeg -i output.mp4 -r 0.25 frames_%04d.png

# 使用一组图片可以组成一个gif
ffmpeg -i frames_%04d.png -r 5 output.gif

# 使用音量效果器,可以改变一个音频媒体文件中的音量
ffmpeg -i input.wav -af ‘volume=0.5’ output.wav
  • 上述命令是将input.wav中的声音减小一半, 输出到output.wav文件中,
  • 可以直接播放来听, 或者放到一些音频编辑软件中直接观看波形幅度的效果

# 淡入效果器的使用
ffmpeg -i input.wav -filter_complex afade=t=in:ss=0:d=5 output.wav
  • 上述命令可以将input.wav文件中的前5s做一个淡入效果, 输出到output.wav中,
  • 可以将处理之前和处理之后的文件拖到Audacity音频编辑软件中查看波形图

# 淡出效果器的使用
ffmpeg -i input.wav -filter_complex afade=t=out:st=200:d=5 output.wav
  • 上述命令可以将input.wav文件从200s开始, 做5s的淡出效果, 并放到output.wav文件中

# 将两路声音进行合并, 比如要给一段声音加上背景音乐
ffmpeg -i vocal.wav -i accompany.wav -filter_complex amix=inputs=2:duration=shortest output.wav
  • 上述命令是将vocal.wav和accompany.wav两个文件进行mix,
  • 按照时间长度较短的音频文件的时间长度作为最终输出的output.wav的时间长度。

# 对声音进行变速但不变调效果器的使用
ffmpeg -i vocal.wav -filter_complex atempo=0.5 output.wav
  • 上述命令是将vocal.wav按照0.5倍的速度进行处理生成output.wav,
  • 时间长度将会变为输入的2倍。 但是音高是不变的, 这就是大家常说的变速不变调

# 为视频增加水印效果
ffmpeg -i input.mp4 -i changba_icon.png -filter_complex '[0:v][1:v]overlay=main_w-overlay_w-10:10:1[out]' -map '[out]' output.mp4
  • 上述命令包含了几个内置参数,
  • main_w代表主视频宽度,
  • overlay_w代表水印宽度,
  • main_h代表主视频高度,
  • overlay_h代表水印高度

# 视频提亮效果器的使用
ffmpeg -i input.flv -c:v libx264 -b:v 800k  -c:a libfdk_aac -vf eq=brightness=0.25-f mp4 output.mp4
  • 提亮参数是brightness,取值范围是从-1.0到1.0,默认值是0

# 为视频增加对比度效果
ffmpeg -i input.flv -c:v libx264 -b:v 800k  -c:a libfdk_aac -vf eq=contrast=1.5 -f mp4 output.mp4
  • 对比度参数是contrast, 取值范围是从-2.0到2.0, 默认值是1.0

# 视频旋转效果器的使用
ffmpeg -i input.mp4 -vf "transpose=1" -b:v 600k output.mp4

# 视频裁剪效果器的使用
ffmpeg -i input.mp4 -an -vf "crop=240:480:120:0" -vcodec libx264 -b:v 600k output.mp4

# 将一张RGBA格式表示的数据转换为JPEG格式的图片
ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -i texture.rgb -f image2 -vcodec mjpeg output.jpg

23、

# 将一个YUV格式表示的数据转换为JPEG格式的图片
ffmpeg -f rawvideo -pix_fmt yuv420p -s 480*480 -i texture.yuv -f image2 -vcodec mjpeg output.jpg

24、

# 将一段视频推送到流媒体服务器上
ffmpeg -re -i input.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
  • 上述代码中, rtmp: //xxx代表流媒体服务器的地址,
  • 加上-re参数代表将实际媒体文件的播放速度作为推流速度进行推送

# 将流媒体服务器上的流dump到本地ffmpeg -i http://xxx/xxx.flv -acodec copy -vcodec copy -f flv output.flv
  • 上述代码中, http://xxx/xxx.flv 代表一个可以访问的视频网络地址,
  • 可按照复制视频流格式和音频流格式的方式, 将文件下载到本地的output.flv媒体文件中

将两个音频文件以两路流的形式封装到一个文件中,

  • 比如在K歌的应用场景中, 原伴唱实时切换的场景下,
  • 可以使用一个文件包含两路流, 一路是伴奏流, 另外一路是原唱流
ffmpeg -i 131.mp3 -i 134.mp3 -map 0:a -c:a:0 libfdk_aac -b:a:0 96k -map 1:a -c:a:1libfdk_aac -b:a:1 64k -vn -f mp4 output.m4a

ffmpeg -formats
列出ffmpeg支持的所有格式ffmpeg -i 输入文件 -ss 00:00:50.0 -codec copy -t 20 输出文件名
-i 指定输入文件
-ss 从指定时间开始
-codec 强制使用codec编解码方式 copy代表不进行重新编码
-t 指定时长 秒
剪切一段媒体文件ffmpeg -i input.mp4 -t 00:00:50 -c copy small-1.mp4 -ss 00:00:50 -codec copy small-2.mp4
将一个时间比较长的视频文件切割为多个文件ffmpeg -i input.mp4 -vn -acodec copy output.m4a
-vn 取消视频输出 -acodec 指定音频编码 copy代表不进行重新编码
提取一个视频文件中的音频文件ffmpeg -i input.mp4 -an -vcodec copy output.mp4
-an 取消音频输出 -vcodec 指定视频编码 copy代表不进行重新编码
使一个视频中的音频静音,只保留视频ffmpeg -i output.mp4 -an -vcodec copy -bsf:v h264_mp4toannexb output.h264
视频数据使用h264_mp4toannexb这个bitstream filter来转换为原始的H264数据。
从mp4文件中抽取视频流导出为裸H264数据ffmpeg -i test.aac -i test.h264 -acodec copy -bsf:a aac_adtstoasc -vcodec copy -f mp4 output.mp4
-f 指定输出格式
使用aac音频数据和H264的视频生成MP4文件ffmpeg -i input.wav -acodec libfdk_aac output.aac
对音频文件的编码格式做转换ffmpeg -i input.wav -acodec pcm_s16le -f s16le output.pcm
从wav音频文件中导出pcm裸数据ffmpeg -i input.flv -vcodec libx264 -acodec copy output.mp4
重新编码视频文件,复制音频流 同时封装到MP4格式文件中ffmpeg -i input.mp4 -vf scale=100:-1 -t 5 -r 10 image.gif
-vf设置视频的过滤器
按照分辨率比例不动宽度改为100(使用videofilter的scalefilter),帧率改为10(-r)时长改为5(-t)
将一个MP4格式的视频转换为gif格式的动图ffmpeg -i input.mp4 -r 0.25 frames_%04d.png
每4 秒截取一帧视频生成一张图片,生成的图片从frames_0001.png开始递增ffmpeg -i frames_%04d.png -r 5 output.gif
使用一组图片可以组成一个gifffmpeg -i input.wav -af ‘volume=0.5’ output.wav
使用音量效果器,改变一个音频媒体文件中的音量ffmpeg -i input.wav -filter_complex afade=t=in:ss=0:d=5 output.wav
将该音频文件前5秒钟做一个淡入效果ffmpeg -i input.wav -filter_complex afade=t=out:st=200:d=5 output.wav
将音频从200s开始 做5秒的淡出效果ffmpeg -i input1.wav -i input2.wav -filter_complex amix=inputs=2:duration=shortest output.wav
将两个音频进行合并,按照时间较短的音频时间长度作为输出ffmpeg -i input.wav -filter_complex atempo=0.5 output.wav
将音频按照0.5倍的速度进行处理生成output.wav 时间长度变为原来的2倍,音高不变ffmpeg -i test.avi -i frames_0004.jpeg -filter_complex overlay after.avi
给视频添加水印ffmpeg -i test.avi -vf"drawtext=fontfile=simhei.ttf:text=‘雷’:x=100:y=10:fontsize=24:fontcolor=yellow:shadowy=2" after.avi
添加文字水印ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=brightness=0.25 -f mp4 output.mp4
视频提高亮度 参数brightness 取值范围-1.0到1.0。ffmpeg -i input.flv -c:v libx264 -b:v 800k -c:a libfdk_aac -vf eq=contrast=1.5 -f mp4 output.mp4
视频增加对比度 参数contrast,取值范围是从-2.0到2.0ffmpeg -i input.mp4 -vf “transpose=1” -b:v 600k output.mp4
视频旋转效果器使用ffmpeg -i input.mp4 -an -vf “crop=240:480:120:0” -vcodec libx264 -b:v 600k output.mp4
视频裁剪效果器使用ffmpeg -f rawvideo -pix_fmt rgba -s 480*480 -i texture.rgb -f image2 -vcodec mjpeg output.jpg
将一张RGBA格式表示的数据转换为JPEG格式的图片ffmpeg -f rawvideo -pix_fmt yuv420p -s 480*480 -i texture.yuv -f image2 -vcodec mjpeg output.jpg
将一个YUV格式表示的数据转换为JPEG格式的图片ffmpeg -re -i ipnut.mp4 -acodec copy -vcodec copy -f flv rtmp://xxx
将一段视频推送到流媒体服务器上ffmpeg -i http://xxx/xxx.flv -acodec copy -vcodec copy -f flv output.flv
将流媒体服务器上的流dump到本地

硬解码与软解码

CPU富余、需要精准控制解码流程、有解码算法的优化、通用性要求高,直接使用软解(也就是CPU解码);
有其他编解码芯片/模组、CPU不够用,就不得不需要转向硬解码(也就是专用芯片解码)。


分解与复用命令

ffplay animals.mp4ffmpeg -i animals.mp4 -vcodec copy -acodec copy animal.mov  格式转换,将mp4转成mov
ffplay animals.movffmpeg -i animal.mov -an -vcodec copy animal.h264  将mov抽取出视频,去掉音频
ffplay animals.h264	可以直接播放h264ffmpeg -i animal.mov -acodec copy -vn animal.aac 抽取音频

处理原始数据的命令

针对mp4格式的视频文件,不要音频,视频编码格式用rawvideo,像素格式为yuv420p,输出结果为yuv格式
ffmpeg -i animals.mp4 -an -c:v rawvideo -pix_fmt yuv420p animal.yuv ffplay -s 720x1280 animal.yuv 播放时一定要加分辨率大小不要视频,只要音频,音频采样率 44100,通道数 2,-f表示音频存储格式,s表示有正有负,每一个数值都用16位表示,l表示little,e表示end,小端存储
ffmpeg -i animals.mp4 -vn -ar 44100 -ac 2 -f s16le animal.pcmffplay -ar 44100 -ac 2 -f s16le animal.pcm 播放时一定要加参数

滤镜命令

视频画面大小裁剪

-vf表明后面是视频滤镜,这里使用crop滤镜,crop的参数是:in_w是本身视频的宽,减去200,in_h-200视频高度减去200
视频编码器libx264,音频编码器采用copy的模式,表示不处理音频
ffmpeg -i animal.mov -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy animal_crop.mp4
ffmpeg -i animal.mov -vf crop=in_w-200:in_h-200 -vcodec libx264 -acodec copy animal_crop.mp4 完全同上,使用-vcodec代替-c:v

裁剪与合并命令

视频裁剪:
从第0小时,第0分钟,第20s开始,裁剪10s的视频,输出格式是ts
ffmpeg -i animals.mp4 -ss 00:00:20 -t 10 animal_10s.ts视频拼接
将txt文件中的所有视频文件拼接成一个文件
ffmpeg -f concat -i inputs.txt animal_concat.mp4 其中inputs.txt:
file 'animal_10s.ts'
file 'animal_5s.ts'

图片与视频互转命令

视频转图片
-r指定转换图片的帧率,每秒转出1帧
-f告诉ffmpeg,我要将图片输出为image2格式
最后是命名格式
ffmpeg -i animals.mp4 -r 1 -f image2 images/image-%3d.jpeg  这里要自己提前建立好一个空的images文件夹
得到:
image-001.jpeg	image-002.jpeg	image-003.jpeg	image-004.jpeg	image-005.jpeg	image-006.jpeg	image-007.jpeg图片转视频
ffmpeg -i images/image-%3d.jpeg animal_images.mp4

直播拉流和推流

推流
-re 减慢帧率,不要追求尽可能快的播放
-c 表示同时包括音视频的编解码方式,都是copy
-f 表示推送出去的文件格式,是flv格式
ffmpeg -re -i animals.mp4 -c copy -f flv rtmp://server/live/streamName拉流
ffmpeg -i rtmp://server/live/streamName -c copy dump.flv  可以用ffplay去播放湖南卫视的rtmp地址:
ffplay rtmp://58.200.131.2:1935/livetv/hunantv然后用ffmpeg播放同样的地址:
ffmpeg -i rtmp://58.200.131.2:1935/livetv/hunantv -c copy dump.flv  同样的方法拉取cctv1的视频,它会保存成一段一段的:
ffmpeg -i http://ivi.bupt.edu.cn/hls/cctv1hd.m3u8 -c copy dump.m3u8 

2022-07-22(四)


http://www.ppmy.cn/news/624986.html

相关文章

毕业典礼分享:人生就是一场「读书会」

这是我在「产品家实战营」一期毕业典礼上的分享&#xff0c;比较感性&#xff0c;聊了聊如何在变化的时代里选择一份真正有保障的职业&#xff1a; 今天跟大家一起来想想我们自己的职业发展&#xff0c;或者说接下来未来到底应该往哪里走。可能是对长期有价值的一件事&#xff…

【论文阅读】浏览器扩展危害-Helping or Hindering? How Browser Extensions Undermine Security

本文来源于ACM CCS 2022&#xff1b; https://dl.acm.org/doi/10.1145/3548606.3560685 摘要 “浏览器扩展”是轻量级的浏览器附加组件&#xff0c;使用各个浏览器特定的功能丰富的JavaScript api&#xff0c;为用户提供了额外的Web客户端功能&#xff0c;如改进网站外观和与…

ECCV 2022|文本图像分析领域再起波澜,波士顿大学联合MIT和谷歌提出全新多模态新闻数据集NewsStories

原文链接&#xff1a;https://www.techbeat.net/article-info?id3992 作者&#xff1a;seven_ 在图像文本多模态分析任务中&#xff0c;大规模自监督预训练方法仍然是目前的主流方法&#xff0c;例如CLIP[1]和DALL-E[2]模型都是构建在自监督预训练语料库的基础之上。但是这些方…

android进阶4step2:Android音视频处理——音频管理

音频 转&#xff1a;Android】MediaPlayer之音频播放 转&#xff1a;Android】MediaPlayer生命周期分析 MediaPlayer MediaPlayer可以播放音频和视频 &#xff0c;它用于控制Android下播放文件或流的类。Android的多媒体框架支持各种常见的多媒体类型&#xff0c;这样在程序…

xvid 详解 代码分析 编译等

1. Xvid参数详解 众所周知&#xff0c;Mencoder以其极高的压缩速率和不错的画质赢得了很多朋友的认同&#xff01; 原来用Mencoder压缩Xvid的AVI都是使用Xvid编码器的默认设置&#xff0c;现在我来给大家冲冲电&#xff0c;讲解一下怎样使用Mencoder命令行高级参数制作Xvid编…

#FFMPEG4.3.1#命令行实现视频码率转换、缩放、剪切、填充、旋转操作(3)

# FFMPEG 4.3.1# 命令行实现视频码率转换、缩放、剪切、填充、旋转操作&#xff08;3&#xff09; 1、帧率、码率转换2、视频缩放命令3、视频剪切命令4、视频填充命令5、视频旋转命令6、使用工具(附下载链接) 1、帧率、码率转换 ffmpeg -i input_60s.mp4 -r 25 output_25fps.m…

即时通讯音视频开发(十八):详解音频编解码的原理、演进和应用选型

1、引言 大家好&#xff0c;我是刘华平&#xff0c;从毕业到现在我一直在从事音视频领域相关工作&#xff0c;也有一些自己的创业项目&#xff0c;曾为早期Google Android SDK多媒体架构的构建作出贡献。 就音频而言&#xff0c;无论是算法多样性&#xff0c;Codec种类还是音频…

Linphone之Mediastreamer2分析

最近在算法移植中涉及到Linphone&#xff0c;于是开始研究Linphone。首先在Ubuntu下编译成功Linphone&#xff0c;然后开始研究源码&#xff0c;结合网上的资料&#xff0c;写了下面的学习笔记&#xff0c;其中参考的网上资料&#xff0c;在文中添加上链接。 Linphone之Medias…