📄 main.cc
字号:
vpts = ntohl(*((unsigned int *) pes.P()->pts)); break; } if (apts && vpts) cout << pos << " " << apts << " " << vpts << endl; } } } break; default: err++; break; } } else err++; if (argc == 3 || argc == 4) { int i=0; int pes=0; if (argc == 3) { switch (progn) { case pes2ts2_: { pes_to_ts2( STDIN_FILENO, STDOUT_FILENO, strtol(argv[1],(char **)NULL, 0), strtol(argv[2],(char **)NULL, 0)); cerr << endl; } break; case extract_pes_payload_: case pes2vid_es_: case pes2aud_es_: pes = 1; case extract_pes_: case pes2vid_: case pes2aud_: { istringstream arg(argv[2]); int id = -1; if ((fd = open(argv[1],O_RDONLY|O_LARGEFILE)) <0) { perror(argv[1]); exit(1); } arg >> hex >> id; switch(progn) { case pes2vid_es_: case pes2vid_: switch(id) { case AUDIO_STREAM_S ... AUDIO_STREAM_E: case VIDEO_STREAM_S ... VIDEO_STREAM_E: break; default: cerr << "Not a valid video id" << endl; exit(1); } break; case pes2aud_: case pes2aud_es_: switch(id) { case AUDIO_STREAM_S ... AUDIO_STREAM_E: break; default: cerr << "Not a valid audio id" << endl; } break; default: break; } arg >> hex >> id; extract_from_pes(fd, STDOUT_FILENO, id, pes); break; } case ts2es_: if ((fd = open(argv[1],O_RDONLY|O_LARGEFILE)) <0) { perror(argv[1]); exit(1); } ts2es(fd, strtol(argv[2],(char **)NULL,0)); break; case pes_repack_: { uint8_t buf[SIZE]; int count = 1; int size = strtol(argv[2],(char **)NULL,0); // p2p p; ipack p; if (argc > 3) { usage(progn); exit(1); } if ((fd = open(argv[1],O_RDONLY|O_LARGEFILE)) <0) { perror(argv[1]); exit(1); } if (fd != STDIN_FILENO) cerr << "Reading " << argv[1] << endl; else exit(1); cerr << "Repacking int size " << size << endl; // init_p2p(&p, write_it, size); init_ipack(&p, size, write_it2, 0); while (count > 0) { count = read(fd,buf,SIZE); instant_repack(buf,count,&p); } } return 0; } } if (argc == 4) { if ((fd = open(argv[1],O_RDONLY|O_LARGEFILE)) < 0) { perror(argv[1]); exit(1); } } else { i=1; fd = STDIN_FILENO; } switch (progn) { case ts2pes_: ts_to_pes(fd,strtol(argv[2-i],(char **)NULL, 0), strtol(argv[3-i],(char **)NULL, 0),0); break; case ts2ps_: ts_to_pes(fd,strtol(argv[2-i],(char **)NULL, 0), strtol(argv[3-i],(char **)NULL, 0),1); break; case pes_demux_: { fda_out = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); fdv_out = open(argv[3],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); if(fda_out < 0 || fdv_out < 0) { cerr << "Error opening output files" << endl; exit(1); } cerr << "Opening " << argv[2] << " for audio" << endl; cerr << "Opening " << argv[3] << " for video" << endl; pes_dmx( fd, fda_out, fdv_out, 0); } break; case ts_demux_: { fda_out = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); fdv_out = open(argv[3],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); if(fda_out < 0 || fdv_out < 0) { cerr << "Error opening output files" << endl; exit(1); } cerr << "Opening " << argv[2] << " for audio" << endl; cerr << "Opening " << argv[3] << " for video" << endl; ts_demux(fd,fdv_out,fda_out,0,0,0); } break; case ts_es_demux_: { fda_out = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); fdv_out = open(argv[3],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); if(fda_out < 0 || fdv_out < 0) { cerr << "Error opening output files" << endl; exit(1); } cerr << "Opening " << argv[2] << " for audio" << endl; cerr << "Opening " << argv[3] << " for video" << endl; ts_demux(fd, fdv_out, fda_out, 0, 0, 1); } break; case es_demux_: { fda_out = open(argv[2],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); fdv_out = open(argv[3],O_WRONLY|O_CREAT|O_TRUNC |O_LARGEFILE, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP| S_IROTH|S_IWOTH); if(fda_out < 0 || fdv_out < 0) { cerr << "Error opening output files" << endl; exit(1); } cerr << "Opening " << argv[2] << " for audio" << endl; cerr << "Opening " << argv[3] << " for video" << endl; cerr << "VPTS - APTS = " << pes_dmx(fd, fda_out, fdv_out, 1)/90000. //<< es_demux(fd, fdv_out, fda_out)/90000. << "s" << endl; } break; case pes2ts2_: { pes_to_ts2( fd, STDOUT_FILENO, strtol(argv[2-i],(char **)NULL, 0), strtol(argv[3-i],(char **)NULL, 0)); cerr << endl; } break; case split_mpg_: close(fd); split_mpg(argv[1],strtol(argv[2],(char **)NULL,0)*1024*1024); break; case cut_mpg_: close(fd); cut_mpg(argv[1],strtol(argv[2],(char **)NULL,0)); break; } } else err++; if (err == 2) usage(progn);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -