• 大小: 24.19MB
    文件类型: .rar
    金币: 2
    下载: 0 次
    发布日期: 2024-02-06
  • 语言: 其他
  • 标签: 音视频  ffmpeg  

资源简介

一个简单的基于ffmpeg推流的demo,从雷神博客所得,要学习ffmpeg推流的伙伴可以下载学习

资源截图

代码片段和文件信息

/**
 * 最简单的基于FFmpeg的推流器(推送RTMP)
 * Simplest FFmpeg Streamer (Send RTMP)
 * 
 * 雷霄骅 Lei Xiaohua
 * leixiaohua1020@126.com
 * 中国传媒大学/数字电视技术
 * Communication University of China / Digital TV Technology
 * http://blog.csdn.net/leixiaohua1020
 * 
 * 本例子实现了推送本地视频至流媒体服务器(以RTMP为例)。
 * 是使用FFmpeg进行流媒体推送最简单的教程。
 *
 * This example stream local media files to streaming media 
 * server (Use RTMP as example). 
 * It‘s the simplest FFmpeg streamer.
 * 
 */

#include 

#define __STDC_CONSTANT_MACROS

#ifdef _WIN32
//Windows
extern “C“
{
#include “libavformat/avformat.h“
#include “libavutil/mathematics.h“
#include “libavutil/time.h“
};
#else
//Linux...
#ifdef __cplusplus
extern “C“
{
#endif
#include 
#include 
#include 
#ifdef __cplusplus
};
#endif
#endif

int main(int argc char* argv[])
{
AVOutputFormat *ofmt = NULL;
//输入对应一个AVFormatContext,输出对应一个AVFormatContext
//(Input AVFormatContext and Output AVFormatContext)
AVFormatContext *ifmt_ctx = NULL *ofmt_ctx = NULL;
AVPacket pkt;
const char *in_filename *out_filename;
int ret i;
int videoindex=-1;
int frame_index=0;
int64_t start_time=0;
//in_filename  = “cuc_ieschool.mov“;
//in_filename  = “cuc_ieschool.mkv“;
//in_filename  = “cuc_ieschool.ts“;
//in_filename  = “cuc_ieschool.mp4“;
//in_filename  = “cuc_ieschool.h264“;
in_filename  = “cuc_ieschool.flv“;//输入URL(Input file URL)
//in_filename  = “shanghai03_p.h264“;

out_filename = “rtmp://live.butel.com/live/dbf4“;//输出 URL(Output URL)[RTMP]
//out_filename = “rtp://233.233.233.233:6666“;//输出 URL(Output URL)[UDP]

av_register_all();
//Network
avformat_network_init();
//输入(Input)
if ((ret = avformat_open_input(&ifmt_ctx in_filename 0 0)) < 0) {
printf( “Could not open input file.“);
goto end;
}
if ((ret = avformat_find_stream_info(ifmt_ctx 0)) < 0) {
printf( “Failed to retrieve input stream information“);
goto end;
}

for(i=0; inb_streams; i++) 
if(ifmt_ctx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO){
videoindex=i;
break;
}

av_dump_format(ifmt_ctx 0 in_filename 0);

//输出(Output)

avformat_alloc_output_context2(&ofmt_ctx NULL “flv“ out_filename); //RTMP
//avformat_alloc_output_context2(&ofmt_ctx NULL “mpegts“ out_filename);//UDP

if (!ofmt_ctx) {
printf( “Could not create output context\n“);
ret = AVERROR_UNKNOWN;
goto end;
}
ofmt = ofmt_ctx->oformat;
for (i = 0; i < ifmt_ctx->nb_streams; i++) {
//根据输入流创建输出流(Create output AVStream according to input AVStream)
AVStream *in_stream = ifmt_ctx->streams[i];
AVStream *out_stream = avformat_new_stream(ofmt_ctx in_stream->codec->codec);
if (!out_stream) {
printf( “Failed allocating output stream\n“);
ret = AVERROR_UNKNOWN;
goto end;
}
//复制AVCodecContext的设置(Copy the settings of AVCodecContext)
ret = avcodec_copy_context(out_s

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----

     文件   18936320  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\avcodec-55.dll

     文件    1340928  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\avdevice-55.dll

     文件    2034688  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\avfilter-4.dll

     文件    5342720  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\avformat-55.dll

     文件     418304  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\avutil-52.dll

     文件        644  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\compile_cl.bat

     文件        444  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\compile_gcc.sh

     文件        464  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\compile_mingw.sh

     文件    1688360  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\cuc_ieschool.flv

     文件     121344  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\postproc-52.dll

     文件      40960  2018-07-27 17:53  simplest_ffmpeg_streamer_1.1\Debug\simplest_ffmpeg_streamer.exe

     文件     264724  2018-07-27 17:53  simplest_ffmpeg_streamer_1.1\Debug\simplest_ffmpeg_streamer.ilk

     文件     551936  2018-07-27 17:53  simplest_ffmpeg_streamer_1.1\Debug\simplest_ffmpeg_streamer.pdb

     文件     275968  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\swresample-0.dll

     文件     434176  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\Debug\swscale-2.dll

     文件        534  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\ReadMe.txt

     文件         61  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\.gitignore

     文件   18936320  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\avcodec-55.dll

     文件    1340928  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\avdevice-55.dll

     文件    2034688  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\avfilter-4.dll

     文件    5342720  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\avformat-55.dll

     文件     418304  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\avutil-52.dll

     文件        644  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\compile_cl.bat

     文件        444  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\compile_gcc.sh

     文件        464  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\compile_mingw.sh

     文件    1688360  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\cuc_ieschool.flv

     文件       5721  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\include\inttypes.h

     文件     175612  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\include\libavcodec\avcodec.h

     文件       3111  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\include\libavcodec\avfft.h

     文件       2392  2015-02-13 01:38  simplest_ffmpeg_streamer_1.1\simplest_ffmpeg_streamer\include\libavcodec\dxva2.h

............此处省略120个文件信息

评论

共有 条评论