返回列表 发新帖

C/Java合并ts文件

[复制链接]

103

主题

4218

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
582
好评
36
信誉
102

MT论坛帅哥2019-5.1节快乐MT论坛最佳新人考神MT论坛新人

发表于 2023-7-25 10:47:01 来自手机  | 显示全部楼层 | 阅读模式  来自 上海
本帖最后由 焱妃 于 2023-7-25 10:55 编辑

想必大家都有看过喜欢的电影想下载吧,但抓包发现是m3u8文件,通过解析下载了所有ts视频,但却没有相应的(手机)软件进行合并(电脑可以使用copy /b *.ts 1.m4来实现),这里我用C/Java实现了合并ts视频的功能

m3u8listfile()

不要照搬,不要照搬,每个m3u8文件都不一样,得根据你的m3u8文件来看











  1. import java.io.*;
  2. import java.util.ArrayList;
  3. import java.util.HashMap;
  4. import java.util.List;
  5. import java.util.*;

  6. public class Main {
  7.     static List<String> list = new ArrayList<>();
  8.         public static void main(String[] args) {
  9.                 String txt;
  10.                 boolean ok=true;
  11.                 System.out.println("输入m3u8文件路径");
  12.                 Scanner sc = new Scanner(System.in);
  13.         File f = new File(sc.next());
  14.                 System.out.println("输入导出的文件名");
  15.                 String dst = sc.next();
  16.         try{
  17.                         BufferedReader br = new BufferedReader(new FileReader(f));
  18.                         while ((txt= br.readLine())!=null) {
  19.                                 if(txt.startsWith("/sdcard")){
  20.                                         list.add(txt);
  21.                                 }
  22.                         }
  23.                         ok=false;
  24.                 }catch(Exception e){}

  25.                 while(ok){
  26.                         try
  27.                         {
  28.                                 Thread.sleep(500);
  29.                         }
  30.                         catch (InterruptedException e)
  31.                         {}
  32.                 }
  33.                 composeFile(list,dst);
  34.                 System.out.println("完成合并!");
  35.     }
  36.     public static void composeFile(List<String> tsList, String folderPath) {
  37.         String fileOutPath = folderPath ;
  38.         try {
  39.             try (FileOutputStream fileOutputStream = new FileOutputStream(new File(fileOutPath))){
  40.                 byte[] bytes = new byte[1024];
  41.                 int length;
  42.                 for (String nodePath : tsList) {
  43.                     File file = new File(nodePath);
  44.                     if (!file.exists()) {
  45.                         continue;
  46.                     }
  47.                     try {
  48.                         try (FileInputStream fis = new FileInputStream(file);) {
  49.                             try {
  50.                                 while ((length = fis.read(bytes)) != -1) {
  51.                                     try {
  52.                                         fileOutputStream.write(bytes, 0, length);
  53.                                     } catch (IOException e) {}
  54.                                 }
  55.                             } catch (IOException e) {}
  56.                         }
  57.                     } catch (FileNotFoundException e) {} catch (IOException e) {
  58.                         e.printStackTrace();
  59.                     }
  60.                 }
  61.             }
  62.         } catch (FileNotFoundException e) {} catch (Exception e) {
  63.             e.printStackTrace();
  64.         }
  65.     }
  66. }
复制代码

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. int  main()
  5. {
  6.          char ch,file[100]={0},file1[100]={0};
  7.          printf("输入m3u8文件路径\n");
  8.          scanf("%s",file);
  9.          printf("输入导出文件路径\n");
  10.          scanf("%s",file1);
  11.      FILE* dstfile = fopen(file,"wb+");
  12.          FILE* srcfile = fopen(file1,"r");
  13.          FILE* temp = NULL;
  14.          char name[100];
  15.          while (fscanf(srcfile, "%s", name) != EOF)
  16.                 if (strlen(name) == 59||strlen(name) == 60||strlen(name) == 61||strlen(name) == 62)//文件名长度刚好都一样
  17.                 {
  18.                         temp = fopen(name, "rb");
  19.                         char ch = fgetc(temp);
  20.                         while (!feof(temp))
  21.                         {
  22.                                 fputc(ch, dstfile);
  23.                                 ch = fgetc(temp);//最后一次执行此行,文件读不出,ch仍然是上一次的值,之后feof(temp)成立
  24.                         }
  25.                 }
  26.      return  0;
  27. }
