小型电视台节目自动播放适应方案
2000-08-18 09:25:18
随着社会经济的发展与科技的进步,电视日益成为一种越来越为重要的大众媒体,国内计算机等新兴技术的蓬勃发展,使得广播事业中的计算机应用也如雨后春笋般发展起来,大家可以看到,国内各大型电视台竞相引入计算机管理系统,增加内部流程的易管理性,而小型电视台呢,象城镇、企事业单位自己的有线电视网能有那么大的财力引进高精尖设备及软件产品吗?怕是不能吧,但是原来落后的手工操作流程能不能改一改呢?当然可以,下面笔者就为大家介绍一款小巧、便宜适用的解决方案,主要面向对象为小型电台电视台。
一、 系统功能:
1、实现硬盘播出,原来沿用的技术一直是采用磁带播出技术,磁带使用频繁后,磨损比较严重,视音频效果都会越来越糟糕,而制作成数字格式的资料易保存且不易失真的益处便突显出来,小型电(视)台一般的视音频资料不外乎两者:一者来源于VCD光盘,可以从市场上买进,二者内部制作的贴近于自己群体的节目,象社区的新闻、会议纪要等等,或者是重要通知,可以使用现今比较流行的数码摄像机制作节目,转存入计算机后永久保存。这样所有的节目资料都可以存入视频工作站,节目源都将从此调入播出端。
2、自动播出,小型电(视)台,一直停留在手工播出的阶段,人员工作强度大,且播放时间不精确,整个播出过程易出错,而这套系统将实现自动播出视音频素材,包括VCD文件格式及自制节目源(即视频工作站的素材),将一天的甚至是一个星期的节目单录入计算机,计算机将定时播出,播放时间精确到秒,真正实现无人值守,采用的技术是软回放,节省投资。节目素材通过计算机管理,记录节目名称、节目来源(VCD还是自制节目)、节目时长、VCD节目源的声道(很多VCD具备英语和汉语或粤语和汉语双声道,播放时将其分离)等等信息方便以后查询及播出时使用,播出及管理合二为一,实现了计算机化,给以后工作带来的便利之处,想必不说大家也清楚了。
3、实现远程监控,如果建立了计算机网络,还可以在其它地方实现对播放机器的远程监控,这样管理员就可以在家中动态播放电视节目。可以使用PC Anywhere软件,其性能和可靠程序都较高,将其集成到本应用方案中,是引用了鲁迅的“拿来主义”。
二、 系统流程图:
流程图如上图所示,内部有线电视播出端的基带信号经混频器混制到一定的高频上,再与外来信号一起送入有线电视网。监控端可以通过计算机网远程控制播出端,如果没有计算机网这种条件可以省去此功能。
三、 功能具体实现:
1、 硬件方面:需要增加的硬件设备主要为两台PC机,一台用来播放和资料存储,一台用来监控,监控机可以视情况取舍,一个混频器,主要将PC机输出的基带信号调制成高频信号,再与其它路电视信号一起输出到千家万户,这两件物什都普通得不能再普通了,另外要注意一点,有线电视的播出端显卡上一定要有TV输出端,现在大部分显卡都有这种功能,象S3的多款显卡都有这一端子。用显卡输出有这么几个好处,一者肯定是节约投资,采用的播放方案为软回放,不用外加回放卡,二者是软件实现比较容易,回放的视频源范围较广,这样一来,小型电(视)台的所有需求基本都能满足,而且性价比较高,何乐而不为呢?
2、 软件实现方面:软件是笔者自己写的,因为水平有限,难免有些不当之处,所以在此我只将主要框架介绍一下,其它的就见仁见智了。有线电视播放程序主要是用PB做的,播放控件使用windows自带的Active MediaPlay控件,现在已经正式发版了windows mediaplay7.0,笔者使用的是mediaplay 6.4,可以支持的范围已经比较广,象.dat、.mp3、.mpg、.asf等等,它都支持,所以我感觉比较好用,Win2000中自带的也是这个版本,下面将相关代码介绍一下,与大家共享。
long ll_row //数据窗口的当前行
string ls_filename,ls_playtype //定义文件路径及文件播放形式(顺序播放为“1”,定时播放为“0”)
char lc_balance //定义播放文件的声道,“0”为左声道,“1”为平衡,“2”为右声道
ll_row = dw_1.getrow()
if ll_row < 0 or ll_row >= dw_1.rowcount() then return
if oldstate = 2 and newstate = 0 then
ll_row ++
dw_1.setrow(ll_row)
ls_playtype = trim(dw_1.getitemstring(ll_row,"playtype"))
if ls_playtype = string("1") then
ls_filename = trim(dw_1.getitemstring(ll_row,"address"))
ole_1.object.filename = ls_filename
ole_1.object.play()
ole_1.object.DisplaySize = 3
//log file for played.
integer li_FileNum
li_FileNum= FileOpen("C:\WINDOWS\Desktop\tvlog.txt",LineMode!,Write!,LockWrite!,Append!)
FileWrite(li_FileNum ,string(today())+"/"+string(now())+"~t"+string(ll_row)+"~t"+ls_filename)
FileClose(li_FileNum)
lc_balance = dw_1.getitemstring(ll_row,"channel")
if lc_balance = "1" then
ole_1.object.balance = 0
elseif lc_balance = "0" then
ole_1.object.balance = -10000
elseif lc_balance = "2" then
ole_1.object.balance = 10000
end if
end if
if ls_playtype = string("0") then cb_1.triggerevent(clicked!)
end if
以上代码在mediaplay控件的playstatechange 事件中,oldstate为状态转变前的状态,newstate为状态转变后的状态。控件的控制主要由以上代码组成,另外在其它窗口中写入相关定时的代码即可。文件信息等条目都将存入本地数据库。
整体而言,软件的书写力求简明扼要,只要能够满足需求即可,这样,成本下降,更加适合小型电(视)台的应用。
四、 应用前景:
此解决方案是在各电(视)台应用的基础上精炼而成,因为是小型化的组织,所以省去很多专业的设备,以及办公自动化的管理,只单纯实现节目自动播放和部分素材管理的模块,方便易用,最小方案只需要一台PC,一个混频器,一个播放程序,追求的就是简单易用,希望能够对有这种需求的同仁有所帮助。
摘自《赛迪网》 /文 |
404 Not Found
404 Not Found
nginx
|
|