int main(int argc,char *argv[])
|
02 |
{ |
03 |
AVFormatContext *pFormatCtx;
|
04 |
int i,videoStream;
|
05 |
AVCodecContext *pCodecCtx;
|
06 |
AVPacket packet;
|
07 |
//H264Context *h;
|
08 |
int type=0;
|
09 |
//Open video file
|
10 |
char rtsp[100]="";
|
11 |
char filename[150]="";
|
12 |
char *p=NULL;
|
13 |
char camid[6]="";
|
14 |
char log[100]="";
|
15 |
char new_file[200]="";
|
16 |
char command[200]="";
|
17 |
char file_jpg[200]="";
|
18 |
19 |
if(argc!=3)
|
20 |
{
|
21 |
exit(1);
|
22 |
}
|
23 |
|
24 |
strcpy(rtsp,argv[1]);
|
25 |
strcpy(filename,argv[2]);
|
26 |
p=strstr(filename,"cam");
|
27 |
memcpy(camid,p,5);
|
28 |
29 |
signal(SIGTERM,recv_signal);
|
30 |
signal(SIGUSR1,recv_signal);
|
31 |
signal(SIGHUP,recv_signal);
|
32 |
signal(SIGSEGV,recv_signal);
|
33 |
strcpy(File_Name,filename);
|
34 |
35 |
//Register all formats and codecs
|
36 |
av_register_all();
|
37 |
avformat_network_init();
|
38 |
39 |
if(av_open_input_file(&pFormatCtx,rtsp,NULL,0,NULL)!=0)
|
40 |
{
|
41 |
sprintf(log,"%s [%s] %s","The ",rtsp," stream open error\n");
|
42 |
write_log(camid,log);
|
43 |
exit(1);
|
44 |
}
|
45 |
46 |
//Retrieve stream information
|
47 |
if(av_find_stream_info(pFormatCtx)<0)
|
48 |
{
|
49 |
sprintf(log,"%s","Video Flow information check error\n");
|
50 |
write_log(camid,log);
|
51 |
return -1;
|
52 |
}
|
53 |
54 |
//Dump information about file onto standard error
|
55 |
av_dump_format(pFormatCtx,0,rtsp,0);
|
56 |
57 |
//Find the first video stream
|
58 |
videoStream=-1;
|
59 |
for(i=0;i<pFormatCtx->nb_streams;i++)
|
60 |
{
|
61 |
if(pFormatCtx->streams[i]->codec->codec_type==AVMEDIA_TYPE_VIDEO)
|
62 |
{
|
63 |
videoStream=i;
|
64 |
break;
|
65 |
}
|
66 |
}
|
67 |
68 |
if(videoStream==-1)
|
69 |
{
|
70 |
sprintf(log,"%s","Didn't find a video stram\n");
|
71 |
write_log(camid,log);
|
72 |
return -1;
|
73 |
}
|
74 |
75 |
pCodecCtx=pFormatCtx->streams[videoStream]->codec;
|
76 |
//open file
|
77 |
FILE *fp=NULL;
|
78 |
//char *filename="/home/MEDIA/project/linux/test.mp4";
|
79 |
80 |
if((fp=fopen(filename,"wb"))==NULL)
|
81 |
{
|
82 |
sprintf(log,"%s%s",filename," open failed\n");
|
83 |
write_log(camid,log);
|
84 |
exit(1);
|
85 |
}
|
86 |
/*这里打开了一个test.mp4的文件,下面怎么封装存储就不知道了,请各位大哥指导!帮助指点下封装成mp4文件的主要函数部分*/ |