我想从 6 个单声道创建一个 5.1 wav 文件。这 6 个单声道文件是 24 位,但 FFMPEG 输出 16 位 5.1。因此我强制 ffmpeg 以 24 位进行转码-c:pcm_s24le如上图:
'/Users/davincimp/Documents/ffmpeg/ffmpeg' -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.L.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.R.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.C.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.LFE.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.Ls.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.Rs.wav -c:a pcm_s24le -filter_complex '[0:a][1:a][2:a][3:a][4:a][5:a]join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR[a]' -map '[a]' /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/CN4.wav
但我收到了这条消息:文件大小 4621443998 对 wav 无效,输出文件将被损坏
Output #0, wav, to '/Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/CN4.wav':
Metadata:
ITCH : Pro Tools
originator_reference: au62Lxh4urQk
ICRD : 2019-12-23
time_reference : 172320000
ISFT : Lavf58.29.100
Stream #0:0: Audio: pcm_s24le ([1][0][0][0] / 0x0001), 48000 Hz, 5.1, s32, 6912 kb/s (default)
Metadata:
encoder : Lavc58.54.100 pcm_s24le
[wav @ 0x7faf65194600] Filesize 4621443998 invalid for wav, output file will be broken
size= 4513129kB time=01:29:08.89 bitrate=6912.0kbits/s speed= 418x
video:0kB audio:4513129kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.000003%
您知道如何将这 6 个单声道文件合并为 5.1 24 位吗?
最好的
罗宾
答案1
启用 RF64
从维基百科-WAV:
WAV 格式仅限于小于 4 GiB 的文件,因为它使用 32 位无符号整数来记录文件大小标头。虽然这相当于大约 6.8 小时的 CD 质量音频(44.1 kHz,16 位立体声),但有时需要超过此限制,尤其是当需要更高的采样率、位分辨率或通道数时。因此创建了 W64 格式以用于 Sound Forge。其 64 位标头允许更长的录制时间。欧洲广播联盟指定的 RF64 格式也是为了解决这个问题而创建的。
ffmpeg
您可以使用输出选项启用 RF64 -rf64
。来自ffmpeg -h muxer=wav
:
-rf64 <int> E........ Use RF64 header rather than RIFF for large files. (from -1 to 1) (default never)
auto E........ Write RF64 header if file grows large enough.
always E........ Always write RF64 header regardless of file size.
never E........ Never write RF64 header regardless of file size.
例子:
'/Users/davincimp/Documents/ffmpeg/ffmpeg' -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.L.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.R.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.C.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.LFE.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.Ls.wav -i /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/191223_Mix_Citoyen_Nobel-DCP.Rs.wav -c:a pcm_s24le -filter_complex '[0:a][1:a][2:a][3:a][4:a][5:a]join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-LFE|4.0-BL|5.0-BR[a]' -map '[a]' -rf64 auto /Volumes/ARECA_IN/PROJETS/CITOYENNOBEL/SON_CITOYENNOBEL/191223_Mix_Nobel_DCP/CN4.wav
请注意,输出将不是典型的 WAV 文件,因此无法保证播放器支持。
或者输出不同的容器格式
或者,您可以输出为不同的容器格式,例如.mka
,如果您的工作流程支持它。