`
kongweile
  • 浏览: 517288 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ffmpeg对音频解码的一般步骤

 
阅读更多

以下是我自己写的小demo

 

#include <errno.h>
#include <android/log.h>
#include <libavutil/avutil.h>
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>

AVFormatContext *fmt_ctx=NULL;
AVCodecContext *codec_ctx;
AVCodec *codec;
AVPacket packet;
AVFrame *frame;
int frame_ptr;

void mylog(const char * fmt, ...);

void Java_com_test_multi_MultiPlayerActivity_test(){
	avcodec_register_all();
	av_register_all();
    if(avformat_open_input(&fmt_ctx,"/sdcard/wma",NULL,NULL)!=0)
		{mylog("errno %d",errno);}
    if(avformat_find_stream_info(fmt_ctx,NULL)<0)
    	{mylog("errno %d",errno);}
    codec_ctx=fmt_ctx->streams[0]->codec;
    codec = avcodec_find_decoder(codec_ctx->codec_id);
    mylog("id=%d",codec->id);
    if (avcodec_open2(codec_ctx, codec,NULL) < 0)
    	{mylog("errno %d",errno);}
    while(av_read_frame(fmt_ctx,&packet)==0){
    	frame=avcodec_alloc_frame();
    	avcodec_decode_audio4(codec_ctx, frame, &frame_ptr,&packet);
    	mylog("frame_ptr %d",frame_ptr);
    	if(frame_ptr){
    		int data_size = av_samples_get_buffer_size(frame->linesize,codec_ctx->channels,frame->nb_samples,codec_ctx->sample_fmt, 0);
            mylog("data count %d",data_size);
            /*int i=0;
            for(;i<data_size;++i){
            	mylog("data %d",(frame->data[0])[i]);
            }*/
    	}
    	av_free_packet(&packet);
    }
    avformat_close_input(&fmt_ctx);
}

void mylog(const char* fmt,...){
	va_list arg_ptr;
	va_start(arg_ptr, fmt);
	__android_log_vprint(ANDROID_LOG_ERROR, "multi",fmt, arg_ptr);
}
分享到:
评论
1 楼 ahong520 2013-12-26  
编译都通不过

相关推荐

    C++基于FFmpeg的音频解码和播放

    在本文中,我们将深入探讨如何使用C++与FFmpeg库实现音频的解码和播放功能。FFmpeg是一个开源项目,提供了强大的音视频处理工具和库,包括libavcodec(用于编码和解码)、libavformat(用于多媒体容器格式的解析)和...

    FFmpeg音频解码实例

    在本实例中,我们将探讨如何在Visual Studio 2008环境下,利用FFmpeg SDK 3.2进行音频解码。 首先,安装FFmpeg SDK 3.2是开发的基础。你需要下载并解压FFmpeg源代码,然后通过configure脚本配置编译环境,生成适用...

    android ffmpeg3.4.2 音频解码+opensles播放

    在Android平台上,使用FFmpeg库进行音频解码和OpenSL ES进行播放是常见的技术实践,尤其是在处理各种格式的音频文件时。FFmpeg是一个强大的开源多媒体处理框架,它提供了丰富的音频和视频编解码器,而OpenSL ES是...

    FFMPEG_音频解码MP3_PCM_本地文件

    在这个主题“FFMPEG_音频解码MP3_PCM_本地文件”中,我们将深入探讨如何使用FFmpeg来解码MP3音频文件,并将其转换为PCM(脉冲编码调制)格式,这是一种原始的无损音频数据格式。 首先,理解FFmpeg的基本结构至关...

    ffmpeg解码音频并保存PCM的简单demo

    总结,这个“ffmpeg解码音频并保存PCM的简单demo”是一个很好的起点,帮助我们理解FFmpeg如何处理音频解码,以及如何将解码后的数据以PCM格式保存。通过深入学习和实践,你可以利用FFmpeg的强大功能处理各种复杂的...

    ffmpeg+opensl的音频解码播放示例

    FFmpeg和OpenSL是两种在Android平台上处理音频的开源库,它们在音频解码和播放方面发挥着重要作用。FFmpeg是一个强大的多媒体处理框架,而OpenSL ES是Android原生的音频系统接口。在这个示例中,我们将深入探讨如何...

    ffmpeg解码器

    FFmpeg的解码器在完成上述步骤后,会生成YUV格式的视频帧。YUV是一种无损的视频色彩空间,将RGB色彩信息分解为亮度(Y)和两个色差分量(U和V)。这种格式便于视频处理和存储,因为它减少了对带宽的需求。 在...

    FFmpeg音频编码实例

    总之,FFmpeg音频编码和解码实例为我们提供了一个实践平台,通过分析和运行代码,可以深入理解音频编码解码的工作流程,以及FFmpeg库在实际开发中的应用。这对于任何想在多媒体领域进行开发的程序员来说,都是一个...

    FFmpeg解码MP4分别播放YUV视频和PCM音频

    FFmpeg提供了一系列内置的解码器,如H.264视频解码器和AAC音频解码器,它们可以处理MP4中常见的编码格式。 4. **解码视频流**:对于视频流,使用`avcodec_decode_video2`函数进行解码,得到YUV格式的视频帧。YUV是...

    《FFmpeg视、音频解码》源码+视频文件

    本资源包含的是一个使用FFmpeg进行视、音频解码的示例,帮助开发者了解如何在Android环境中集成并应用FFmpeg。 首先,让我们深入理解FFmpeg的核心概念。FFmpeg库由多个组件组成,包括libavcodec(编码和解码库)、...

    FFMPEG h264 解码库demo

    FFmpeg库提供了对多种视频和音频格式的支持,包括H.264。其解码功能主要由libavcodec组件提供,这是一个包含大量编解码器的库。在这个H.264解码demo中,开发人员可能会用到以下关键函数和步骤: 1. **初始化解码器...

    ffmpeg+SDL解码播放例子

    FFmpeg是一款强大的开源多媒体处理工具,它包含了音视频编解码库libavcodec,音频处理库libavformat,视频过滤库libavfilter,以及用于图形界面的SDL(Simple DirectMedia Layer)库。在这个"ffmpeg+SDL解码播放例子...

    用Ffmpeg进行h265编解码的实例

    调用`avcodec_open2()`初始化解码器,之后可以使用`avcodec_decode_video2()`对解码后的像素数据进行解包。 3. **Encoding(编码)**:如果需要重新编码,过程与解码类似,但这里使用的是编码器。`avcodec_find_...

    FFMPEG解码视频流

    在VC(Visual C++)环境下,通过FFmpeg库,我们可以实现对各种视频流的解码,包括H264和MPEG4等常见的编码格式。 首先,解码视频流的步骤大致分为以下几个部分: 1. **初始化FFmpeg库**:在VC项目中,我们需要引入...

    ffmpeg dxva gpu 解码的完整demo

    FFmpeg是一个开源的多媒体处理工具,它包含了各种音频和视频编码、解码、转换以及流媒体功能。在FFmpeg中,DirectX Video Acceleration (DXVA) 是一种利用GPU进行硬件解码的技术,特别是在处理高清视频时能显著降低...

    ffmpeg+SDL2实现的音频播放器V2.0(无杂音)

    在这个"ffmpeg+SDL2实现的音频播放器V2.0(无杂音)"项目中,开发者利用 FFmpeg 的音频解码功能和 SDL2 的音频播放能力构建了一个高质量的音频播放器。以下是这个项目中涉及的主要知识点: 1. **FFmpeg 音频解码**...

    基于ALSA-FFMPEG实现音频采集与推流功能

    在音频处理方面,FFmpeg提供了丰富的音频编码器和解码器,支持多种音频格式。 4. **音频编码** 在获取了音频裸流数据后,我们需要对其进行编码以便在网络上传输。FFmpeg的libavcodec库包含了许多音频编码器,例如...

    ffmpeg 安装编译解码

    3. 码流程:FFmpeg的处理流程通常包括注册组件、打开文件、获取CODEC参数、打开解码器、读取并解码数据帧、关闭等步骤。 四、编译FFmpeg时的注意事项 在编译FFmpeg时,可能会遇到缺少库文件或者编译器的情况,如...

    ffmpeg 指定时间解码 av_seek_frame

    FFmpeg 是一个强大的开源多媒体处理框架,用于处理音频和视频数据。在FFmpeg中,`av_seek_frame`函数是用于在多媒体流中进行定位的重要工具,它可以让你在解码过程中跳转到特定的时间点。本教程将深入讲解如何使用`...

Global site tag (gtag.js) - Google Analytics