0

次のコードでffmpegを使用してオーディオをデコードしようとしました:

NSMutableData *finalData = [NSMutableData data];
......
while(av_read_frame(pFormatCtx, &packet) >= 0){
    if(packet.stream_index == videoStream)
    {
        int consumed = avcodec_decode_audio4(pCodecCtx, pFrame, &got_frame_ptr, &packet);

        if(got_frame_ptr)
        {
            [finalData appendBytes:(pFrame->data)[0] length:(pFrame->linesize)[0]];

        }
    }
    av_free_packet(&packet);
}
......
[finalData writeToFile:path atomically:YES];

保存したファイルの拡張子をwavに変えても再生できません。HexEdit (Hex エディター) で調べると、ゼロバイトがたくさんあることがわかりました。たとえば、オフセット 0x970 より前のファイルの内容はすべてゼロです。コードにエラーはありますか? どんな助けでも大歓迎です。

4

1 に答える 1

0

実際、デコード結果は良好です。デコード結果が PCM データであるため、ファイル内のゼロ バイトは正常です。Adobe Audition にデータをインポートしてみましたが、再生できます。ご参考までに。

于 2012-12-19T03:05:06.353 に答える