91av视频/亚洲h视频/操亚洲美女/外国一级黄色毛片 - 国产三级三级三级三级

  • 大小: 11.4MB
    文件類型: .zip
    金幣: 2
    下載: 0 次
    發布日期: 2024-01-31
  • 語言: 其他
  • 標簽: 視頻??h264??ffmpeg??sdl??

資源簡介

根據雷霄驊的代碼修改的,使用ffmpeg純凈解碼,sdl顯示h264,稍作修改就能實時播放h264網絡視頻流,有較詳細的注釋,希望對你有所幫助!

資源截圖

代碼片段和文件信息

/**
?*?最簡單的基于FFmpeg的視頻解碼器(純凈版)
?*?Simplest?FFmpeg?Decoder?Pure
?*
?*?雷霄驊?Lei?Xiaohua
?*?leixiaohua1020@126.com
?*?中國傳媒大學/數字電視技術
?*?Communication?University?of?China?/?Digital?TV?Technology
?*?http://blog.csdn.net/leixiaohua1020
?*
?*
?*?本程序實現了視頻碼流(支持HEVC,H.264,MPEG2等)解碼為YUV數據。
?*?它僅僅使用了libavcodec(而沒有使用libavformat)。
?*?是最簡單的FFmpeg視頻解碼方面的教程。
?*?通過學習本例子可以了解FFmpeg的解碼流程。
?*?This?software?is?a?simplest?decoder?based?on?FFmpeg.
?*?It?decode?bitstreams?to?YUV?pixel?data.
?*?It?just?use?libavcodec?(do?not?contains?libavformat).
?*?Suitable?for?beginner?of?FFmpeg.
?*/

#include?

#define?__STDC_CONSTANT_MACROS
#define?SDL_MAIN_HANDLED
#ifdef?_WIN32
//Windows
extern?“C“
{
#include?“libavcodec/avcodec.h“
#include?“libswscale/swscale.h“
#include?“SDL2/SDL.h“
};
#else
//Linux...
#ifdef?__cplusplus
extern?“C“
{
#endif
#include?
#include?
#ifdef?__cplusplus
};
#endif
#endif

#define?USE_SWSCALE?1

//test?different?codec
#define?TEST_H264??1
#define?TEST_HEVC??0

//SDL?Event
#define?REFRESH_EVENT??(SDL_USEREVENT?+?1)
#define?BREAK_EVENT??(SDL_USEREVENT?+?2)
#define?WINDOW_NAME?“Cameree?ACS?Video“


const?int?bpp?=?12;

int?screen_w?=?960?screen_h?=?540;
const?int?pixel_w?=?1280?pixel_h?=?720;
char?filepath_in[]?=?“video.h264“;
//?一幀圖像數據長度?width*height*3/2
int?buffer_size?=?pixel_w*pixel_h*bpp?/?8;

unsigned?char?buffer[pixel_w*pixel_h*bpp?/?8];


int?thread_exit?=?0;
bool?b_close_window?=?0;
int?refresh_video(void?*opaque)?{
thread_exit?=?0;
while?(!thread_exit)?{
SDL_Event?event;
event.type?=?REFRESH_EVENT;
SDL_PushEvent(&event);?//添加新的event到event?queue
SDL_Delay(33);?//?ms,可以自己設幀率
}
thread_exit?=?0;
//Break
SDL_Event?event;
event.type?=?BREAK_EVENT;
SDL_PushEvent(&event);

return?0;
}

