avatar

目录
IPTV Player OS

IPTV播放器OS源测试环境搭建

环境准备

如下图所示,整个网络主要包括3大部分组成:

基于局域网的机顶盒组播和单播自测方法-整体框图

服务器:台式机or笔记本,用于搭建HTTP服务器、组播服务器和单播服务器。

机顶盒:用于解码音视频。

显示设备:电视机or电脑显示器,用于显示机顶盒的输出。

硬件详细清单

名称 用途
台式机or笔记本 服务器(Windows XP、Windows 7)
网关(路由器)or交换机(可选) DHCP服务(IPv4)
机顶盒或者OTT电视机 接受组播或单播码流,并解码输出
电视机or电脑显示器 显示设备,用于显示视频画面(其中,电脑显示器亦可共用台式机or笔记本的显示器)
电视盒(HDMI采集卡与电脑显示器配对) 将机顶盒输出信号传输到电脑显示器(驱动等自备)
视频棒(UV200)(与电脑配对) 将机顶盒输出信号传输到电脑(驱动等自备)
CVBS线or HDMI线(与电视机配对) 将机顶盒输出信号传输到电视机
HDMI转DVI线(与电脑显示器配对) 将机顶盒输出信号传输到电脑显示器

软件详细清单

名称 用途
Adb.zip adb工具包,用于电脑连接盒子进行相关操作
SecureCRT.exe 串口终端工具,用于连接盒子,进行相关操作,也可以用xshell等其他工具
live555MediaServer.exe 单播服务器程序,向机顶盒发送单播码流
PixstreamWinsend.exe 组播服务器程序,向机顶盒发送组播码流
test.ts或者test.mpg(mpegts容器封装,文件名可变,后缀为.ts或者.mpg) 测试片源(请自备)
hfs.exe Hls点播服务器程序,向机顶盒发送hls点播码流
ffmpeg.exe Hls切片程序
vlc.exe 在直播服务器搭建中使用VLC软件将视频以不同格式流的形式发出
vlc.apk 盒子终端vlc播放器,用于测试盒子端网络流视频
nginx.exe Hls直播服务器程序,向机顶盒发送hls直播码流

相关命令工具

Adb的安装使用

首先请下载解压adb工具包

配置系统环境变量到adb工具包目录(可选,如不配置,adb命令需进入到相应adb文件夹,建议配置)

打开cmd,进行adb相关操作,常用操作如下

连接盒子

powershell
1
adb connect ip:port

断开盒子

powershell
1
adb disconnect

查看连接设备

powershell
1
adb devices

安装应用

powershell
1
adb install apk路径

卸载应用

powershell
1
adb uninstall apk包名

清除应用缓存

powershell
1
adb shell pm clear apk包名

查看应用信息

powershell
1
adb shell dumpsys package apk包名

抓取日志

powershell
1
adb logcat -vtime > adb.log

FFmpeg的安装使用

官网下载相关软件后将ffmpeg离线包解压

转换方式一
  1. 直接把媒体文件转为ts
powershell
1
ffmpeg -i cat.mp4 -c copy -bsf h264_mp4toannexb cat.ts
  1. 使用segment参数进行切片
powershell
1
ffmpeg -i cat.ts -c copy -map 0 -f segment -segment_list playlist.m3u8 -segment_time 2 cat_output%03d.ts
转换方式二
  1. ffmpeg切片命令,以H264和AAC的形式对视频进行输出
powershell
1
ffmpeg -i input.mp4 -c:v libx264 -c:a aac -strict -2 -f hls output.m3u8
  1. ffmpeg转化成HLS时附带的指令

    -hls_time n: 设置每片的长度,默认值为2。单位为秒

    -hls_list_size n:设置播放列表保存的最多条目,设置为0会保存有所片信息,默认值为5

    -hls_wrap n:设置多少片之后开始覆盖,如果设置为0则不会覆盖,默认值为0.这个选项能够避免在磁盘上存储过多的片,而且能够限制写入磁盘的最多的片的数量

    -hls_start_number n:设置播放列表中sequence number的值为number,默认值为0

  2. 对ffmpeg切片指令的使用

powershell
1
ffmpeg -i output.mp4 -c:v libx264 -c:a aac -strict -2 -f hls -hls_list_size 0 -hls_time 5 output.m3u8
  1. 对应切片时长不准,可以用如下命令
powershell
1
ffmpeg -i output.mp4 -force_key_frames "expr:gte(t,n_forced*2)" -strict -2 -c:a aac -c:v libx264 -hls_time 1 -f hls output.m3u8

机顶盒测环境搭建

机顶盒与服务器连接

