最简单的基于FFMPEG的Helloworld程序

=====================================================

最简单的基于FFmpeg的视频播放器系列文章列表:

100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)

最简单的基于FFMPEG+SDL的视频播放器 ver2 (採用SDL2.0)

最简单的基于FFmpeg的解码器-纯净版(不包括libavformat)

最简单的基于FFMPEG+SDL的视频播放器:拆分-解码器和播放器

最简单的基于FFMPEG的Helloworld程序

=====================================================



本文记录一个基于FFmpeg的HelloWorld程序。该程序能够打印出FFmpeg类库的基本信息。

使用该程序通常能够验证FFmpeg是否正确的安装配置。


源码

/**
 * 最简单的FFmpeg Helloworld程序
 * Simplest FFmpeg HelloWorld
 *
 * 雷霄骅 Lei Xiaohua
 * leixiaohua1020@126.com
 * 中国传媒大学/数字电视技术
 * Communication University of China / Digital TV Technology
 * http://blog.csdn.net/leixiaohua1020
 *
 * 
 * 本程序是基于FFmpeg函数的最简单的程序。它能够打印出FFmpeg类库的下列信息:
 * Protocol:  FFmpeg类库支持的协议
 * AVFormat:  FFmpeg类库支持的封装格式
 * AVCodec:   FFmpeg类库支持的编解码器
 * AVFilter:  FFmpeg类库支持的滤镜
 * Configure: FFmpeg类库的配置信息
 * 
 * This is the simplest program based on FFmpeg API. It can show following 
 * informations about FFmpeg library:
 * Protocol:  Protocols supported by FFmpeg.
 * AVFormat:  Container format supported by FFmpeg.
 * AVCodec:   Encoder/Decoder supported by FFmpeg.
 * AVFilter:  Filters supported by FFmpeg.
 * Configure: configure information of FFmpeg.
 *
 */

#include <stdio.h>

#define __STDC_CONSTANT_MACROS

#ifdef _WIN32
//Windows
extern "C"
{
#include "libavcodec/avcodec.h"
#include "libavformat/avformat.h"
#include "libavfilter/avfilter.h"
};
#else
//Linux...
#ifdef __cplusplus
extern "C"
{
#endif
#include <libavcodec/avcodec.h>
#include <libavformat/avformat.h>
#include <libavfilter/avfilter.h>
#ifdef __cplusplus
};
#endif
#endif

//FIX
struct URLProtocol;
/**
 * Protocol Support Information
 */
