• 大小: 16.79MB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2023-08-01
  • 语言: 其他
  • 标签: ffmpeg  

资源简介

博客:http://blog.csdn.net/i_scream_/article/details/52760033 中的代码。 测试环境:win10 64bit+ vs2010/vs2015

资源截图

代码片段和文件信息

/*=========================================================================\
* Copyright(C)2016 Chudai.
*
* File name    : audio.c
* Version      : v1.0.0
* Author       : 初代
* Date         : 2016/10/06
* Description  :
* Function list: 1.
*                2.
*                3.
* History      :
\*=========================================================================*/
#include “stdafx.h“
/*-----------------------------------------------------------*
 * 头文件                                                    *
 *-----------------------------------------------------------*/
#define __STDC_CONSTANT_MACROS      //ffmpeg要求

#include “player.h“
#include “audio.h“

/*======================================================================\
* Author     (作者): i.sshe
* Date       (日期): 2016/10/06
* Others     (其他): 准备audio
\*=======================================================================*/
int prepare_audio(PlayerState *ps)
{

ps->paudio_stream = ps->pformat_ctx->streams[ps->audio_stream_index];
ps->paudio_codec_ctx =  ps->paudio_stream->codec;
ps->paudio_codec = avcodec_find_decoder(ps->paudio_codec_ctx->codec_id);
if (ps->paudio_codec == NULL)
    {
         fprintf(ERR_STREAM “Couldn‘t find audio decoder!!!!!!!\n“);
         return -1;
    }
//初始化AVCondecContext,以及进行一些处理工作。
avcodec_open2(ps->paudio_codec_ctx ps->paudio_codec NULL);

    return 0;
}


/*======================================================================\
* Author     (作者): i.sshe
* Date       (日期): 2016/10/06
* Others     (其他): 播放声音
\*=======================================================================*/
int play_audio(PlayerState *ps)
{
    SDL_AudioSpec      wanted_spec;
//    SDL_AudioSpec      spec;
    wanted_spec.freq      = ps->paudio_codec_ctx->sample_rate;
    wanted_spec.format    = AUDIO_S16SYS;
    wanted_spec.channels  = ps->paudio_codec_ctx->channels;
    wanted_spec.silence   = 0;
    wanted_spec.samples   = 1024;     //
    wanted_spec.callback  = audio_callback;
    wanted_spec.userdata  = ps; // ps->paudio_codec_ctx;

    //打开音频设备
    //运行callback
    if (SDL_OpenAudio(&wanted_spec NULL) < 0)
    {
        fprintf(ERR_STREAM “Couldn‘t open audio device\n“);
        return -1;
    }

    SDL_PauseAudio(0);

    return 0;
}


/*======================================================================\
* Author     (作者): i.sshe
* Date       (日期): 2016/10/06
* Others     (其他): 音频回调函数,打开设备的时候会开线程调用
\*=======================================================================*/
void audio_callback(void *userdata uint8_t *stream int len)
{
    PlayerState *ps = (PlayerState *)userdata;
    int  send_data_size = 0;
    int  audio_size = 0;

if (ps->quit == 1)
{
exit(-1);
}


    SDL_memset(stream 0 len);


    while(len > 0)
    {
         if (ps->audio_buf_index >= ps->audio_buf_size)
         {
             //数据已经全部发送,再去取
             audio_size 

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2016-10-09 12:26  player_v1.4.1\
     目录           0  2016-10-09 12:25  player_v1.4.1\Debug\
     文件       41984  2016-10-09 12:26  player_v1.4.1\Debug\player_v1.4.1.exe
     文件      449304  2016-10-09 12:26  player_v1.4.1\Debug\player_v1.4.1.ilk
     文件      715776  2016-10-09 12:26  player_v1.4.1\Debug\player_v1.4.1.pdb
     目录           0  2016-10-09 12:15  player_v1.4.1\ipch\
     目录           0  2016-10-09 12:22  player_v1.4.1\ipch\player_v1.4.1-a4430eb1\
     文件     2359296  2016-10-09 12:22  player_v1.4.1\ipch\player_v1.4.1-a4430eb1\player_v1.4.ipch
     目录           0  2016-10-09 12:25  player_v1.4.1\player_v1.4.1\
     目录           0  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\
     文件      107066  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\CL.read.1.tlog
     文件        4470  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\CL.write.1.tlog
     文件       33202  2016-10-09 12:25  player_v1.4.1\player_v1.4.1\Debug\audio.obj
     文件        5566  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\cl.command.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link-cvtres.read.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link-cvtres.write.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.11936-cvtres.read.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.11936-cvtres.write.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.11936.read.1.tlog
     文件           2  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.11936.write.1.tlog
     文件        3388  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.command.1.tlog
     文件        7492  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.read.1.tlog
     文件        2244  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\link.write.1.tlog
     文件         498  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\mt.command.1.tlog
     文件         498  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\mt.read.1.tlog
     文件         498  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\mt.write.1.tlog
     文件       26011  2016-10-09 12:25  player_v1.4.1\player_v1.4.1\Debug\packet_queue.obj
     文件         406  2016-10-09 12:25  player_v1.4.1\player_v1.4.1\Debug\player_v1.4.1.exe.embed.manifest
     文件         472  2016-10-09 12:25  player_v1.4.1\player_v1.4.1\Debug\player_v1.4.1.exe.embed.manifest.res
     文件         381  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\player_v1.4.1.exe.intermediate.manifest
     文件          93  2016-10-09 12:26  player_v1.4.1\player_v1.4.1\Debug\player_v1.4.1.lastbuildstate
............此处省略215个文件信息

评论

共有 条评论