1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 |
- #include <fstream>
- #include <iostream>
- #include "FlvParser.h"
- void Process(std::fstream &fin, char *filename);
- int main(int argc, char *argv[]) {
- if (argc < 3) {
- printf("flvparser [input file] [output file]\n");
- return -1;
- }
- std::fstream fin;
- fin.open(argv[1], std::ios_base::in | std::ios_base::binary);
- if (!fin) {
- std::cout << "fstream init error" << std::endl;
- return -1;
- }
- Process(fin, argv[1]);
- fin.close();
- return 0;
- }
- void Process(std::fstream &fin, char *filename) {
- FlvParser pParser;
- int nBufSize = 2 * 1024 * 1024;
- int nFlvPos = 0;
- uint8_t *pBuf, *pBak;
- pBuf = new uint8_t[nBufSize];
- pBak = new uint8_t[nBufSize];
- while (1) {
- int nReadNum = 0;
- int nUsedLen = 0;
- fin.read((char *)pBuf + nFlvPos, nBufSize - nFlvPos);
- nReadNum = fin.gcount();
- if (nReadNum == 0) break;
- pParser.Parse(pBuf + nFlvPos, nReadNum, nUsedLen);
- nFlvPos += nReadNum;
- if (nUsedLen != nFlvPos) {
- memcpy(pBak, pBuf + nUsedLen, nFlvPos - nUsedLen);
- memcpy(pBuf, pBak, nFlvPos - nUsedLen);
- }
- nFlvPos -= nUsedLen;
- }
- pParser.DumpH264("parser.h264");
- pParser.DumpAAC("parser.aac");
- pParser.DumpFlv("parser.flv");
- delete[] pBuf;
- delete[] pBak;
- }
|