如何将 wav 转换为带时间码的 mxf 文件?

How do I convert wav into an mxf file with timecode?

我正在寻找一种将 wav(16bit, 48kHz, LPCM) 转换为带时间码的 mxf 文件的方法。

由于ffmpeg支持mxf,我正在尝试,但我不知道命令

ffmpeg -i ./input.wav [hh:mm:ss.ff, name1] [hh:mm:ss.ff, name2]... ./output.mxf

我期待上面的命令,但是有人知道吗?

MXF 很痛苦

  • 默认的 MXF 多路复用器需要视频。
  • MXF 的 -timecode 选项需要视频。
  • mxf_opatom 多路复用器仅允许音频,但仅允许具有 48000 MHz 采样率的单声道,因此每个通道都需要在其自己的 MXF 文件中。

解决方法 1:管道

ffmpeg -i input.wav -ar 48000 -c:a pcm_s16le -timecode 01:02:03:04 -f nut - | ffmpeg -i - -c:a pcm_s16le -f mxf_opatom output.mxf
  • 我假设你的音频是单声道的(你没说是什么)。如果您的输入是多声道,则 output each channel into its own file.

  • 使用 01:02:03:04 用于非丢弃时间码,01:02:03.04 或 01:02:03;04 用于丢弃。

解决方法 2:Dummy/blank 视频

忽略视频。

非丢弃时间码:

ffmpeg -f lavfi -i color=r=25 -i input.wav -timecode 01:02:03:04 -c:a copy -shortest output.mxf

删除时间码:

ffmpeg -f lavfi -i color=r=30000/1001 -i input.wav -timecode 01:02:03.04 -c:a copy -shortest output.mxf