程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> 100行代碼實現最簡單的基於FFMPEG+SDL的視頻播放器

100行代碼實現最簡單的基於FFMPEG+SDL的視頻播放器

編輯:C++入門知識

FFMPEG工程浩大,可以參考的書籍又不是很多,因此很多剛學習FFMPEG的人常常感覺到無從下手。我剛接觸FFMPEG的時候也感覺不知從何學起。

因此我把自己做項目過程中實現的一個非常簡單的視頻播放器(大約100行代碼)源代碼傳上來,以作備忘,同時方便新手學習FFMPEG。

該播放器雖然簡單,但是幾乎包含了使用FFMPEG播放一個視頻所有必備的API,並且使用SDL顯示解碼出來的視頻。

並且支持流媒體等多種視頻輸入,處於簡單考慮,沒有音頻部分,同時視頻播放采用直接延時40ms的方式

平台使用VC2010

使用了最新的FFMPEG類庫

直接貼代碼

 _tmain( argc, _TCHAR**** filepath[]==(avformat_open_input(&pFormatCtx,filepath,NULL,NULL)!= -(av_find_stream_info(pFormatCtx)< -=-(i=; i<pFormatCtx->nb_streams; i++(pFormatCtx->streams[i]->codec->codec_type===(videoindex==- -=pFormatCtx->streams[videoindex]->=avcodec_find_decoder(pCodecCtx->(pCodec== -(avcodec_open(pCodecCtx, pCodec)< -*pFrame,*==*= uint8_t[avpicture_get_size(PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->*)pFrameYUV, out_buffer, PIX_FMT_YUV420P, pCodecCtx->width, pCodecCtx->
        (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_AUDIO |*= SDL_SetVideoMode(pCodecCtx->width, pCodecCtx->height, , (!screen) {  printf(*= SDL_CreateYUVOverlay(pCodecCtx->width, pCodecCtx->
          SwsContext * y_size = pCodecCtx->width * pCodecCtx->*packet=(AVPacket *)malloc(
        printf(,filepath,
        (av_read_frame(pFormatCtx, packet)>=(packet->stream_index=== avcodec_decode_video2(pCodecCtx, pFrame, &(ret <  -= sws_getContext(pCodecCtx->width, pCodecCtx->height, pCodecCtx->pix_fmt, pCodecCtx->width, pCodecCtx-> uint8_t* *)pFrame->data, pFrame->linesize, , pCodecCtx->height, pFrameYUV->data, pFrameYUV->->pixels[]=pFrameYUV->data[->pixels[]=pFrameYUV->data[->pixels[]=pFrameYUV->data[->pitches[]=pFrameYUV->linesize[->pitches[]=pFrameYUV->linesize[->pitches[]=pFrameYUV->linesize[= = = pCodecCtx->= pCodecCtx->&
                    SDL_Delay(& 

 

 

軟件運行截圖:

完整工程下載地址:

http://download.csdn.net/detail/leixiaohua1020/5122959

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved