本帖最后由 gaoyang9992006 于 2022-6-30 11:54 编辑
#申请原创# @21小跑堂
有时候想看看电视直播节目,发现很多软件都有广告,实在难受啊,怎么办呢,不如自己写一个。
视频源:可以去网上爬一套,通常视频直播源的流媒体地址都是m3u8结尾的,可以想法去网上找了。至于怎么找,不是本帖讨论内容。
开发软件:本人用的安卓手机,可以使用最简单的安卓开发工具E4A实施中文编程。
开发思路:最上面小窗口播放,支持全屏;下面有控制按钮,可以控制窗口显示模式,全屏模式;然后并排设置下拉列表,一列CCTV央视,另外一列地方卫视与精品节目频道
-------------------------------------------------------------------------------------------------------------------------------------------------------
频道地址存储
CCTV名字毕竟规则,可以使用一维数组存储,由于数组序号是从0开始的,我们可以
定义一个数组CCTVC(17) 存储CCTV1到CCTV17的频道地址,最后一个C表示通道、频道
那么CCTVC(0)对应的就是CCTV1
卫视与其他精品节目频道可使用二维数组存储,定义二维数组WSTVC(2)(100),最大可以存储100个频道名称和地址
思路有了,开始创建数组,注意E4A创建数组方式如下
变量 CCTVC 为 文本型(17)
变量 WSTVC 为 文本型(2,100)
我们将初始化频道地址与下拉列表填充放到同一个函数内实现,方便调用。
过程 频道源()
CCTVC(0)="http://125.210.152.19:9090/live/hzgq-cctv1gq-h264.m3u8"
CCTVC(1)="http://125.210.152.19:9090/live/hzgq-cctv2gq-h264.m3u8"
CCTVC(2)="http://125.210.152.19:9090/live/hzgq-cctv3gq-h264.m3u8"
CCTVC(3)="http://125.210.152.19:9090/live/hzgq-cctv4gq-h264.m3u8"
CCTVC(4)="http://125.210.152.19:9090/live/hzgq-cctv5gq-h264.m3u8"
CCTVC(5)="http://125.210.152.19:9090/live/hzgq-cctv6gq-h264.m3u8"
CCTVC(6)="http://125.210.152.19:9090/live/hzgq-cctv7gq-h264.m3u8"
CCTVC(7)="http://125.210.152.19:9090/live/hzgq-cctv8gq-h264.m3u8"
CCTVC(8)="http://117.148.179.162/TVOD/88888888/224/3221231697/index.m3u8"
CCTVC(9)="http://125.210.152.19:9090/live/hzgq-cctv10gq-h264.m3u8"
CCTVC(10)="http://125.210.152.19:9090/live/hzgq-cctv11gq-h264.m3u8"
CCTVC(11)="http://125.210.152.19:9090/live/hzgq-cctv12gq-h264.m3u8"
CCTVC(12)="http://39.135.138.60:18890/PLTV/88888910/224/3221225638/index.m3u8"
CCTVC(13)="http://39.135.138.59:18890/PLTV/88888910/224/3221225639/index.m3u8"
CCTVC(14)="http://39.135.138.59:18890/TVOD/88888910/224/3221225641/index.m3u8"
CCTVC(15)="http://125.210.152.19:9090/live/hzgq-cctv16gq-h264.m3u8"
CCTVC(16)="http://125.210.152.19:9090/live/hzgq-cctv17gq-h264.m3u8"
WSTVC(0,0)="精品纪录"
WSTVC(1,0)="http://39.134.65.166/PLTV/88888888/224/3221225545/1.m3u8"
WSTVC(0,1)="天津卫视"
WSTVC(1,1)="http://117.169.120.140:8080/live/hdtianjinstv/.m3u8"
WSTVC(0,2)="宁夏卫视"
WSTVC(1,2)="http://117.169.120.140:8080/live/ningxiastv/.m3u8"
WSTVC(0,3)="江西卫视"
WSTVC(1,3)="http://117.169.120.140:8080/live/jiangxistv/.m3u8"
WSTVC(0,4)="甘肃卫视"
WSTVC(1,4)="http://117.169.120.140:8080/live/gansustv/.m3u8"
WSTVC(0,5)="湖北卫视"
WSTVC(1,5)="http://117.169.120.140:8080/live/hdhubeistv/.m3u8"
WSTVC(0,6)="吉林卫视"
WSTVC(1,6)="http://117.169.120.140:8080/live/jilinstv/.m3u8"
WSTVC(0,7)="安徽卫视"
WSTVC(1,7)="http://117.148.179.177/PLTV/88888888/224/3221230215/index.m3u8"
WSTVC(0,8)="黑龙江卫视"
WSTVC(1,8)="http://117.148.179.162/PLTV/88888888/224/3221231520/index.m3u8"
WSTVC(0,9)="湖南卫视"
WSTVC(1,9)="http://117.148.179.135/PLTV/88888888/224/3221230206/index.m3u8"
WSTVC(0,10)="广东卫视"
WSTVC(1,10)="http://111.20.33.93/TVOD/88888893/224/3221226216/index.m3u8"
WSTVC(0,11)="四川卫视"
WSTVC(1,11)="http://117.148.179.142/PLTV/88888888/224/3221231885/index.m3u8"
WSTVC(0,12)="江苏卫视"
WSTVC(1,12)="http://117.148.179.175/PLTV/88888888/224/3221231447/index.m3u8"
WSTVC(0,13)="东方卫视"
WSTVC(1,13)="http://117.148.179.167/PLTV/88888888/224/3221231450/index.m3u8"
WSTVC(0,14)="山东卫视"
WSTVC(1,14)="http://117.148.179.137/PLTV/88888888/224/3221227909/index.m3u8"
WSTVC(0,15)="贵州卫视"
WSTVC(1,15)="http://39.134.65.179/PLTV/88888888/224/3221225888/1.m3u8"
WSTVC(0,16)="河北卫视"
WSTVC(1,16)="http://125.210.152.19:9090/live/hzgq-hbwsgq1-h264.m3u8"
WSTVC(0,17)="青海卫视"
WSTVC(1,17)="http://125.210.152.19:9090/live/hszx-qhtv-h264.m3u8"
WSTVC(0,18)="广西卫视"
WSTVC(1,18)="http://39.134.115.163:8080/PLTV/88888910/224/3221225731/index.m3u8"
WSTVC(0,19)="北京卫视"
WSTVC(1,19)="http://183.207.249.7/PLTV/3/224/3221225574/index.m3u8"
WSTVC(0,20)="东南卫视"
WSTVC(1,20)="http://39.135.138.59:18890/TVOD/88888910/224/3221225657/index.m3u8"
WSTVC(0,21)="西藏卫视"
WSTVC(1,21)="http://125.210.152.19:9090/live/hszx-xztv-h264.m3u8"
WSTVC(0,22)="陕西卫视"
WSTVC(1,22)="http://117.148.179.156/PLTV/88888888/224/3221231408/index.m3u8"
WSTVC(0,23)="新疆卫视"
WSTVC(1,23)="http://125.210.152.19:9090/live/hszx-xjtv-h264.m3u8"
WSTVC(0,24)="深圳卫视"
WSTVC(1,24)="http://39.135.138.59:18890/PLTV/88888910/224/3221225741/index.m3u8"
WSTVC(0,25)="浙江卫视"
WSTVC(1,25)="http://117.148.179.136/TVOD/88888888/224/3221231567/index.m3u8"
WSTVC(0,26)="重庆卫视"
WSTVC(1,26)="http://125.210.152.19:9090/live/hzgq-cqwsgq-h264.m3u8"
WSTVC(0,27)="山西卫视"
WSTVC(1,27)="http://liveflash.sxrtv.com/live/sxwshd.m3u8"
WSTVC(0,28)="三沙卫视"
WSTVC(1,28)="http://125.210.152.19:9090/live/hzgq-ssws-h264.m3u8"
WSTVC(0,29)="旅游卫视"
WSTVC(1,29)="http://125.210.152.19:9090/live/hszx-lytv-h264.m3u8"
WSTVC(0,30)="兵团卫视"
WSTVC(1,30)="http://125.210.152.19:9090/live/hszx-bttv-h264.m3u8"
WSTVC(0,31)="内蒙卫视"
WSTVC(1,31)="http://125.210.152.19:9090/live/hszx-nmgtv-h264.m3u8"
WSTVC(0,32)="云南卫视"
WSTVC(1,32)="http://125.210.152.19:9090/live/hzgq-ynwsgq-h264.m3u8"
WSTVC(0,33)="河南卫视"
WSTVC(1,33)="http://117.148.179.144/PLTV/88888888/224/3221231514/index.m3u8"
WSTVC(0,34)="旅游卫视"
WSTVC(1,34)="http://111.63.117.13:6060/030000001000/LYWS/LYWS.m3u8"
WSTVC(0,35)="东方卫视"
WSTVC(1,35)="http://39.135.138.59:18890/PLTV/88888910/224/3221225659/index.m3u8"
WSTVC(0,36)="香港文旅"
WSTVC(1,36)="https://myun-hw-s3.myun.tv/melj80jz/lxx27bol/1551285536499984128.m3u8"
WSTVC(0,37)="四海钓鱼"
WSTVC(1,37)="http://117.148.179.159/PLTV/88888888/224/3221231718/index.m3u8"
WSTVC(0,38)="凤凰咨询"
WSTVC(1,38)="http://playtv-live.ifeng.com/live/06OLEEWQKN4.m3u8"
WSTVC(0,39)="上海纪实"
WSTVC(1,39)="http://39.134.115.163:8080/PLTV/88888910/224/3221225654/index.m3u8"
WSTVC(0,40)="金鹰纪实"
WSTVC(1,40)="http://111.20.33.93/TVOD/88888893/224/3221226351/index.m3u8"
WSTVC(0,41)="北京纪实"
WSTVC(1,41)="http://39.134.115.163:8080/PLTV/88888910/224/3221225676/index.m3u8"
WSTVC(0,42)="陕西农林"
WSTVC(1,42)="http://111.20.33.93/PLTV/88888893/224/3221226229/index.m3u8"
WSTVC(0,43)="黑莓动画"
WSTVC(1,43)="http://183.207.249.7/PLTV/3/224/3221225555/index.m3u8"
WSTVC(0,44)="NewTV超级电影"
WSTVC(1,44)="http://39.134.115.163:8080/PLTV/88888910/224/3221225623/index.m3u8"
WSTVC(0,45)="华数高清"
WSTVC(1,45)="http://125.210.152.19:9090/live/hzgq-hsfwgq-h264.m3u8"
WSTVC(0,46)="教育1台"
WSTVC(1,46)="http://117.148.179.156/TVOD/88888888/224/3221231714/index.m3u8"
WSTVC(0,47)="动作电影"
WSTVC(1,47)="http://39.134.65.164/PLTV/88888888/224/3221225555/1.m3u8"
WSTVC(0,48)="黑莓电影"
WSTVC(1,48)="http://183.207.249.14/PLTV/3/224/3221225567/index.m3u8"
WSTVC(0,49)="超级电影"
WSTVC(1,49)="http://39.134.65.164/PLTV/88888888/224/3221225644/1.m3u8"
WSTVC(0,50)="西部电影频道"
WSTVC(1,50)="http://111.20.33.93/PLTV/88888893/224/3221226364/index.m3u8"
WSTVC(0,51)="动画电影"
WSTVC(1,51)="http://118.26.120.36:55336/tslive/c51_lb_118_600_t10/c51_lb_118_600_t10.m3u8?key=0b292c335e5837e94f25985f7c35b1efe"
WSTVC(0,52)="李连杰系列"
WSTVC(1,52)="http://121.51.249.48/tx.hls.huya.com/src/1394565196-1394565196-5989611908959830016-2789253848-10057-A-0-1-imgplus.m3u8"
WSTVC(0,53)="林正英系列"
WSTVC(1,53)="http://121.51.249.48/tx.hls.huya.com/src/1394575543-1394575543-5989656348986441728-2789274542-10057-A-0-1.m3u8"
WSTVC(0,54)="周星驰系列"
WSTVC(1,54)="http://121.51.249.48/tx.hls.huya.com/src/1394575534-1394575534-5989656310331736064-2789274524-10057-A-0-1-imgplus.m3u8"
WSTVC(0,55)="中国功夫"
WSTVC(1,55)="http://39.134.65.164/PLTV/88888888/224/3221225604/1.m3u8"
WSTVC(0,56)="成龙系列"
WSTVC(1,56)="http://117.148.179.134/PLTV/88888888/224/3221231687/index.m3u8"
变量 i 为 整数型
变量循环首 i=0 至 16
CCTV下拉列表框.添加项目("CCTV"&整数到文本(i+1))
变量循环尾
变量循环首 i=0 至 56
卫视下拉列表框.添加项目(WSTVC(0,i))
变量循环尾
结束 过程
好了,后面我们只需要调用这些数组内的地址填充到播放函数即可
接下来我们实现布局的均匀化,因为E4A没提供布局功能,但是我们可以使用代码设置这些控件的布局
我们给控件都起个很好认的名字
过程 布局()
变量 x 为 整数型
变量 y 为 整数型
'第1行按钮布局方式--------------------------------
x=取屏幕宽度()*75/320
y=取屏幕宽度()*4/320
播放按钮.宽度=x
暂停按钮.宽度=x
继续按钮.宽度=x
退出按钮.宽度=x
播放按钮.左边=(0*x)+(1*y)
暂停按钮.左边=(1*x)+(2*y)
继续按钮.左边=(2*x)+(3*y)
退出按钮.左边=(3*x)+(4*y)
'第2行按钮布局方式--------------------------------
x=取屏幕宽度()*80/320
y=取屏幕宽度()*20/320
全屏1按钮.宽度=x
全屏2按钮.宽度=x
全屏3按钮.宽度=x
全屏1按钮.左边=(0*x)+(1*y)
全屏2按钮.左边=(1*x)+(2*y)
全屏3按钮.左边=(2*x)+(3*y)
'第3行按钮布局方式--------------------------------
x=取屏幕宽度()*75/320
y=取屏幕宽度()*4/320
画面1按钮.宽度=x
画面2按钮.宽度=x
画面3按钮.宽度=x
画面4按钮.宽度=x
画面1按钮.左边=(0*x)+(1*y)
画面2按钮.左边=(1*x)+(2*y)
画面3按钮.左边=(2*x)+(3*y)
画面4按钮.左边=(3*x)+(4*y)
'第4行标签布局方式--------------------------------
CCTV标签.宽度=(取屏幕宽度()*3/8)
WSTV标签.宽度=(取屏幕宽度()*3/8)
CCTV标签.左边=(取屏幕宽度()*1/4)-(CCTV标签.宽度)/2
WSTV标签.左边=(取屏幕宽度()*3/4)-(WSTV标签.宽度)/2
'第5行下拉列表布局方式--------------------------------
CCTV下拉列表框.宽度=(取屏幕宽度()*3/8)
卫视下拉列表框.宽度=(取屏幕宽度()*3/8)
CCTV下拉列表框.左边=(取屏幕宽度()*1/4)-(CCTV下拉列表框.宽度)/2
卫视下拉列表框.左边=(取屏幕宽度()*3/4)-(卫视下拉列表框.宽度)/2
按钮1.宽度=(取屏幕宽度()*1/16)
按钮2.宽度=(取屏幕宽度()*1/16)
按钮1.左边=CCTV下拉列表框.左边+CCTV下拉列表框.宽度
按钮2.左边=卫视下拉列表框.左边+卫视下拉列表框.宽度
结束 过程
通过计算让按钮大小和相对位置固定下来。
当按下对应列表右侧的播放按钮后,将播放列表框当前显示的项对应的电视直播事件 按钮1.被单击()
小窗口播放()
隐藏选集和清晰度()
player2022.重构()
player2022.播放视频(CCTV下拉列表框.取项目内容(CCTV下拉列表框.现行选中项),CCTVC(CCTV下拉列表框.现行选中项),"")
结束 事件
事件 按钮2.被单击()
小窗口播放()
隐藏选集和清晰度()
player2022.重构()
player2022.播放视频(卫视下拉列表框.取项目内容(卫视下拉列表框.现行选中项),WSTVC(1,卫视下拉列表框.现行选中项),"")
结束 事件
这里提供一下工程源文件,感兴趣的一起开发这个软件,还可以改成在安卓电视上使用的电视软件
MyTV - 2.zip
(5.59 MB)
|
最新的播放地址访问 https://bbs.21ic.com/icview-3016290-1-1.html 本帖中地址已经过期,如果感兴趣自行替换重新编译成app
APP下载在楼下板凳上
使用E4A中文安卓开发工具,实现流媒体播放软件的开发。
膜拜大佬,赞一个