int?main(int?argc?char*?argv[])
{
AVCodec?*pCodec;
????AVCodecContext?*pCodecCtx=?NULL;
AVCodecParserContext?*pCodecParserCtx=NULL;

????FILE?*fp_in;
????AVframe *pframe;?//存儲一幀解碼后的像素數據

const?int?in_buffer_size=4096;
uint8_t?in_buffer[in_buffer_size?+?FF_INPUT_BUFFER_PADDING_SIZE]={0};
uint8_t?*cur_ptr;
int?cur_size;
????AVPacket?packet;?//?存儲一幀(一般情況下)壓縮編碼數據
int?ret?got_picture;
int?y_size;


#if?TEST_HEVC
enum?AVCodecID?codec_id=AV_CODEC_ID_HEVC;
char?filepath_in[]=“bigbuckbunny_480x272.hevc“;
#elif?TEST_H264
AVCodecID?codec_id=AV_CODEC_ID_H264;
#else
AVCodecID?codec_id=AV_CODEC_ID_MPEG2VIDEO;
char?filepath_in[]=“bigbuckbunny_480x272.m2v“;
#endif

int?first_time=1;

#if?USE_SWSCALE
struct?SwsContext?*img_convert_ctx;
AVframe *pframeYUV;
uint8_t?*out_buffer;

#endif
//av_log_set_level(AV_LOG_DEBUG);

avcodec_register_all();?//注冊所有的編解碼器

????pCodec?=?avcodec_find_decoder(codec_id);?//查找解碼器
????if?(!pCodec)?{
????????printf(“Codec?not?found\n“);
????????return?-1;
????}
????pCodecCtx?=?avcodec_alloc_context3(pCodec);?//為?AVCodecContext?分配內存
????if?(!pCodec

?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件??????????75??2015-07-15?16:19??.gitignore
?????文件????18936320??2015-07-15?16:19??avcodec-55.dll
?????文件??????418304??2015-07-15?16:19??avutil-52.dll
?????文件??????626669??2015-07-15?16:19??bigbuckbunny_480x272.h264
?????文件??????749932??2015-07-15?16:19??bigbuckbunny_480x272.hevc
?????文件??????918534??2015-07-15?16:19??bigbuckbunny_480x272.m2v
?????文件??????391680??2017-06-15?10:05??bigbuckbunny_480x272.yuv
?????文件?????????573??2015-07-15?16:19??compile_cl.bat
?????文件?????????458??2015-07-15?16:19??compile_gcc.sh
?????文件?????????463??2015-07-15?16:19??compile_mingw.sh
?????目錄???????????0??2017-06-15?09:46??include\
?????文件????????6002??2015-07-15?16:19??include\inttypes.h
?????目錄???????????0??2015-07-15?16:19??include\libavcodec\
?????文件??????180728??2015-07-15?16:19??include\libavcodec\avcodec.h
?????文件????????3229??2015-07-15?16:19??include\libavcodec\avfft.h
?????文件????????2488??2015-07-15?16:19??include\libavcodec\dxva2.h
?????文件???????11053??2015-07-15?16:19??include\libavcodec\old_codec_ids.h
?????文件????????4180??2015-07-15?16:19??include\libavcodec\vaapi.h
?????文件????????4262??2015-07-15?16:19??include\libavcodec\vda.h
?????文件????????6415??2015-07-15?16:19??include\libavcodec\vdpau.h
?????文件????????5759??2015-07-15?16:19??include\libavcodec\version.h
?????文件????????6232??2015-07-15?16:19??include\libavcodec\xvmc.h
?????目錄???????????0??2015-07-15?16:19??include\libavutil\
?????文件????????1639??2015-07-15?16:19??include\libavutil\adler32.h
?????文件????????1899??2015-07-15?16:19??include\libavutil\aes.h
?????文件????????4390??2015-07-15?16:19??include\libavutil\attributes.h
?????文件??????????88??2015-07-15?16:19??include\libavutil\audioconvert.h
?????文件????????4563??2015-07-15?16:19??include\libavutil\audio_fifo.h
?????文件????????2179??2015-07-15?16:19??include\libavutil\avassert.h
?????文件?????????218??2015-07-15?16:19??include\libavutil\avconfig.h
?????文件???????12829??2015-07-15?16:19??include\libavutil\avstring.h
............此處省略133個文件信息

評論

共有 條評論