资源简介
博文:http://blog.csdn.net/i_scream_/article/details/52787222
中的代码。
测试平台:ubuntu16.04 64bit + ffmpeg3 + SDL2.
代码片段和文件信息
/*=========================================================================\
* Copyright(C)2016 Chudai.
*
* File name : audio.c
* Version : v1.0.0
* Author : 初代
* Date : 2016/10/06
* Description :
* Function list: 1.
* 2.
* 3.
* History :
\*=========================================================================*/
/*-----------------------------------------------------------*
* 头文件 *
*-----------------------------------------------------------*/
#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;
int flag = 0;
SDL_Event event;
SDL_memset(stream 0 len);
//操作
switch(ps->player_state)
{
case -1: //退出
printf(“退出音频线程\n“);
break;
case 0:
break;
case 1: //暂停
printf(“audio 收到暂停\n“);
break;
default:
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 586 2016-10-09 21:45 Makefile
文件 1070 2016-10-10 21:56 Readme.md
文件 8432 2016-10-11 00:15 audio.c
文件 4925 2016-10-10 22:19 audio.h
文件 1507328 2015-02-16 13:41 naxienian.mp4
文件 4516 2016-10-11 13:35 packet_queue.c
文件 4475 2016-10-11 13:35 packet_queue.h
文件 6471 2016-10-11 00:12 pla
文件 8168 2016-10-11 00:28 pla
文件 2188 2016-10-11 13:34 seek_about.c
文件 2326 2016-10-11 13:34 seek_about.h
文件 10324 2016-10-11 00:14 video.c
文件 5525 2016-10-10 22:19 video.h
文件 2627 2016-10-05 10:24 wrap_ba
文件 3003 2016-10-03 15:15 wrap_ba
- 上一篇:Angular6.X 中文官方文档
- 下一篇:仿QQ聊天软件客户端_服务端可架设
相关资源
- ffmpegexe文件
- qt5.8实现rtsp流播放
- OpenCV 1.0.0 patch for ffmpeg errors
- ffmpeg将一个视频文件解码输出bmp和j
- 支持OpenCV3.2的opencv_ffmpeg.7z
-
Mpla
yer.exe 最新版 - ffmpeg 硬件加速
- FFmpeg解码MP4分别播放YUV视频和PCM音频
- ffmpeg(amr转换mp3).exe.zip
- zw_csharp_ffmpeg_rtsp_demo.zip
- 比较新版本的ffmpeg.exe
-
ijkpla
yer-anddroid编译好的so库 已经非 - 编译FFmpeg3.2.2生成的库文件及头文件
- decode_video.tar.gz
- ffmpeg的so文件
- ffmpeg的avi转flv
- ffmpeg 支持水印
- FFmpeg-full-SDK-3.2.zip
- 一个可以解码并实时播放H264的播放器
- QT+ffmpeg+多摄像头+实时Ubuntu直接可用(
- 基于qt4的多媒体播放器图片,音乐,
- 使用FFmpeg和Qt制作图形化转码工具
- 多媒体编程开发之FFmpeg基础库(pdf)
- h264+ffmpeg+opencv开发手册
- 基于FFmpeg的H_264解码器实现_王彤
- windows32位下的ffmpeg.exe
- ffmpeg-20180130-42323c3-win64-static.zip
- ffmpeg.win32.exe
- ffmpeg-win32-v3.2.4.exe
- ffmpeg之H265解码
评论
共有 条评论