音频解码停止工作ffmpeg

时间:2016-06-17 01:32:24

标签: audio ffmpeg decoding

我写了很少的程序,用于提取原始音频日期。我很忙,同时我将操作系统从Kubuntu 15.04更改为16.04。库在cmakelists.txt中动态链接

target_link_libraries(
    ffmpeg 
#[[ Linking ffmpeg libraries - START ------------------]]
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libavcodec.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libavdevice.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libavutil.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libavfilter.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libavformat.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libswresample.so"
            "${CMAKE_SOURCE_DIR}/extern_libs/libffmpeg/lib/libswscale.so" 
#[[ Linking ffmpeg libraries - END --------------------]]
)

我开始重新使用我的代码,但代码不再起作用了。

if(av_read_frame(m_ctx, &avpkt) >= 0){
        got_frame = 0;
        avcodec_decode_audio4(c, decoded_frame, &got_frame, &avpkt);

        detectSampleFormat((AVSampleFormat)decoded_frame->format);
        m_data->allocateMemory(m_duration, decoded_frame->channels);
        m_resampler->initResampler(m_fmt, decoded_frame->channel_layout, decoded_frame->sample_rate, decoded_frame->nb_samples);
        m_resampler->resampleAudioFrame(decoded_frame, m_data);     
    }

    while(av_read_frame(m_ctx, &avpkt) >= 0){
        got_frame = 0;
        avcodec_decode_audio4(c, decoded_frame, &got_frame, &avpkt);
        m_resampler->resampleAudioFrame(decoded_frame, m_data);     

    }

解码帧应该包含channel_layout,通道数等信息......但是在执行程序期间,它们是0或空值。

任何人都可以帮我吗?我不清楚为什么它在不久前工作(我上次在3月份编写了这段代码)并且相同的代码不再起作用了。

编辑: 我发现了问题。从文件中读取的第一帧被损坏或者其他东西,所以我只是等待第一个正确的帧来初始化我的组件。

这个问题可以关闭。

0 个答案:

没有答案