从视频文件ffmpeg中删除流

Delete stream from video file ffmpeg

如何从该视频文件中删除最后一个流?

$ ffmpeg -i video.mp4
...
    Stream #0:0(und): Video: h264 (High 4:2:2) (avc1 / 0x31637661), yuv422p10le, 480x270 [SAR 1:1 DAR 16:9], 172 kb/s, 25 fps, 25 tbr, 12800 tbn, 50 tbc (default)
    Metadata:
      handler_name    : SoundHandler
      timecode        : 00:00:00:00
    Stream #0:1(eng): Audio: aac (LC) (mp4a / 0x6134706D), 48000 Hz, stereo, fltp, 119 kb/s (default)
    Metadata:
      handler_name    : SoundHandler
    Stream #0:2(eng): Data: none (tmcd / 0x64636D74)
    Metadata:
      handler_name    : SoundHandler
      timecode        : 00:00:00:00
At least one output file must be specified

我想删除名为 Stream #0:2 的流。

我试过了

ffmpeg -i video.mp4 -map 0 -map -0:2 out.mp4

但仍然有三个流。

我也试过了

ffmpeg -i video.mp4 -map 0 -map -0:d:0 out.mp4

-map -0:d根据我对的解释,但是ffmpeg -i结果还是显示输出中有3条轨道

这两个我也试过

ffmpeg -i in.mp4 -c:v copy -c:a copy -map_chapters -1 out.mp4
ffmpeg -i in.mp4 -c copy -dn -map_metadata:c -1 out.mp4

来自 this question 但都不起作用。仍然有三个流,它们看起来与 ffmpeg -i in.mp4

相同

我终于找到了一个可行的方法:https://superuser.com/a/685911/325613

ffmpeg -i 01300.mov -filter_complex "[0:v]null[video_out];[0:a]anull[audio_out]" -map [video_out] -map [audio_out] out.mov

在 zsh 中我不得不逃避这些:-map \[video_out\] -map \[audio_out\].