电商网站 编程语言,深圳市宝安区教育局官网,网页设计心得体会200,wordpress主题进的慢1.下载ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下#xff0c;并设置调试命令 5.复制一下mp4视频到工程Debug目录下#xff08;复制一份到*.vcxproj同一目录#xff0c;用于调试#xff09; 6…1.下载ShiftMediaProject/FFmpeg 2.下载SDL2 3.新建VC控制台应用 3.配置include和lib 4.把FFmpeg和SDL的dll 复制到工程Debug目录下并设置调试命令 5.复制一下mp4视频到工程Debug目录下复制一份到*.vcxproj同一目录用于调试 6.编写代码
#include stdio.h
#include stdlib.h
#include iostreamextern C {
#include libavcodec\avcodec.h
#include libavformat\avformat.h
#include libavutil\avutil.h
#include SDL.h
}SDL_Window *window;
SDL_Texture* texture;
SDL_Renderer* renderer;
SDL_Rect rect;
int width;
int height;void display(AVFrame* frame);
void iniSdl();#undef main
int main()
{int ret -1;AVFormatContext* ctx avformat_alloc_context();ret avformat_open_input(ctx, my.mp4, NULL, NULL);ret avformat_find_stream_info(ctx, NULL);int videoindex -1;for (int i 0; i ctx-nb_streams; i){if (ctx-streams[i]-codecpar-codec_type AVMEDIA_TYPE_VIDEO){videoindex i;break;}}const AVCodec* codec avcodec_find_decoder(ctx-streams[videoindex]-codecpar-codec_id);AVCodecContext* avcc avcodec_alloc_context3(codec);ret avcodec_parameters_to_context(avcc, ctx-streams[videoindex]-codecpar);ret avcodec_open2(avcc, codec, NULL);width avcc-width;height avcc-height;rect.x 0;rect.y 0;rect.h height;rect.w width;iniSdl();AVFrame* frame av_frame_alloc();AVPacket* packet av_packet_alloc();while (true){ret av_read_frame(ctx, packet);if (ret 0){if (packet-stream_index videoindex){ret avcodec_send_packet(avcc, packet);while (ret 0){ret avcodec_receive_frame(avcc, frame);if (ret 0){display(frame);av_frame_unref(frame);}else{av_frame_unref(frame);break;}}} }else{av_packet_unref(packet);break;}}SDL_DestroyWindow(window);std::cout finish\n;
}void display(AVFrame* frame)
{SDL_UpdateYUVTexture(texture, rect, frame-data[0], frame-linesize[0], frame-data[1], frame-linesize[1], frame-data[2], frame-linesize[2]);SDL_RenderClear(renderer);SDL_RenderCopy(renderer, texture, NULL, NULL);SDL_RenderPresent(renderer);
}void iniSdl()
{SDL_Init(SDL_INIT_VIDEO);window SDL_CreateWindow(test, SDL_WINDOWPOS_UNDEFINED, SDL_WINDOWPOS_UNDEFINED, width, height, SDL_WINDOW_RESIZABLE);renderer SDL_CreateRenderer(window, -1, 0);texture SDL_CreateTexture(renderer, SDL_PIXELFORMAT_IYUV, SDL_TEXTUREACCESS_STREAMING, width, height);
}