复制代码
已有1人评分好评 金币 理由
LoveDoLove + 1 + 1

查看全部评分 总评分:好评 +1  金币 +1 

回复

使用道具 举报

103

主题

4218

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
582
好评
36
信誉
102

MT论坛帅哥2019-5.1节快乐MT论坛最佳新人考神MT论坛新人

发表于 2023-7-25 10:50:23 来自手机  | 显示全部楼层  来自 上海
c语言中,ts视频的关键路径的字符长度是59/60/61/62
回复

使用道具 举报

20

主题

1489

回帖

4564

积分

大学生

纯白小白

Rank: 5Rank: 5

金币
1999
好评
2
信誉
98

MT论坛帅哥

发表于 2023-7-25 11:23:28 来自手机  | 显示全部楼层  来自 四川
刚刚从aide看到
回复

使用道具 举报

3

主题

2391

回帖

5763

积分

硕士生

Rank: 6Rank: 6

金币
5025
好评
0
信誉
99
发表于 2023-7-25 11:24:39 来自手机  | 显示全部楼层  来自 江西
感谢分享
回复

使用道具 举报

35

主题

6577

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
1502
好评
6
信誉
172

考神MT论坛新人MT论坛帅哥MT论坛最佳新人

QQ
发表于 2023-7-25 11:27:18 来自手机  | 显示全部楼层  来自 河北
感谢分享
回复

使用道具 举报

24

主题

3542

回帖

7232

积分

硕士生

萌新

Rank: 6Rank: 6

金币
864
好评
23
信誉
122

MT论坛新人考神MT论坛活跃会员MT论坛帅哥

发表于 2023-7-25 11:58:56 来自手机  | 显示全部楼层  来自 江西
感谢分享
回复

使用道具 举报

41

主题

1万

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
6148
好评
3
信誉
98
发表于 2023-7-25 12:04:39 来自手机  | 显示全部楼层  来自 山东
感谢分享
回复

使用道具 举报

2

主题

3099

回帖

7267

积分

硕士生

Rank: 6Rank: 6

金币
1623
好评
3
信誉
104
发表于 2023-7-25 12:18:33 来自手机  | 显示全部楼层  来自 广西
感谢分享,虽然我有电脑
回复

使用道具 举报

0

主题

1787

回帖

3650

积分

大学生

Rank: 5Rank: 5

金币
16
好评
0
信誉
100
发表于 2023-7-25 12:18:47 来自手机  | 显示全部楼层  来自 广西
感谢分享
回复

使用道具 举报

85

主题

7249

回帖

2万

积分

博士后

Rank: 8Rank: 8

金币
777
好评
96
信誉
147

考神MT论坛活跃会员MT论坛新人MT论坛最佳新人MT论坛帅哥MT论坛侠客挂机大佬

发表于 2023-7-25 13:01:59 来自手机  | 显示全部楼层  来自 新疆
能不能搞个MT插件?
回复

使用道具 举报

22

主题

6592

回帖

2万

积分

博士后

超级至尊VIP

Rank: 8Rank: 8

金币
6092
好评
6
信誉
99

考神MT论坛新人MT论坛帅哥MT论坛最佳新人MT论坛活跃会员挂机大佬

发表于 2023-7-25 14:53:51 来自手机  | 显示全部楼层  来自 甘肃
感谢分享
回复

使用道具 举报

0

主题

6570

回帖

1万

积分

博士生

Rank: 7Rank: 7Rank: 7

金币
6322
好评
0
信誉
108

考神MT论坛新人MT论坛帅哥

发表于 2023-7-25 15:21:54 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

38

主题

2187

回帖

6514

积分

硕士生

Rank: 6Rank: 6

金币
43
好评
73
信誉
131
发表于 2023-7-25 16:28:12 来自手机  | 显示全部楼层  来自 江苏
感谢分享
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表