当前位置: 首页 > 知识库问答 >
问题:

将MXF视频的多个(N)单声道合并为MP4视频的多个(M)立体声道

万俟棋
2023-03-14

我有一个包含16个音频单声道流的MXF文件,我需要将其重新编码到一个mp4文件中,该文件包含2<=n<=16个合并输入流的声道,例如,输出声道1上的输入声道1和2,输出声道2上的输入声道9和10。这项工作将用FFMPEG完成。我阅读了文档,发现amerge和amix滤波器会很好,但它们只输出一个通道。这个问题有什么解决办法吗?

谢谢,劳拉

共有1个答案

汤枫
2023-03-14

代码是用换行符组织的。\在Unix shell中中断一行。

ffmpeg -i "in.mxf" \
-filter_complex "\
[a:0][a:1]amerge=inputs=2[ch1ch2];\
[a:8][a:9]amerge=inputs=2[ch9ch10]" \
-map 'v:0' \
-map '[ch1ch2]' \
-map '[ch9ch10]' \
-c:v copy \
-c:a aac -b:a 128k -ar 48000 -ac 2 \
"out.mp4"
  • 输入
  • filter_complex(使用而不是'。如果我使用shell换行符\,我会得到一个带有单引号的错误')
  • 使用amerge筛选并选择
    • 第一个音频流A:0
    • 第二个音频流A:1
    • 合并它们并
    • 将其存储在输出板中ch1ch2(您可以给它取任何名称)
    • 第9个音频流A:8
    • 第10个音频流A:9
    • 合并它们并
    • 将其存储在输出板中ch9ch10

    这里的输出只有2个映射的音频通道。

    如果你想保留一些剩余的通道,你必须映射它们。您甚至可以在第7行之后添加-map0,以便将所有流堆叠在合并流下面。(当然,你最终会得到2+16个音频流。)

    这对于测试很有用,因为您可以看到VLC中的名称。

 类似资料:
  • 我已经使用程序youtube-dl下载了一个YouTube播放列表,我选择了单独下载视频和音频,我现在有一个文件夹充满了视频及其相应的音频,我希望与ffmpeg合并在一起。 我需要使用批处理脚本来执行此操作,但问题是youtube-dl在原始文件的标题之后添加了临时字母,因此视频与其对应的音频没有相同的名称,文件名如下所示: 如何使用windows批处理脚本和ffmpeg合并这些多个视频/音频文件

  • 我正在尝试将具有多个视频流和一个音频流的视频从mxf格式转换为mp4格式,但出现了一个错误。我如何解决这个问题?非常感谢。 我的FFPROBE输出

  • 我面临的情况是,我必须使用2 Mono,其中第二个将依赖于第一个的Id字段,并在第一个Mono的主体中返回第二个的响应。 例如: 然后将结果返回为 我试过了 但像这样,我只能返回第二个单声道的响应。 通过尝试Map或Flatmap,它只在第二个单声道上起作用。 请提出建议。

  • 我正在尝试通过YouTube数据API v3将视频上传到多个频道。 当我将视频上传到主默认频道时,我可以正确地做到这一点,但是当我们尝试将它们上传到同一Youtube帐户的另一个频道时,却无法做到(因此OAuth2凭据应该是有效的)。 根据文档,在调用endpoint时,我必须将以下参数传递给API:onBehalfOfContentOwnerChannel和onBehalfOfContentOw

  • 多媒体 HTML5 前的多媒体需要借助第三方插件,例如 Flash,但是 HTML5 将网页中的多媒体带入了新的一章。 基本用法 // 音频 // 指定资源类型可以帮助浏览器更快的定位解码 <audio autobuffer autoloop loop controls> <source src="/media/audio.mp3" type="audio/mpeg"> <source s

  • 我曾尝试使用GStreamer管道将mp4视频转换为avi视频,但它是在没有声音的情况下转换的 gst launch-t-v filesrc location=源。mp4!qtdemux!ffdec\U h264!视频/x-raw-yuv!avimux!filesink location=结果yuv。avi公司