ffmpeg -map 是什么意思?


author: hjjdebug

date: 2025年 12月 10日 星期三 17:17:44 CST

descrip: ffmpeg -map 是什么意思?


  1. -map 选项: 是每一个文件对应的选项,用于指定输出流对应的输入流.
    用ffmpeg -h long |grep map
    可以看到帮助:
cpp 复制代码
Advanced per-file options:
-map [-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]  set input stream mapping

这个帮助信息,来源于ffmpeg_opt.c 中有一项map 的描述.

cpp 复制代码
    { "map", HAS_ARG | OPT_EXPERT | OPT_PERFILE | OPT_OUTPUT, { .func_arg = opt_map },
        "set input stream mapping",
        "[-]input_file_id[:stream_specifier][,sync_file_id[:stream_specifier]]" },

我们跟踪一下函数执行代码 opt_map, 可知道它到底干了什么.

从map 的value 中可得到file_index, 可得到stream_index, 把这个流或这些流都添加到optctx中,供以后打开输出文件时使用

  1. 举例
    例如: ffmpeg 执行如下命令:
cpp 复制代码
$ ffmpeg -i 1.ts -filter_complex "[0]split[out1][out2]" -map "[out1]" output1.ts -map "[out2]" output2.ts -v debug -y

打开output1.ts 有选项 -map "[out1]", "[" 说明数据来源是filter

打开输出文件时,会分析输出文件的选项, 见map选项 write_option 时要执行

static int opt_map(void* optctx, const char* opt, const char* arg)

其中optctx 就是OptionsContext 对象, OptionsContext* o = (OptionsContext *)optctx;

opt="map",

arg="[out1]"

该函数执行后要在o->stream_maps 上 重新分配出一个map 对象. 上面写上:

cpp 复制代码
p *m
$7 = {
  disabled = 0,
  mp_file_index = 0,
  stream_index = 0,
  linklabel = 0x51b340 "out1"
}

在打开文件时会用到OptionsContext o,

ret = open_file(&o, g->arg); //g->arg 就是output1.ts

具体代码还是挺复杂的,看看它的log输出吧. (verbose)

cpp 复制代码
Opening an output file: output1.ts.
20251017 16:47:49.906 [out#0/mpegts @ 0x4f63c0] Adding streams from explicit maps...
20251017 16:49:45.213 [out#0/mpegts @ 0x4f63c0] Creating output stream from an explicitly mapped complex filtergraph 0, output [out1]
20251017 16:51:28.857 [vost#0:0/mpeg2video @ 0x6c9bc0] Created video stream from complex filtergraph 0:[split]
相关推荐
kkoral20 小时前
【FFmpeg 智慧园区场景应用】4.企业微信 / 钉钉机器人告警配置(替换邮件告警)
ffmpeg·钉钉·企业微信
kkoral1 天前
【FFmpeg 智慧园区场景应用】3.Shell脚本增强:故障自动重启 + 磁盘监控告警
ffmpeg
大大祥2 天前
Android FFmpeg集成
android·ffmpeg·kotlin·音视频·jni·ndk·音视频编解码
好多渔鱼好多2 天前
【流媒体】FFmpeg技术介绍与构建方法
ffmpeg
没有羊的王K2 天前
下载安装FFmpeg教程
ffmpeg
kkoral2 天前
【FFmpeg 智慧园区场景应用】1.实战命令清单
ffmpeg
天虎2 天前
使用VS2019编译ShiftMediaProject版本FFmpeg
ffmpeg
kkoral2 天前
【FFmpeg 智慧园区场景应用】2.自动化处理 Shell 脚本
运维·ffmpeg·自动化
代码煮茶君2 天前
FFmpeg 音视频转码全攻略:参数详解与实战指南
ffmpeg·音视频
深念Y3 天前
录屏意外中断的视频修复软件 untrunc
ffmpeg·文件·视频·录屏·软件·修复工具·untrunc