资源简介
ffmpeg转码为hls的代码,里面涉及具体的转码流程以及参数设置.ffmpeg转码为hls的代码,里面涉及具体的转码流程以及参数设置
代码片段和文件信息
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include
#define BUF_SIZE_20K 2048000
#define BUF_SIZE_1K 1024000
static AVFormatContext *ifmt_ctx;
static AVFormatContext *ofmt_ctx;
static SwrContext* pSwrCtx = NULL;
AVBitStreamFilterContext* aacbsfc = NULL;
void initSwr(int audio_index)
{
if (ofmt_ctx->streams[0]->codec->channels != ifmt_ctx->streams[audio_index]->codec->channels
|| ofmt_ctx->streams[0]->codec->sample_rate != ifmt_ctx->streams[audio_index]->codec->sample_rate
|| ofmt_ctx->streams[0]->codec->sample_fmt != ifmt_ctx->streams[audio_index]->codec->sample_fmt)
{
if ( NULL == pSwrCtx )
{
pSwrCtx = swr_alloc();
}
// #if LIBSWRESAMPLE_VERSION_MINOR >= 17 // 根据版本不同,选用适当函数
// av_opt_set_int(pSwrCtx “ich“ ifmt_ctx->streams[audio_index]->codec->channels 0);
// av_opt_set_int(pSwrCtx “och“ ofmt_ctx->streams[audio_index]->codec->channels 0);
// av_opt_set_int(pSwrCtx “in_sample_rate“ ifmt_ctx->streams[audio_index]->codec->sample_rate 0);
// av_opt_set_int(pSwrCtx “out_sample_rate“ ofmt_ctx->streams[audio_index]->codec->sample_rate 0);
// av_opt_set_sample_fmt(pSwrCtx “in_sample_fmt“ ifmt_ctx->streams[audio_index]->codec->sample_fmt 0);
// av_opt_set_sample_fmt(pSwrCtx “out_sample_fmt“ ofmt_ctx->streams[audio_index]->codec->sample_fmt 0);
// #else
pSwrCtx = swr_alloc_set_opts(NULL
ofmt_ctx->streams[audio_index]->codec->channel_layout
ofmt_ctx->streams[audio_index]->codec->sample_fmt
ofmt_ctx->streams[audio_index]->codec->sample_rate
ifmt_ctx->streams[audio_index]->codec->channel_layout
ifmt_ctx->streams[audio_index]->codec->sample_fmt
ifmt_ctx->streams[audio_index]->codec->sample_rate
0 NULL);
// #endif
swr_init(pSwrCtx);
}
}
//setup_array函数摘自ffmpeg例程
static void setup_array(uint8_t* out[32] AVframe* in_frame int format int samples)
{
if (av_sample_fmt_is_planar(format))
{
int i;
int plane_size = av_get_bytes_per_sample((format & 0xFF)) * samples;
format &= 0xFF;
//从decoder出来的frame中的data数据不是连续分布的,所以不能这样写:
in_frame->data[0]+i*plane_size;
for (i = 0; i < in_frame->channels; i++)
{
out[i] = in_frame->data[i];
}
}
else
{
out[0] = in_frame->data[0];
}
}
int TransSample(AVframe *in_frame AVframe *out_frame int audio_index)
{
int ret;
int max_dst_nb_samples = 4096;
相关资源
- ffmpeg-4.0.2最新版 windows vs2013编译动态
- ffmpeg实现直播功能
- linuxubuntu下ffmpeg + alsa 的音频播放器
- 内存H264+PCM发布rtmp.rar
- ffmpeg-4.2.1-win32-dev.zip
- M3U8视频PC机64位辅助工具2.0 —&md
- ffmpeg-3.2.tar.bz2
- vivado HLS图像处理了解
- 适用于VC的FFMpeg静态库已编译)
- 使用ffmpeg api解码h264视频码流,并且能
- MP4v2录制rtsp流存为MP4文件
- H5视频播放工具hls.js
- XILINX官方HLS视频课程学习总结 .pdf
- [8] ffmpeg + SDL2 实现的视频播放器「快
- HLSL基础教程完整篇
- Isidoro-ShadowMapping
- ffmpegexe文件
- Xilinx HLS Bluebook 超清带书签PDF版
- qt5.8实现rtsp流播放
- OpenCV 1.0.0 patch for ffmpeg errors
- ffmpeg将一个视频文件解码输出bmp和j
- 支持OpenCV3.2的opencv_ffmpeg.7z
-
Mpla
yer.exe 最新版 - hls 教程zynq 7000 fpga教程,超过200页的
- HLS_Server
- ffmpeg 硬件加速
- FFmpeg解码MP4分别播放YUV视频和PCM音频
- hls_rgb2gray.zip
- ffmpeg(amr转换mp3).exe.zip
- zw_csharp_ffmpeg_rtsp_demo.zip
评论
共有 条评论