Plex搭配xTeVe播放IPTV
抓包
- 使用祖传的AX88179 USB转RJ-45把机顶盒和电脑用网线连起来。
- 控制面板,网络适配器里按住ctrl全选AX88179和你的电脑LAN口右键桥接,若一次性桥接不成功,单独右键加入桥接。
- 打开wireshark抓AX88179网络的包,然后再机顶盒开机,遥控板进入直播,随便按几下。保存到本地。
- 搜索栏输入http,右键追踪http流,搜索igmp,直至找到直播源地址,点一下,自动选中该流。
- 保存该流数据。
- 使用gcc编译以下源码出来的./a.out整理数据流文件(仅供参考,可能各地区获取的格式并不一样)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<termios.h>
#include <ctype.h>
#define BOOL int
#define TRUE 1
#define FALSE 0
char * DASH;
char * BUFFER;
FILE * FP;
FILE * FP2;
char PATH[99999][99];
struct termios init_setting;
void my_exit()
{
tcsetattr(0,TCSANOW,&init_setting);
printf("\033[?25h\n");
exit(0);
}
int main(int argc, char *argv[]){
if(signal(SIGINT,my_exit) == SIG_ERR){ //信号注册函数
perror("signal");
exit(-1);
}
atexit(my_exit);
struct termios new_setting;
struct termios new_settingback;
tcgetattr(0,&init_setting);
//tcgetattr(0,&new_settingback);
new_setting=init_setting;
new_setting.c_cflag&=~CREAD;
new_setting.c_lflag&=~ECHO;
new_setting.c_lflag&=~ICANON;
tcsetattr(0,TCSANOW,&new_setting);
DASH=(char *)malloc(8999999);
BUFFER=(char *)malloc(1999999);
int lines;
char path[39999];
lines=0;
char Path;
//char txt[999999]; //segment error
char buffer[200];
int pleng;
printf("\r输入文件路径,按回车键结束:\033[K");
fflush(stdout);
while(TRUE){
strcpy(path,"");
strcpy(&Path,"");
pleng=0;
while((Path=getchar()) != '\0'){
if(Path == '\x7f'){
if(isascii(path[pleng-1]) && pleng > 0){
path[pleng-1]='\0';
pleng=pleng-1;
printf("\b \b");
fflush(stdout);
continue;
}
else if(!isascii(path[pleng-1]) && pleng > 0){
path[pleng-3]='\0';
path[pleng-2]='\0';
path[pleng-1]='\0';
printf("\b\b \b\b");
fflush(stdout);
pleng=pleng-3;
continue;
}
continue;
}
if(Path == '\r' || Path == '\n' || Path == '\0'){
break;
}
pleng++;
strncat(path,&Path,1);
printf("%c",Path);
fflush(stdout);
}
strcpy(PATH[0],path);
fflush(stdout);
if(strcmp(PATH[0],"")!=0){
FP = fopen(PATH[0], "r+");
if (FP == NULL) { // 判断文件是否打开成功tf"); 1;
continue;
}
break;
}
}
printf("%s",PATH[0]);
FP2 = fopen("iptv.m3u8", "w+");
while (fgets(BUFFER,1999999,FP)){
strcat(DASH,BUFFER);
}
int si;
char m3u8[1999999];
char NAME[2999999];
BOOL record=FALSE;
BOOL recordNAME=FALSE;
for (si=0;si<strlen(DASH);si++){
if (recordNAME == TRUE){
if (DASH[si]=='"'){
recordNAME=FALSE;
printf("%s ",NAME);
fprintf(FP2,"%s ",NAME);
strcpy(NAME,"");
continue;
//break;
}
strncat(NAME,&DASH[si],1);
}
if (record == TRUE){
if (DASH[si]=='|'){
record=FALSE;
printf("%s\n",m3u8);
fprintf(FP2,"%s\n",m3u8);
strcpy(m3u8,"");
continue;
}
if (DASH[si]=='"' ){
continue;
}
strncat(m3u8,&DASH[si],1);
}
if (DASH[si]=='"' && DASH[si-1]=='=' && DASH[si-2]=='e' && DASH[si-3]=='m' && DASH[si-4]=='a' ){
recordNAME=TRUE;
}
if (DASH[si]=='=' && DASH[si-1]=='L' && DASH[si-2]=='R' && DASH[si-3]=='U' && DASH[si-4]=='l' ){
record=TRUE;
}
}
}openwrt和iptv接入
- 借助openwrt的udpxy转发,原理不明。。将openwrt和光猫的iptv接入同一路由器配置一下就可以看了。
- Interface
- 这里我要提一下,因为openwrt用静态地址一直无法正常联网,多加一个DHCP什么都解决了,但是ip不固定了,所以要从你主路由上为openwrt保留一个静态地址。
xVeTe
- 方法1:完全自制m3u8和匹配的xml文件,能播放,但要显示节目就比较难搞了。我这里提供shell脚本帮助生成。(各地区和用以上c程序生成的内容可能不一样,仅供参考)
1 | #m3u8 |
- 以下为最终整理修改出来的m3u8文件模板
1
2
3
4#EXTM3U
#EXTINF:-1 tvg-id="1" tvg-name=xxxx高清 ,xxxx高清
http://192.168.2.97:4022/udp/xxx.xx.xxx.xxx:xxxx
...
方法2:仅生成m3u8文件,然后在Plex使用第三方的EPG频道节目列表(xml),然后再Plex筛选(注意Plex里频道不能重复,不然一直报错进不去,所以没在这份表上的频道要被舍弃,要不然就要选错误的节目表)
1
2
3
4
5
6#节目总表:http://epg.51zmt.top:8000/e.xml
#央视和各省卫视:http://epg.51zmt.top:8000/cc.xml
#地方及数字付费:http://epg.51zmt.top:8000/difang.xml
#详情参考https://github.com/supzhang/epg 项目
#这里有进阶用法,如果你会的话,可以尝试用该项目获取节目表,然后用方法一喂给xVeTe最优方法(使用https://github.com/fanmingming/live 该项目的m3u8模板和xml信息)
下载https://live.fanmingming.com/tv/m3u/demo.m3u ,将直播源链接替换成自己的
直接编辑xteve,将https://live.fanmingming.com/e.xml 填入xml,将自己的demo.m3u填入m3u8
Plex
简单设置一下就可以了
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 不知名小驿站!