HTML编辑MP4保存名称

发布于:2025-03-16 ⋅ 阅读:(26) ⋅ 点赞:(0)

        上图是HTML的界面,需要点击EDIT_MP4的选项,然后就出现文本框输入MP4名称。输入对应的MP4文件名称后,则点击Add_MP4按钮就可以把MP4的名称修改到json文件里面,json文件是network_detail.json文件。

HTML和CGI程序的交互

        上图是html和cgi程序交互的过程,html负责界面的开发:这包括输入框的设置,提交Button的设置。HTML通过form表单的方法传输到CGI程序; CGI程序接收form表单的record_file字段的数据后,再利用cJSON更新数据。最后利用消息队列发送到rv1126_vdec_stream.cpp后台程序,后台程序通过消息队列接收重新启动指令,对整个程序重新运行,如果不重新新运行,就没有办法实现刷新数据。

HTML和CGI程序的代码实现

        HTML代码

        上图是HTML代码的具体实现,首先要创建一个form表单包含,具体的实现是”<form action="/cgi-bin/save_mp4_config.cgi" method="post">,action指的是需要跳转的地址,在这里是/cgi-bin/save_mp4_config.cgi。method是传输的方法,这里是POST方法。然后设置两个控件,第一个是文本输入框,具体的实现是<input type="text" name="record_file" placeholder="Enter your mp4_name"/>, type=text指的是输入的类型是文本输入框,name=record_file指的是提交到服务器后的标识符,这里是record_file, placeholder指的是默认的输入内容是Enter your mp4_name。

 cgi代码的实现

        上图是CGI的程序截图,它主要是接收HTML数据通过form表单传过来的数据。先用cgiFormString来接收字段为record_file的文本数据,并用cJSON的API来替换json文件里面的record_file字段。 他要修改的是这个位置。

CJSON文件的组成

{"url_address":"udp://192.168.100.66:8080","url_type":"0","record_file":"record_kobe.mp4"}

url_address是url地址,这里是udp://192.168.100.66:8080。

url_type是url的类型,默认是0,不用修改

record_file是录制的文件名,这个字段是需要修改的地方, 主要是保存录制文件

        替换成网页传过来的文件名字。

具体的实现是:

        cJSON_ReplaceItemInObject(json, "record_file", cJSON_CreateString(record_file)),第一个传参:cJSON的字段,第二个传参:cjson的key字段的值,在cjson文件里面需要修改的key值是”record_file”, 第三个传参:cjson的value的值,这里面就是从form表单接收的值,并且对其进行修改,这里是cJSON_CreateString(record_file)。修改完JSON文件后,就重新加载JSON文件,具体的实现是fopen("/www/cjson_dir/network_detail.json", "w")先调用fopen重新加载Json文件;fputs(new_json_str, new_file)把最新的json数据重新进行刷新。

通过消息队列让程序重新启动:

        最后再通过消息队列发送信息到RV1126的后台程序,具体的实现是分两个步骤,第一步是创建消息队列,具体的实现是:key_msg = ftok(MSG_NAME, 'k')先创建消息队列的key, 第一个传参:pathname文件名通常是已经存在的文件,这里是MSG_NAME=/msg_file_vdec, 第二个传参:id号,这里是’k’。有了ftok的key之后,则调用msgget来创建消息队列,并返回msgid。

        第二步则是发送消息队列指令,这里调用的是API是msgsnd。第一个传参:消息队列的id号msgid; 第二个传参:Message结构体指针,message的赋值是mtype等于1 , data等于4; 第三个传参:data的长度,这里是4,指的是int的字节数。第四个传参:msgflg这里是0,表示的是阻塞发送。