avformat_write_header return 尝试将 PCMU 编码帧写入 avi/mov 文件时的错误代码

avformat_write_header return error code when trying to write PCMU encoded frame into avi/mov file

我正在尝试使用下面的程序将 PCMU G.711 enocded 数据写入 avi 多媒体容器,该程序产生 Error occurred when opening output file: Operation not permitted,当使用 mov 容器时,它产生 Error occurred when opening output file: Invalid argument.我将 AV_CODEC_ID_PCM_U16LE 设置为输出格式的音频编解码器,将 AV_SAMPLE_FMT_S16 设置为示例格式。

这里有什么问题?提前致谢!

您正在写入 AV_CODEC_ID_PCM_U16LE,这不是 G711,而是原始 PCM 无符号 16 位数据。 AVI/mov 不支持这个(他们支持带符号的 16 位 PCM 数据,或 8 位无符号 PCM 数据,但不支持无符号的 16 位 PCM 数据)。所以这就是你收到此错误的原因。但无论如何,你还是不想用它,因为它不是 G711。

G711 有两种类型:mu-law 或 a-law,所以你必须决定你想要哪两种,然后使用正确的 AVCodecID(AV_CODEC_ID_PCM_ALAW 或 CODEC_ID_PCM_MULAW) .