char * urlprotocolinfo(){
	
	char *info=(char *)malloc(40000);
	memset(info,0,40000);

	av_register_all();

	struct URLProtocol *pup = NULL;
	//Input
	struct URLProtocol **p_temp = &pup;
	avio_enum_protocols((void **)p_temp, 0);
	while ((*p_temp) != NULL){
		sprintf(info, "%s[In ][%10s]
", info, avio_enum_protocols((void **)p_temp, 0));
	}
	pup = NULL;
	//Output
	avio_enum_protocols((void **)p_temp, 1);
	while ((*p_temp) != NULL){
		sprintf(info, "%s[Out][%10s]
", info, avio_enum_protocols((void **)p_temp, 1));
	}

	return info;
}

/**
 * AVFormat Support Information
 */
char * avformatinfo(){

	char *info=(char *)malloc(40000);
	memset(info,0,40000);

	av_register_all();

	AVInputFormat *if_temp = av_iformat_next(NULL);
	AVOutputFormat *of_temp = av_oformat_next(NULL);
	//Input
	while(if_temp!=NULL){
		sprintf(info, "%s[In ] %10s
", info, if_temp->name);
		if_temp=if_temp->next;
	}
	//Output
	while (of_temp != NULL){
		sprintf(info, "%s[Out] %10s
", info, of_temp->name);
		of_temp = of_temp->next;
	}
	return info;
}

/**
 * AVCodec Support Information
 */
char * avcodecinfo()
{
	char *info=(char *)malloc(40000);
	memset(info,0,40000);

	av_register_all();

	AVCodec *c_temp = av_codec_next(NULL);

	while(c_temp!=NULL){
		if (c_temp->decode!=NULL){
			sprintf(info, "%s[Dec]", info);
		}
		else{
			sprintf(info, "%s[Enc]", info);
		}
		switch (c_temp->type){
		case AVMEDIA_TYPE_VIDEO:
			sprintf(info, "%s[Video]", info);
			break;
		case AVMEDIA_TYPE_AUDIO:
			sprintf(info, "%s[Audio]", info);
			break;
		default:
			sprintf(info, "%s[Other]", info);
			break;
		}

		sprintf(info, "%s %10s
", info, c_temp->name);

		c_temp=c_temp->next;
	}
	return info;
}

/**
 * AVFilter Support Information
 */
char * avfilterinfo()
{
	char *info=(char *)malloc(40000);
	memset(info,0,40000);

	avfilter_register_all();

	AVFilter *f_temp = (AVFilter *)avfilter_next(NULL);
	
	while (f_temp != NULL){
		sprintf(info, "%s[%15s]
", info, f_temp->name);
		f_temp=f_temp->next;
	}
	return info;
}

/**
 * Configuration Information
 */
char * configurationinfo()
{
	char *info=(char *)malloc(40000);
	memset(info,0,40000);

	av_register_all();

	sprintf(info, "%s
", avcodec_configuration());

	return info;
}

int main(int argc, char* argv[])
{
	char *infostr=NULL;
	infostr=configurationinfo();
	printf("
<<Configuration>>
%s",infostr);
	free(infostr);

	infostr=urlprotocolinfo();
	printf("
<<URLProtocol>>
%s",infostr);
	free(infostr);

	infostr=avformatinfo();
	printf("
<<AVFormat>>
%s",infostr);
	free(infostr);

	infostr=avcodecinfo();
	printf("
<<AVCodec>>
%s",infostr);
	free(infostr);

	infostr=avfilterinfo();
	printf("
<<AVFilter>>
%s",infostr);
	free(infostr);

	return 0;
}



执行结果


Configure信息格式例如以下所看到的。

--disable-static --enable-shared --enable-gpl --enable-version3 --disable-w32threads --enable-avisynth --enable-bzlib --enable-fontconfig --enable-frei0r --enable-gnutls --enable-iconv --enable-libass --enable-libbluray --enable-libcaca --enable-libfreetype --enable-libgsm --enable-libilbc --enable-libmodplug --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-libopenjpeg --enable-libopus --enable-librtmp --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libtwolame --enable-libvidstab --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-libvorbis --enable-libvpx --enable-libwavpack --enable-libx264 --enable-libx265 --enable-libxavs --enable-libxvid --enable-decklink --enable-zlib

Protocol信息格式例如以下所看到的。

[In ][     cache]
[In ][    concat]
[In ][    crypto]
[In ][      data]
[In ][      file]
[In ][       ftp]
[In ][    gopher]
[In ][       hls]
[In ][      http]
[In ][ httpproxy]
[In ][     https]
[In ][      mmsh]
[In ][      mmst]
[In ][      pipe]
[In ][       rtp]
[In ][      srtp]
[In ][   subfile]
[In ][       tcp]
[In ][       tls]
[In ][       udp]
[In ][      rtmp]
[In ][     rtmpe]
[In ][     rtmps]
[In ][     rtmpt]
[In ][    rtmpte]
[In ][    (null)]
[Out][       ftp]
[Out][    gopher]
[Out][      http]
[Out][ httpproxy]
[Out][     https]
[Out][       md5]
[Out][      pipe]
[Out][       rtp]
[Out][      srtp]
[Out][       tcp]
[Out][       tls]
[Out][       udp]
[Out][      rtmp]
[Out][     rtmpe]
[Out][     rtmps]
[Out][     rtmpt]
[Out][    rtmpte]
[Out][    (null)]


AVFormat信息格式例如以下所看到的。

[In ]        aac
[In ]        ac3
[In ]        act
[In ]        adf
[In ]        adp
[In ]        adx
[In ]        aea
[In ]        afc
[In ]       aiff
[In ]        amr
[In ]        anm
[In ]        apc
[In ]        ape
[In ]    aqtitle
[In ]        asf
[In ]        ass
[In ]        ast
[In ]         au
[In ]        avi
[In ]   avisynth
[In ]        avr
[In ]        avs
[In ] bethsoftvid
[In ]        bfi
[In ]        bin
[In ]       bink
[In ]        bit
[In ]        bmv
[In ]      brstm
[In ]        boa
[In ]        c93
[In ]        caf
[In ]  cavsvideo
[In ]        cdg
[In ]       cdxl
[In ]       cine
[In ]     concat
[In ]       data
[In ]       daud
[In ]        dfa
[In ]      dirac
[In ]      dnxhd
[In ]        dsf
[In ]     dsicin
[In ]        dts
[In ]      dtshd
[In ]         dv
[In ]        dxa
[In ]         ea
[In ]   ea_cdata
[In ]       eac3
[In ]       epaf
[In ]        ffm
[In ] ffmetadata
[In ]  filmstrip
[In ]       flac
[In ]       flic
[In ]        flv
[In ]        4xm
[In ]        frm
[In ]       g722
[In ]     g723_1
[In ]       g729
[In ]        gif
[In ]        gsm
[In ]        gxf
[In ]       h261
[In ]       h263
[In ]       h264
[In ]       hevc
[In ] hls,applehttp
[In ]        hnm
[In ]        ico
[In ]      idcin
[In ]        idf
[In ]        iff
[In ]       ilbc
[In ]     image2
[In ] image2pipe
[In ]  alias_pix
[In ] brender_pix
[In ]  ingenient
[In ]    ipmovie
[In ]      ircam
[In ]        iss
[In ]        iv8
[In ]        ivf
[In ]    jacosub
[In ]         jv
[In ]       latm
[In ]      lmlm4
[In ]       loas
[In ]        lvf
[In ]        lxf
[In ]        m4v
[In ] matroska,webm
[In ]      mgsts
[In ]   microdvd
[In ]      mjpeg
[In ]        mlp
[In ]        mlv
[In ]         mm
[In ]        mmf
[In ] mov,mp4,m4a,3gp,3g2,mj2
[In ]        mp3
[In ]        mpc
[In ]       mpc8
[In ]       mpeg
[In ]     mpegts
[In ]  mpegtsraw
[In ]  mpegvideo
[In ]       mpl2
[In ]      mpsub
[In ]   msnwctcp
[In ]        mtv
[In ]         mv
[In ]        mvi
[In ]        mxf
[In ]        mxg
[In ]         nc
[In ] nistsphere
[In ]        nsv
[In ]        nut
[In ]        nuv
[In ]        ogg
[In ]        oma
[In ]        paf
[In ]       alaw
[In ]      mulaw
[In ]      f64be
[In ]      f64le
[In ]      f32be
[In ]      f32le
[In ]      s32be
[In ]      s32le
[In ]      s24be
[In ]      s24le
[In ]      s16be
[In ]      s16le
[In ]         s8
[In ]      u32be
[In ]      u32le
[In ]      u24be
[In ]      u24le
[In ]      u16be
[In ]      u16le
[In ]         u8
[In ]        pjs
[In ]        pmp
[In ]        pva
[In ]        pvf
[In ]        qcp
[In ]        r3d
[In ]   rawvideo
[In ]   realtext
[In ]   redspark
[In ]        rl2
[In ]         rm
[In ]        roq
[In ]        rpl
[In ]        rsd
[In ]        rso
[In ]        rtp
[In ]       rtsp
[In ]       sami
[In ]        sap
[In ]        sbg
[In ]        sdp
[In ]       sdr2
[In ]   film_cpk
[In ]        shn
[In ]       siff
[In ]        smk
[In ]     smjpeg
[In ]      smush
[In ]        sol
[In ]        sox
[In ]      spdif
[In ]        srt
[In ]     psxstr
[In ] subviewer1
[In ]  subviewer
[In ]        swf
[In ]        tak
[In ] tedcaptions
[In ]        thp
[In ] tiertexseq
[In ]        tmv
[In ]     truehd
[In ]        tta
[In ]        txd
[In ]        tty
[In ]        vc1
[In ]    vc1test
[In ]       vivo
[In ]        vmd
[In ]     vobsub
[In ]        voc
[In ]    vplayer
[In ]        vqf
[In ]        w64
[In ]        wav
[In ]   wc3movie
[In ]     webvtt
[In ]      wsaud
[In ]      wsvqa
[In ]        wtv
[In ]         wv
[In ]         xa
[In ]       xbin
[In ]        xmv
[In ]       xwma
[In ]        yop
[In ] yuv4mpegpipe
[In ] libmodplug
[Out]        a64
[Out]        ac3
[Out]       adts
[Out]        adx
[Out]       aiff
[Out]        amr
[Out]        asf
[Out]        ass
[Out]        ast
[Out] asf_stream
[Out]         au
[Out]        avi
[Out]       avm2
[Out]        bit
[Out]        caf
[Out]  cavsvideo
[Out]        crc
[Out]       data
[Out]       daud
[Out]      dirac
[Out]      dnxhd
[Out]        dts
[Out]         dv
[Out]       eac3
[Out]        f4v
[Out]        ffm
[Out] ffmetadata
[Out]  filmstrip
[Out]       flac
[Out]        flv
[Out]   framecrc
[Out]   framemd5
[Out]       g722
[Out]     g723_1
[Out]        gif
[Out]        gxf
[Out]       h261
[Out]       h263
[Out]       h264
[Out]        hds
[Out]       hevc
[Out]        hls
[Out]        ico
[Out]       ilbc
[Out]     image2
[Out] image2pipe
[Out]       ipod
[Out]      ircam
[Out]       ismv
[Out]        ivf
[Out]    jacosub
[Out]       latm
[Out]        m4v
[Out]        md5
[Out]   matroska
[Out]   matroska
[Out]   microdvd
[Out]      mjpeg
[Out]        mlp
[Out]        mmf
[Out]        mov
[Out]        mp2
[Out]        mp3
[Out]        mp4
[Out]       mpeg
[Out]        vcd
[Out] mpeg1video
[Out]        dvd
[Out]       svcd
[Out] mpeg2video
[Out]        vob
[Out]     mpegts
[Out]     mpjpeg
[Out]        mxf
[Out]    mxf_d10
[Out]       null
[Out]        nut
[Out]        oga
[Out]        ogg
[Out]        oma
[Out]       opus
[Out]       alaw
[Out]      mulaw
[Out]      f64be
[Out]      f64le
[Out]      f32be
[Out]      f32le
[Out]      s32be
[Out]      s32le
[Out]      s24be
[Out]      s24le
[Out]      s16be
[Out]      s16le
[Out]         s8
[Out]      u32be
[Out]      u32le
[Out]      u24be
[Out]      u24le
[Out]      u16be
[Out]      u16le
[Out]         u8
[Out]        psp
[Out]   rawvideo
[Out]         rm
[Out]        roq
[Out]        rso
[Out]        rtp
[Out]       rtsp
[Out]        sap
[Out]    segment
[Out] stream_segment,ssegment
[Out]     smjpeg
[Out] smoothstreaming
[Out]        sox
[Out]      spdif
[Out]      speex
[Out]        srt
[Out]        swf
[Out]        tee
[Out]        3g2
[Out]        3gp
[Out] mkvtimestamp_v2
[Out]     truehd
[Out] uncodedframecrc
[Out]        vc1
[Out]    vc1test
[Out]        voc
[Out]        w64
[Out]        wav
[Out]       webm
[Out]     webvtt
[Out]        wtv
[Out]         wv
[Out] yuv4mpegpipe


AVCodec信息格式例如以下所看到的。
[Enc][Video]   a64multi
[Enc][Video]  a64multi5
[Dec][Video]       aasc
[Dec][Video]        aic
[Enc][Video]  alias_pix
[Dec][Video]  alias_pix
[Enc][Video]        amv
[Dec][Video]        amv
[Dec][Video]        anm
[Dec][Video]       ansi
[Enc][Video]       asv1
[Dec][Video]       asv1
[Enc][Video]       asv2
[Dec][Video]       asv2
[Dec][Video]       aura
[Dec][Video]      aura2
[Enc][Video]       avrp
[Dec][Video]       avrp
[Dec][Video]       avrn
[Dec][Video]        avs
[Enc][Video]       avui
[Dec][Video]       avui
[Enc][Video]       ayuv
[Dec][Video]       ayuv
[Dec][Video] bethsoftvid
[Dec][Video]        bfi
[Dec][Video]  binkvideo
[Enc][Video]        bmp
[Dec][Video]        bmp
[Dec][Video]  bmv_video
[Dec][Video] brender_pix
[Dec][Video]        c93
[Dec][Video]       cavs
[Dec][Video] cdgraphics
[Dec][Video]       cdxl
[Enc][Video]    cinepak
[Dec][Video]    cinepak
[Enc][Video]       cljr
[Dec][Video]       cljr
[Dec][Video]       cllc
[Enc][Audio] comfortnoise
[Dec][Audio] comfortnoise
[Dec][Video]       cpia
[Dec][Video]  camstudio
[Dec][Video]       cyuv
[Dec][Video]        dfa
[Dec][Video]      dirac
[Enc][Video]      dnxhd
[Dec][Video]      dnxhd
[Enc][Video]        dpx
[Dec][Video]        dpx
[Dec][Video] dsicinvideo
[Enc][Video]    dvvideo
[Dec][Video]    dvvideo
[Dec][Video]        dxa
[Dec][Video]     dxtory
[Dec][Video]      eacmv
[Dec][Video]      eamad
[Dec][Video]      eatgq
[Dec][Video]      eatgv
[Dec][Video]      eatqi
[Dec][Video]       8bps
[Dec][Audio]   8svx_exp
[Dec][Audio]   8svx_fib
[Dec][Video]  escape124
[Dec][Video]  escape130
[Dec][Video]        exr
[Enc][Video]       ffv1
[Dec][Video]       ffv1
[Enc][Video]    ffvhuff
[Dec][Video]    ffvhuff
[Dec][Video]        fic
[Enc][Video]    flashsv
[Dec][Video]    flashsv
[Enc][Video]   flashsv2
[Dec][Video]   flashsv2
[Dec][Video]       flic
[Enc][Video]        flv
[Dec][Video]        flv
[Dec][Video]        4xm
[Dec][Video]      fraps
[Dec][Video]       frwu
[Dec][Video]        g2m
[Enc][Video]        gif
[Dec][Video]        gif
[Enc][Video]       h261
[Dec][Video]       h261
[Enc][Video]       h263
[Dec][Video]       h263
[Dec][Video]      h263i
[Enc][Video]      h263p
[Dec][Video]      h263p
[Dec][Video]       h264
[Dec][Video]       hevc
[Dec][Video]  hnm4video
[Enc][Video]    huffyuv
[Dec][Video]    huffyuv
[Dec][Video] idcinvideo
[Dec][Video]        iff
[Dec][Video]        iff
[Dec][Video]     indeo2
[Dec][Video]     indeo3
[Dec][Video]     indeo4
[Dec][Video]     indeo5
[Dec][Video] interplayvideo
[Enc][Video]   jpeg2000
[Dec][Video]   jpeg2000
[Enc][Video]     jpegls
[Dec][Video]     jpegls
[Dec][Video]         jv
[Dec][Video]       kgv1
[Dec][Video]       kmvc
[Dec][Video]   lagarith
[Enc][Video]      ljpeg
[Dec][Video]       loco
[Dec][Video]       mdec
[Dec][Video]      mimic
[Enc][Video]      mjpeg
[Dec][Video]      mjpeg
[Dec][Video]     mjpegb
[Dec][Video]    mmvideo
[Dec][Video] motionpixels
[Enc][Video] mpeg1video
[Dec][Video] mpeg1video
[Enc][Video] mpeg2video
[Dec][Video] mpeg2video
[Enc][Video]      mpeg4
[Dec][Video]      mpeg4
[Dec][Video]  mpegvideo
[Dec][Video]       msa1
[Dec][Video]  msmpeg4v1
[Enc][Video]  msmpeg4v2
[Dec][Video]  msmpeg4v2
[Enc][Video]    msmpeg4
[Dec][Video]    msmpeg4
[Dec][Video]      msrle
[Dec][Video]       mss1
[Dec][Video]       mss2
[Enc][Video]   msvideo1
[Dec][Video]   msvideo1
[Dec][Video]       mszh
[Dec][Video]       mts2
[Dec][Video]       mvc1
[Dec][Video]       mvc2
[Dec][Video]      mxpeg
[Dec][Video]        nuv
[Dec][Video]  paf_video
[Enc][Video]        pam
[Dec][Video]        pam
[Enc][Video]        pbm
[Dec][Video]        pbm
[Enc][Video]        pcx
[Dec][Video]        pcx
[Enc][Video]        pgm
[Dec][Video]        pgm
[Enc][Video]     pgmyuv
[Dec][Video]     pgmyuv
[Dec][Video]     pictor
[Enc][Video]        png
[Dec][Video]        png
[Enc][Video]        ppm
[Dec][Video]        ppm
[Enc][Video]     prores
[Dec][Video]     prores
[Enc][Video]  prores_aw
[Enc][Video]  prores_ks
[Dec][Video] prores_lgpl
[Dec][Video]        ptx
[Dec][Video]      qdraw
[Dec][Video]       qpeg
[Enc][Video]      qtrle
[Dec][Video]      qtrle
[Enc][Video]       r10k
[Dec][Video]       r10k
[Enc][Video]       r210
[Dec][Video]       r210
[Enc][Video]   rawvideo
[Dec][Video]   rawvideo
[Dec][Video]        rl2
[Enc][Video]   roqvideo
[Dec][Video]   roqvideo
[Dec][Video]       rpza
[Enc][Video]       rv10
[Dec][Video]       rv10
[Enc][Video]       rv20
[Dec][Video]       rv20
[Dec][Video]       rv30
[Dec][Video]       rv40
[Enc][Audio]      s302m
[Dec][Audio]      s302m
[Dec][Video]       sanm
[Enc][Video]        sgi
[Dec][Video]        sgi
[Dec][Video]     sgirle
[Dec][Video]   smackvid
[Dec][Video]        smc
[Dec][Video]    smvjpeg
[Enc][Video]       snow
[Dec][Video]       snow
[Dec][Video]       sp5x
[Enc][Video]    sunrast
[Dec][Video]    sunrast
[Enc][Video]       svq1
[Dec][Video]       svq1
[Dec][Video]       svq3
[Enc][Video]      targa
[Dec][Video]      targa
[Dec][Video] targa_y216
[Dec][Video]     theora
[Dec][Video]        thp
[Dec][Video] tiertexseqvideo
[Enc][Video]       tiff
[Dec][Video]       tiff
[Dec][Video]        tmv
[Dec][Video] truemotion1
[Dec][Video] truemotion2
[Dec][Video]   camtasia
[Dec][Video]      tscc2
[Dec][Video]        txd
[Dec][Video] ultimotion
[Enc][Video]    utvideo
[Dec][Video]    utvideo
[Enc][Video]       v210
[Dec][Video]       v210
[Dec][Video]      v210x
[Enc][Video]       v308
[Dec][Video]       v308
[Enc][Video]       v408
[Dec][Video]       v408
[Enc][Video]       v410
[Dec][Video]       v410
[Dec][Video]         vb
[Dec][Video]       vble
[Dec][Video]        vc1
[Dec][Video]   vc1image
[Dec][Video]       vcr1
[Dec][Video]   vmdvideo
[Dec][Video]       vmnc
[Dec][Video]        vp3
[Dec][Video]        vp5
[Dec][Video]        vp6
[Dec][Video]       vp6a
[Dec][Video]       vp6f
[Dec][Video]        vp7
[Dec][Video]        vp8
[Dec][Video]        vp9
[Dec][Video]   vqavideo
[Dec][Video]       webp
[Enc][Video]       wmv1
[Dec][Video]       wmv1
[Enc][Video]       wmv2
[Dec][Video]       wmv2
[Dec][Video]       wmv3
[Dec][Video]  wmv3image
[Dec][Video]       wnv1
[Dec][Video]    xan_wc3
[Dec][Video]    xan_wc4
[Enc][Video]        xbm
[Dec][Video]        xbm
[Enc][Video]      xface
[Dec][Video]      xface
[Dec][Video]         xl
[Enc][Video]        xwd
[Dec][Video]        xwd
[Enc][Video]       y41p
[Dec][Video]       y41p
[Dec][Video]        yop
[Enc][Video]       yuv4
[Dec][Video]       yuv4
[Dec][Video]       012v
[Dec][Video]  zerocodec
[Enc][Video]       zlib
[Dec][Video]       zlib
[Enc][Video]       zmbv
[Dec][Video]       zmbv
[Enc][Audio]        aac
[Dec][Audio]        aac
[Dec][Audio]   aac_latm
[Enc][Audio]        ac3
[Dec][Audio]        ac3
[Enc][Audio]  ac3_fixed
[Dec][Audio]  ac3_fixed
[Enc][Audio]       alac
[Dec][Audio]       alac
[Dec][Audio]        als
[Dec][Audio]      amrnb
[Dec][Audio]      amrwb
[Dec][Audio]        ape
[Dec][Audio]     atrac1
[Dec][Audio]     atrac3
[Dec][Audio] atrac3plus
[Dec][Audio] binkaudio_dct
[Dec][Audio] binkaudio_rdft
[Dec][Audio]  bmv_audio
[Dec][Audio]       cook
[Enc][Audio]        dca
[Dec][Audio]        dca
[Dec][Audio]   dsd_lsbf
[Dec][Audio]   dsd_msbf
[Dec][Audio] dsd_lsbf_planar
[Dec][Audio] dsd_msbf_planar
[Dec][Audio] dsicinaudio
[Enc][Audio]       eac3
[Dec][Audio]       eac3
[Dec][Audio]       evrc
[Dec][Audio]  wavesynth
[Enc][Audio]       flac
[Dec][Audio]       flac
[Enc][Audio]     g723_1
[Dec][Audio]     g723_1
[Dec][Audio]       g729
[Dec][Audio]        gsm
[Dec][Audio]     gsm_ms
[Dec][Audio]        iac
[Dec][Audio]        imc
[Dec][Audio]      mace3
[Dec][Audio]      mace6
[Dec][Audio]  metasound
[Dec][Audio]        mlp
[Dec][Audio]        mp1
[Dec][Audio]   mp1float
[Enc][Audio]        mp2
[Dec][Audio]        mp2
[Dec][Audio]   mp2float
[Enc][Audio]   mp2fixed
[Dec][Audio]        mp3
[Dec][Audio]   mp3float
[Dec][Audio]     mp3adu
[Dec][Audio] mp3adufloat
[Dec][Audio]     mp3on4
[Dec][Audio] mp3on4float
[Dec][Audio]       mpc7
[Dec][Audio]       mpc8
[Enc][Audio] nellymoser
[Dec][Audio] nellymoser
[Dec][Audio]     on2avc
[Dec][Audio]  paf_audio
[Dec][Audio]      qcelp
[Dec][Audio]       qdm2
[Enc][Audio]   real_144
[Dec][Audio]   real_144
[Dec][Audio]   real_288
[Dec][Audio]       ralf
[Dec][Audio]    shorten
[Dec][Audio]       sipr
[Dec][Audio]   smackaud
[Enc][Audio]      sonic
[Dec][Audio]      sonic
[Enc][Audio]    sonicls
[Dec][Audio]        tak
[Dec][Audio]     truehd
[Dec][Audio] truespeech
[Enc][Audio]        tta
[Dec][Audio]        tta
[Dec][Audio]     twinvq
[Dec][Audio]   vmdaudio
[Enc][Audio]     vorbis
[Dec][Audio]     vorbis
[Enc][Audio]    wavpack
[Dec][Audio]    wavpack
[Dec][Audio] wmalossless
[Dec][Audio]     wmapro
[Enc][Audio]      wmav1
[Dec][Audio]      wmav1
[Enc][Audio]      wmav2
[Dec][Audio]      wmav2
[Dec][Audio]   wmavoice
[Dec][Audio]    ws_snd1
[Enc][Audio]   pcm_alaw
[Dec][Audio]   pcm_alaw
[Dec][Audio] pcm_bluray
[Dec][Audio]    pcm_dvd
[Enc][Audio]  pcm_f32be
[Dec][Audio]  pcm_f32be
[Enc][Audio]  pcm_f32le
[Dec][Audio]  pcm_f32le
[Enc][Audio]  pcm_f64be
[Dec][Audio]  pcm_f64be
[Enc][Audio]  pcm_f64le
[Dec][Audio]  pcm_f64le
[Dec][Audio]    pcm_lxf
[Enc][Audio]  pcm_mulaw
[Dec][Audio]  pcm_mulaw
[Enc][Audio]     pcm_s8
[Dec][Audio]     pcm_s8
[Enc][Audio] pcm_s8_planar
[Dec][Audio] pcm_s8_planar
[Enc][Audio]  pcm_s16be
[Dec][Audio]  pcm_s16be
[Enc][Audio] pcm_s16be_planar
[Dec][Audio] pcm_s16be_planar
[Enc][Audio]  pcm_s16le
[Dec][Audio]  pcm_s16le
[Enc][Audio] pcm_s16le_planar
[Dec][Audio] pcm_s16le_planar
[Enc][Audio]  pcm_s24be
[Dec][Audio]  pcm_s24be
[Enc][Audio] pcm_s24daud
[Dec][Audio] pcm_s24daud
[Enc][Audio]  pcm_s24le
[Dec][Audio]  pcm_s24le
[Enc][Audio] pcm_s24le_planar
[Dec][Audio] pcm_s24le_planar
[Enc][Audio]  pcm_s32be
[Dec][Audio]  pcm_s32be
[Enc][Audio]  pcm_s32le
[Dec][Audio]  pcm_s32le
[Enc][Audio] pcm_s32le_planar
[Dec][Audio] pcm_s32le_planar
[Enc][Audio]     pcm_u8
[Dec][Audio]     pcm_u8
[Enc][Audio]  pcm_u16be
[Dec][Audio]  pcm_u16be
[Enc][Audio]  pcm_u16le
[Dec][Audio]  pcm_u16le
[Enc][Audio]  pcm_u24be
[Dec][Audio]  pcm_u24be
[Enc][Audio]  pcm_u24le
[Dec][Audio]  pcm_u24le
[Enc][Audio]  pcm_u32be
[Dec][Audio]  pcm_u32be
[Enc][Audio]  pcm_u32le
[Dec][Audio]  pcm_u32le
[Dec][Audio]   pcm_zork
[Dec][Audio] interplay_dpcm
[Enc][Audio]   roq_dpcm
[Dec][Audio]   roq_dpcm
[Dec][Audio]   sol_dpcm
[Dec][Audio]   xan_dpcm
[Dec][Audio]  adpcm_4xm
[Enc][Audio]  adpcm_adx
[Dec][Audio]  adpcm_adx
[Dec][Audio]  adpcm_afc
[Dec][Audio]   adpcm_ct
[Dec][Audio]  adpcm_dtk
[Dec][Audio]   adpcm_ea
[Dec][Audio] adpcm_ea_maxis_xa
[Dec][Audio] adpcm_ea_r1
[Dec][Audio] adpcm_ea_r2
[Dec][Audio] adpcm_ea_r3
[Dec][Audio] adpcm_ea_xas
[Enc][Audio]       g722
[Dec][Audio]       g722
[Enc][Audio]       g726
[Dec][Audio]       g726
[Dec][Audio]     g726le
[Dec][Audio] adpcm_ima_amv
[Dec][Audio] adpcm_ima_apc
[Dec][Audio] adpcm_ima_dk3
[Dec][Audio] adpcm_ima_dk4
[Dec][Audio] adpcm_ima_ea_eacs
[Dec][Audio] adpcm_ima_ea_sead
[Dec][Audio] adpcm_ima_iss
[Dec][Audio] adpcm_ima_oki
[Enc][Audio] adpcm_ima_qt
[Dec][Audio] adpcm_ima_qt
[Dec][Audio] adpcm_ima_rad
[Dec][Audio] adpcm_ima_smjpeg
[Enc][Audio] adpcm_ima_wav
[Dec][Audio] adpcm_ima_wav
[Dec][Audio] adpcm_ima_ws
[Enc][Audio]   adpcm_ms
[Dec][Audio]   adpcm_ms
[Dec][Audio] adpcm_sbpro_2
[Dec][Audio] adpcm_sbpro_3
[Dec][Audio] adpcm_sbpro_4
[Enc][Audio]  adpcm_swf
[Dec][Audio]  adpcm_swf
[Dec][Audio]  adpcm_thp
[Dec][Audio] adpcm_vima
[Dec][Audio]   adpcm_xa
[Enc][Audio] adpcm_yamaha
[Dec][Audio] adpcm_yamaha
[Dec][Audio]       vima
[Enc][Other]        ssa
[Dec][Other]        ssa
[Enc][Other]        ass
[Dec][Other]        ass
[Enc][Other]     dvbsub
[Dec][Other]     dvbsub
[Enc][Other]     dvdsub
[Dec][Other]     dvdsub
[Dec][Other]    jacosub
[Dec][Other]   microdvd
[Enc][Other]   mov_text
[Dec][Other]   mov_text
[Dec][Other]       mpl2
[Dec][Other]     pgssub
[Dec][Other]        pjs
[Dec][Other]   realtext
[Dec][Other]       sami
[Enc][Other]        srt
[Dec][Other]        srt
[Enc][Other]     subrip
[Dec][Other]     subrip
[Dec][Other]  subviewer
[Dec][Other] subviewer1
[Dec][Other]       text
[Dec][Other]    vplayer
[Dec][Other]     webvtt
[Enc][Other]       xsub
[Dec][Other]       xsub
[Enc][Audio]     libgsm
[Dec][Audio]     libgsm
[Enc][Audio]  libgsm_ms
[Dec][Audio]  libgsm_ms
[Enc][Audio]    libilbc
[Dec][Audio]    libilbc
[Enc][Audio] libmp3lame
[Enc][Audio] libopencore_amrnb
[Dec][Audio] libopencore_amrnb
[Dec][Audio] libopencore_amrwb
[Enc][Video] libopenjpeg
[Dec][Video] libopenjpeg
[Enc][Audio]    libopus
[Dec][Audio]    libopus
[Enc][Video] libschroedinger
[Dec][Video] libschroedinger
[Enc][Audio]   libspeex
[Dec][Audio]   libspeex
[Enc][Video]  libtheora
[Enc][Audio] libtwolame
[Enc][Audio] libvo_aacenc
[Enc][Audio] libvo_amrwbenc
[Enc][Audio]  libvorbis
[Dec][Audio]  libvorbis
[Enc][Video]     libvpx
[Dec][Video]     libvpx
[Enc][Video] libvpx-vp9
[Dec][Video] libvpx-vp9
[Enc][Audio] libwavpack
[Enc][Video]    libx264
[Enc][Video] libx264rgb
[Enc][Video]    libx265
[Enc][Video]    libxavs
[Enc][Video]    libxvid
[Dec][Video]    bintext
[Dec][Video]       xbin
[Dec][Video]        idf


下载


Simplest FFmpeg Player


项目主页

SourceForge:https://sourceforge.net/projects/simplestffmpegplayer/

Github:https://github.com/leixiaohua1020/simplest_ffmpeg_player

开源中国:http://git.oschina.net/leixiaohua1020/simplest_ffmpeg_player

CSDN下载地址:http://download.csdn.net/detail/leixiaohua1020/8924321


本程序实现了视频文件的解码和显示(支持HEVC。H.264,MPEG2等)。


是最简单的FFmpeg视频解码方面的教程。
通过学习本样例能够了解FFmpeg的解码流程。
项目包括6个工程:

simplest_ffmpeg_player:标准版,FFmpeg学习的開始。
simplest_ffmpeg_player_su:SU(SDL Update)版,增加了简单的SDL的Event。
simplest_ffmpeg_decoder:一个包括了封装格式处理功能的解码器。使用了libavcodec和libavformat。
simplest_ffmpeg_decoder_pure:一个纯净的解码器。仅仅使用libavcodec(没有使用libavformat)。
simplest_video_play_sdl2:使用SDL2播放YUV的样例。


simplest_ffmpeg_helloworld:输出FFmpeg类库的信息。

原文地址:https://www.cnblogs.com/jzssuanfa/p/6794533.html