64 lines
1.6 KiB
C
64 lines
1.6 KiB
C
//
|
|
// Created by tangchao on 2021/11/16.
|
|
//
|
|
|
|
#ifndef PSDK_DEMO_FFMPEG_TC_H
|
|
#define PSDK_DEMO_FFMPEG_TC_H
|
|
|
|
|
|
//tc开始
|
|
#include <stdlib.h>
|
|
#include <stdio.h>
|
|
#include <string.h>
|
|
#include <math.h>
|
|
|
|
#include <libavutil/avassert.h>
|
|
#include <libavutil/channel_layout.h>
|
|
#include <libavutil/opt.h>
|
|
#include <libavutil/mathematics.h>
|
|
#include <libavutil/timestamp.h>
|
|
#include <libavcodec/avcodec.h>
|
|
#include <libavformat/avformat.h>
|
|
#include <libswscale/swscale.h>
|
|
#include <libswresample/swresample.h>
|
|
#include "libavdevice/avdevice.h"
|
|
|
|
#include <libavutil/imgutils.h>
|
|
|
|
#include <unistd.h>//usleep
|
|
|
|
|
|
#define STREAM_DURATION 50.0 /*录制视频的持续时间 秒*/
|
|
#define STREAM_FRAME_RATE 15 /* images/s 这里可以根据摄像头的采集速度来设置帧率 */
|
|
#define STREAM_PIX_FMT AV_PIX_FMT_YUV420P /* default pix_fmt */
|
|
#define SCALE_FLAGS SWS_BICUBIC
|
|
//tc结束
|
|
|
|
|
|
//存放视频的宽度和高度
|
|
int video_width;
|
|
int video_height;
|
|
|
|
|
|
typedef struct IntputDev
|
|
{
|
|
AVCodecContext *pCodecCtx;
|
|
AVCodec *pCodec;
|
|
AVFormatContext *v_ifmtCtx;
|
|
int videoindex;
|
|
struct SwsContext *img_convert_ctx;
|
|
AVPacket *in_packet;
|
|
AVFrame *pFrame,*pFrameYUV;
|
|
|
|
/*下一帧的点数*/
|
|
int64_t next_pts;
|
|
}IntputDev;
|
|
|
|
char *getsystemtime();
|
|
AVFrame *get_video_frame(IntputDev* input);
|
|
//static void encode(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt);
|
|
void encode(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt, char **data, int *datasize);
|
|
char * encode2(AVCodecContext *enc_ctx, AVFrame *frame, AVPacket *pkt, int *datasize);
|
|
|
|
#endif //PSDK_DEMO_FFMPEG_TC_H
|