理解ffmpeg的map选项

3
我在博客文章中发现了以下命令,它可以创建不同质量的视频流,并通过dash muxer将其打包成DASH格式。
ffmpeg -i $VIDEO_IN \
    -preset $PRESET_P -keyint_min $GOP_SIZE -g $GOP_SIZE -sc_threshold 0 \
    -r $FPS -c:v libx264 -pix_fmt yuv420p -c:a aac -b:a 128k -ac 1 -ar 44100 \
    -map v:0 -s:0 $V_SIZE_1 -b:v:0 2M -maxrate:0 2.14M -bufsize:0 3.5M \
    -map v:0 -s:1 $V_SIZE_2 -b:v:1 145k -maxrate:1 155k -bufsize:1 220k \
    -map v:0 -s:2 $V_SIZE_3 -b:v:2 365k -maxrate:2 390k -bufsize:2 640k \
    -map v:0 -s:3 $V_SIZE_4 -b:v:3 730k -maxrate:3 781k -bufsize:3 1278k \
    -map v:0 -s:4 $V_SIZE_4 -b:v:4 1.1M -maxrate:4 1.17M -bufsize:4 2M \
    -map v:0 -s:5 $V_SIZE_5 -b:v:5 3M -maxrate:5 3.21M -bufsize:5 5.5M \
    -map v:0 -s:6 $V_SIZE_5 -b:v:6 4.5M -maxrate:6 4.8M -bufsize:6 8M \
    -map v:0 -s:7 $V_SIZE_6 -b:v:7 6M -maxrate:7 6.42M -bufsize:7 11M \
    -map v:0 -s:8 $V_SIZE_6 -b:v:8 7.8M -maxrate:8 8.3M -bufsize:8 14M \
    -map 0:a \
    -init_seg_name init\$RepresentationID\$.\$ext\$ -media_seg_name chunk\$RepresentationID\$-\$Number%05d\$.\$ext\$ \
    -use_template 1 -use_timeline 1  \
    -seg_duration 4 -adaptation_sets "id=0,streams=v id=1,streams=a" \
    -f dash Dash/dash.mpd

我不太明白的是地图如何工作。我已经阅读了地图文档,但它们似乎没有可比的示例。
  1. 为什么每个视频流都使用-map v:0?
  2. 为什么第一行映射操作流0(例如-b:v:0),而下一行映射操作流1(例如-b:v:1),依此类推。
非常感谢您的解答。
1个回答

0
为什么每个视频流都使用 -map v:0?
正确的字符串应该是 -map 0:v:0。文件索引被省略了,因此隐式地被解释为文件索引 0。最好避免使用这种语法。
第一行 map 操作在流 0 上(例如 -b:v:0),为什么?
不要按照行或选项与 map 的关系来思考。-b:v:0 中的 0 是流定位符的一部分,用于指定要定位的输出流。
参见: FFmpeg 中 -b:v 和 -b 有什么不同?

https://superuser.com/q/1219784/


有趣,那么所有的地图都可以合并在一起产生相同的结果吗?例如... -map 0:v:0 -map 0:v:0 -map 0:v:0 -map 0:v:0 -map 0:v:0 -map 0:v:0 -map0:v:0 -map 0:v:0 -map 0:v:0 -s:0 $V_SIZE_1 -b:v:0 2M -maxrate:0 2.14M -bufsize:0 3.5M -s:1 $V_SIZE_2 -b:v:1 145k -maxrate:1 155k -bufsize:1 220k - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接