机顶盒与服务器之间的连接方式有2种(任选一种):直连方式和路由方式。

直连方式

机顶盒与服务器直接用网线连接,配置IP方式如下:

  1. 服务器手动配置静态IP:“本地连接->属性”。
  2. Android机顶盒手动配置静态IP:通过遥控器或者鼠标操作:在Launcher界面点击“Settings”,进入“Settings->Ethernet->StaticIP”。(不同版本可能路径略有差异)
路由方式

机顶盒与服务器通过网关或者交换机连接,配置IP方式如下:

  • 服务器(任选一种)

    1. 自动获取动态IP:“本地连接->属性”。(网关或交换机需开启DHCP服务)

    2. 手动配置静态IP:同上面的直连方式。

  • 机顶盒(任选一种)

    1. 自动获取动态IP

      通过遥控器或者鼠标操作:在Launcher界面点击“Settings”,进入“Settings->Ethernet->DHCP”。

    2. 手动配置静态IP:同上面的直连方式。

注:

  • 服务器和机顶盒的IP地址必须为局域网同一网段,例如:服务器IP地址为192.168.1.112,机顶盒IP地址为192.168.1.1.111。
  • 通过网关或者交换机连接,可以在同一局域网内挂载多台机顶盒,方便批量测试。

机顶盒与显示设备的连接

显示设备
  • 电脑显示器:VGA输入or DVI输入。

  • 电视机:CVBS输入or HDMI输入。

连接器
  • 电视盒:CVBS输入,VGA输出。

  • 视频棒(UV200):CVBS输入,USB输出。

  • CVBS线:CVBS输入输出。

  • HDMI线:HDMI输入输出。

  • HDMI转DVI线:HDMI输入,DVI输出。

机顶盒安装vlc等播放器

机顶盒需要安装终端播放器,用于测试视频源。

安装vlc

终端盒子adb安装vlc

shell
1
2
3
4
5
6
 laird@192  ~  adb install -r /Users/laird/Work/soft/vlc/VLC-Android-3.2.9-armeabi-v7a.apk
Performing Push Install
/Users/laird/Work/soft/vlc/VLC-Android-3.2.9-armeabi-v7a.apk: 1 file pushed. 1.9 MB/s (26371037 bytes in 13.120s)
pkg: /data/local/tmp/VLC-Android-3.2.9-armeabi-v7a.apk
Success
laird@192  ~ 
启动vlc应用

有以下2种方式(任选一种):

  • 通过遥控器操作

通过遥控器从系统应用管理界面进入

vlc-vlc-app-url
  • 通过命名行进入
Code
1
am start -n org.videolan.vlc/.StartActivity
vlc-vlc-app-url
  • 通过遥控器选择串流
vlc-vlc-app-url

点播测试

HTTP点播测试

HTTP点播服务器搭建

  • 启动hfs.exe

打开hfs.exe,直接将测试片源拖入进去进行发流;访问的地址为自己配置的地址,如这里为:”http://192.168.31.245/test.mp4”;

img

HTTP点播终端播放

RTSP点播测试

RTSP点播服务器搭建

将live555MediaServer.exe和自己要播的视频文件如test.ts放在同一个文件下。

双击运行live555MediaServer.exe

live55server

注:若服务器IP为192.168.1.112,则上述播放地址URL应为:“rtsp://192.168.1.112/test.ts”

RTSP点播终端播放

  • 通过pc-vlc等播放器播放 rtsp://192.168.1.112/test.ts
  • 通过终端-vlc等播放器播放 rtsp://192.168.1.112/test.ts

HLS点播测试

HLS点播服务器搭建

1.先用ffmpeg将视频切片成m3u8文件:

打开命令行,进入ffmpeg的bin目录,输入

powershell
1
ffmpeg -i test.mp4 -force_key_frames "expr:gte(t,n_forced*2)" -strict -2 -c:a aac -c:v libx264 -hls_time 2 -f hls out.m3u8

2.将切片好的文件放入同一个文件夹

test

3.打开hfs.exe将hls文件夹拖入里面进行发流;

img

HLS点播终端播放

直播测试

组播流测试

Winsend发送组播流

  1. 打开PixstreamWinsend.exe配置地址。

  2. 点击open按钮,选择自己想要播出视频流所在的文件夹选取视频文件

  3. 点击send按钮,开始发流。

winsend-note

  1. 点击“Open”,选择test.t或者test.mpg。

  2. 点击“Interface”下拉框,选择服务器IP。(例如192.168.1.112)

  3. 设置“IP address”为组播IP。(默认226.0.0.6)

  4. 设置“IP port”为组播端口。(默认5004)

  5. 点击“Send”开始发送码流。

