ffmpeg 音频使用流程

基本的流程:从输入文件中解码出一帧音频(音频数据保存在input_frame->extended_data),把音频数据进行格式转换并且保存到fifo中
从音频fifo中读音频数据(output_frame->data),进行编码,写入文件
1、从输入文件解码出一帧
avformat_open_input->avformat_find_stream_info->avcodec_find_decoder->avcodec_open2->av_frame_alloc->av_init_packet->av_read_frame->avcodec_decode_audio4(至此获得一帧音频数据)->av_free_packet->av_frame_free->avcodec_close->avformat_close_input
至此,已经获取了一帧数据
2、重采样
swr_alloc_set_opts->swr_init->av_samples_alloc->swr_convert->swr_free
3、音频fifo
av_audio_fifo_alloc->av_audio_fifo_realloc->av_audio_fifo_write->av_audio_fifo_read->av_audio_fifo_free
4、编码写入文件
avio_open->avformat_alloc_context->av_guess_format->avcodec_find_encoder->avformat_new_stream->avcodec_open2->avformat_write_header->av_frame_alloc->av_init_packet->avcodec_encode_audio2->av_write_frame->av_free_packet->av_frame_free->av_write_trailer

总结:音频fifo是比较重要的,fifo在处理音频的时候几乎是必须的, 也可以自己实现一个fifo,不过ffmpeg既然实现了,自己写也一样,没啥必要
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
FFmpeg是一个开源的跨平台的音视频处理工具。它也提供了音频编码的功能。通过FFmpeg,你可以将原始的音频数据进行编码,得到压缩后的音频文件。 音频编码的过程通常包括以下几个步骤: 1. 配置编码器的参数:需要指定输入音频的采样率、声道数、编码格式等参数,同时也需要设定输出音频的参数,例如码率、采样格式等。 2. 查找并打开编码器:首先要找到所需的编码器,例如在这个例子中,我们要编码为MP3格式,需要查找并选择MP3编码器。然后,使用avcodec_open2()函数打开编码器。 3. 准备音频数据并进行编码:从文件中读取音频数据,将数据转换为编码器所需要的格式。然后,使用avcodec_send_frame()函数将音频数据发送给编码器进行编码,编码后的数据存储在AVPacket结构中。通过avcodec_receive_packet()函数从编码器中接收编码后的数据,并将数据写入到输出文件中。 以上是简化的音频编码流程,具体的实现还涉及到数据的处理、内存的分配和释放等细节。在实际应用中,可以根据具体的需求对FFmpeg进行配置和使用。 请注意,上述引用内容是对FFmpeg音频编码的一个示例,实际的使用可能会有所不同,具体的参数设置和函数调用可能需要根据具体情况进行调整和修改。<span class="em">1</span><span class="em">2</span><span class="em">3</span><span class="em">4</span>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值