【问题标题】:avformat_write_header return error code when trying to write PCMU encoded frame into avi/mov file尝试将 PCMU 编码帧写入 avi/mov 文件时,avformat_write_header 返回错误代码
【发布时间】:2015-08-09 14:56:47
【问题描述】:

我正在尝试使用以下程序将 PCMU G.711 编码数据写入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设置为样本格式。

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

【问题讨论】:

    标签: ffmpeg h.264 pcm avi mov


    【解决方案1】:

    您正在编写 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)。

    【讨论】:

    • 非常感谢您的回答!好吧,我明白我何时使用与CODEC_ID_PCM_MULAW 匹配的 G711 PCM 数据。但是现在我使用的是原始 PCM 数据(解码后的short *G711 PCM 数据),为此正确的 AVCodecID 应该是什么?样本格式应该是什么? AV_SAMPLE_FMT_S16 ?我应该像dataSize >>= 1 这样更改数据的长度吗:ffmpeg.org/doxygen/trunk/muxing-example_8c-source.html 119 行?
    • 如果您想将原始音频写入文件,请使用 AV_CODEC_ID_PCM_S16LE。如果这有助于使其正常工作,我会按照示例代码进行操作,但我不知道您的代码到底是什么样的。
    • 先生,您能看看stackoverflow.com/questions/31917032/…吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-19
    • 1970-01-01
    相关资源
    最近更新 更多