注:如果“Interface”下拉框不可用或者为无效地址“0.0.0.0”,则先关闭此软件,将网线连接上服务器和机顶盒(网关or交换机),再打开此软件。本界面有三个频道可以发三个码流,重新打开PixstreamWinsend.exe,注意用不同的组播IP和端口。

VLC发送UDP流

  1. 打开vlc,点击 媒体 选项,然后点击 流

  2. 添加要发流的视频文件然后点击 串流

  3. 点击 下一个

  4. 点击文件选择UDP 然后再点击 添加

  5. 地址和端口填写跟组播地址一样 然后点击 下一个

  6. 点击 下一个

  7. 勾选杂项选项 然后点击 流

VLC发送RTP流

  1. 打开vlc,点击 媒体 选项,然后点击 流

  2. 添加要发流的视频文件然后点击 串流

  3. 点击 下一个

  4. 点击 文件选择RTP 然后点击 添加

  5. 发流地址和端口与组播地址一样 然后点击 下一个

  6. 点击 下一个

  7. 勾选杂项选项 点击 流

终端直播播放

HLS直播测试

直播服务器搭建

  1. 开启http服务器,双击nginx.exe。

  2. 将视频以udp流用vlc或者winsend发出来,记录下串流的地址和端口号.例如:226.0.0.7:1234

  3. 使用ffmpeg接收udp流并自动实时切片到http服务器下:打开命令行进入ffmpeg的bin目录

    powershell
    1
    ffmpeg -i udp://226.0.0.7:1234 -force_key_frames "expr:gte(t,n_forced*2)"  -c copy -f hls -hls_time 2.0 -hls_list_size 5 -hls_wrap 5 -hls_segment_filename C:\Laird-Soft\nginx-1.18.0\html\%03d.ts C:\Laird-Soft\nginx-1.18.0\html\playlist.m3u8

    其中udp://226.0.0.7:1234是组播流地址,C:\Laird-Soft\nginx-1.18.0\html是nginx文件所在目录,其中切片之后的m3u8文件在nginx的html目录下,根据nginx所在不同位置,可以自行修改。

    生成切片如下

    powershell
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    #EXTM3U
    #EXT-X-VERSION:3
    #EXT-X-TARGETDURATION:10
    #EXT-X-MEDIA-SEQUENCE:7
    #EXTINF:9.520000,
    002.ts
    #EXTINF:9.760000,
    003.ts
    #EXTINF:8.040000,
    004.ts
    #EXTINF:6.560000,
  4. 启动Nginx

    nginx默认端口号80,如需修改默认配置,找到 conf 目录里的 nginx.conf 文件,配置Nginx

    cmd 进入Nginx解压目录 执行以下命令

启动nginx服务

powershell
1
start nginx

修改配置后重新加载生效

powershell
1
nginx -s reload

重新打开日志文件

powershell
1
nginx -s reopen
测试nginx配置文件是否正确
powershell
1
nginx -t -c /path/to/nginx.conf

检查是否启动成功

powershell
1
tasklist /fi "imagename eq nginx.exe"

FCC直播测试

fcc直播测试需要依赖fcc服务器下发单播流,以及组播流。暂无法模拟测试整套流程。

终端直播播放

时移测试

时移服务端环境搭建

同hls直播测试,区别在于ffmpeg生成m3u8的格式不一样,hls_list_size设置为0

powershell
1
ffmpeg -i udp://226.0.0.7:1234 -force_key_frames "expr:gte(t,n_forced*2)"  -c copy -f hls -hls_time 2.0 -hls_list_size 0  -hls_segment_filename C:\Laird-Soft\nginx-1.18.0\html\%03d.ts C:\Laird-Soft\nginx-1.18.0\html\playlist.m3u8

生成切片为累加形式,不带end标签

Code
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
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:0.000000,
000.ts
#EXTINF:8.120000,
001.ts
#EXTINF:9.400000,
002.ts
#EXTINF:9.560000,
003.ts
#EXTINF:8.040000,
004.ts
#EXTINF:6.560000,
005.ts
#EXTINF:8.920000,
006.ts
#EXTINF:9.120000,
007.ts
#EXTINF:8.080000,
008.ts
#EXTINF:8.120000,
009.ts
#EXTINF:9.320000,
010.ts
#EXTINF:9.600000,
011.ts
#EXTINF:8.040000,
012.ts

终端时移播放

文章作者: laird.li
文章链接: https://lairdli.top/2020/06/29/Soft-IPTV-Player-OS/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 黎明鸟飞去

评论