合並ts文件


合並ts文件

文件在手機中的存儲:

├── fe2cd5a64fe78a69f90a7c0a2b08a240e1444082.ts
├── ff5b590b44e676dc0a72d127fd165adaa0a478ec.ts
├── ff7085e695211f5e0b8cd239d51ad7870889c14b.ts
├── ....
├── ffec91db3441fd42adab27d0dbe26f424fc23a1d.ts
├── index.m3u8
├── index.m3u8.play
├── task.info

1) 根據獵豹瀏覽器中的download.db,使用sqlite3打開文件,查看對應文件在手機瀏覽器中的真實路徑.

2) 通過手機插上U盤/移動硬盤,將文件拷貝到電腦

3) 根據index.m3u8.play中的ts片段文件,生成一個總的ts文件.

可以使用C/OC/python等,讀取index.m3u8.play文件,生成類似下面的shell語句,即可合並為一個ts文件.

windows:

 copy /b1.ts”+“2.ts”+…+”n.ts” /y “combine.ts

mac:

  cat 1.ts 2.ts > combine.ts

相關程序代碼:

    //讀文件

    NSString *fullFilePath = @"/xxx/index.m3u8.play";

    NSFileHandle *handle = [NSFileHandle fileHandleForReadingAtPath:fullFilePath ];

    NSData *data3 = [handle readDataToEndOfFile];

    NSString *temp = [[NSString alloc]initWithData:data3 encoding:NSUTF8StringEncoding];

    NSArray *tempArray = [temp componentsSeparatedByString:@"\n"];

    NSMutableArray *fileMArray = [NSMutableArray array];

    for (NSInteger index = 0 ; index < tempArray.count; index++) {
        NSString *fileContentLine = tempArray[index];
        if ([fileContentLine hasSuffix:@".ts"]) {
            [fileMArray addObject:fileContentLine];
        }
    }
    NSString *fileNames = [fileMArray componentsJoinedByString:@" "];

    //寫入文件

    NSString *toPath = @"/yyy/combineTSFile.sh";
    NSFileHandle *handle2 = [NSFileHandle fileHandleForWritingAtPath:toPath];

    NSLog(@"%s [LINE:%d] fileNames=%@", __func__, __LINE__,fileNames);

    NSData *data = [fileNames dataUsingEncoding:NSUTF8StringEncoding];
    [handle2 writeData:data];    
    [handle2 synchronizeFile];
    [handle2 closeFile];

4) 將ts文件轉換為mp4文件

ffmpeg -i combine.ts -acodec copy -vcodec copy -bsf aac_adtstoasc output.mp4


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM