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
 |