Blog

合同也要随形势而变化

Content #

老洪所说的合同名不副实,在许多地方其实是一个比较普遍的现象,这一点,对于谙达地方社会实情的人来说用不着大惊小怪。当合同双方的利益一致时,这种名不副实并不会造成什么问题,当事各方(包括农民)对此都会持一种心照不宣的默契,只有当双方的利益变化或不一致时,它才会成为一个问题,成为村民在明里、村里在暗里寻事的理由。对此,长期在基层工作的常副区长又怎么会不知道?问题是现在客商投诉到了区政府,而且又以维护投资环境为理由要区里做主,他也自然不会怠慢和得罪他们,所以,此时作为区政府代表的常副区长所能做的,就是做一个和事佬,尽可能地将两边都抚平。他转身问乡村干部们:“你们说个意见,看么样解决?”

老洪以退为进:“不是政府没有管,而是没有办法解决,按群众的想法,是按其他的项目套,改租赁为征用,但是,合同又已经签了,也不好办。”

常副区长怎么能不知道问题所在,但他照样得继续问:“那你们说么样搞?”

林靖南一直到此时都没有发言,他只是让汪书记和老洪出面表明镇、村的立场,以便给自己一个回旋的余地。汪和洪在林靖南的鼓励下都直截了当地讲:“群众要求买断土地,否则你们就把土地退还给农民,不这样就很难解决。”

显然,他们是要安总经理,当然也是要常副区长明白,在此时,民心和民利显然要重于一纸合同,如果不正视这一点,一切的解决方案都是白搭。

常副区长又岂有不明白之理?只是安和公司所施加的压力也不能不考虑,于是,他便催林靖南表态:“林书记,你的点子多,你说么样个搞法?”

林靖南这才清了清嗓子开始发言:“这个项目,前期双方的合作还是好的,安和为洲头的开发做了表率,这一点大家都是承认的。但今年以来,农民对这个项目就越来越不满意了,其表现形式就是多次到省里和市里反映。问题的症结,一是‘两区五园’的开发使情况有了新的变化,目前,洲头村的项目是开工的一个,签协议的三个,方式都是买断土地,省人防办的土地补偿价格落实到农户的暂时是每亩4500元,另外还给了青苗补偿。结果有的农户家里最多补到了10万元。但反过来看安和,安和是最早上岛的项目,却没有见到一分利,农民见不到利,自然会有想法。二是农民去上访,上面的部门就给他们宣传政策,说既然是租赁,合同规定又是搞高科技农业,就不能搞建筑,而你们不仅搞了建筑,还搞的是宗教、旅游,这就给我们的工作带来了困难。”

他讲得尽量平和中立,将问题局限在村民和商家之间,却并不掩饰政府的立场。

安总并不完全同意林的判断:“可是我认为情况并不完全是这样。关于土地上的建筑,市土地局都是清楚的,还上岛来看了,而且,合同上只写了租赁,没有写明用途,加上区里也批了的嘛。”

“你们把上面搞通了,当然不会有麻烦,但是农民这头你们却没有搞通,问题就出在这里。”林靖南要尽可能给足安总面子。

安总也听出林靖南平和语气背后的偏袒(岂止是偏袒?),他有些忍不住了:“这个问题如果将来搞不好,可能会上中央台,上《焦点访谈》的,为什么呢?因为我们这里一些土地的用途也不是没有问题的。”

安总这话里已经有些威胁的口吻了,他好像在暗示:“你洲头岛上的其他项目,包括已经开工的这个项目批下来了吗?”

林靖南则继续软中带硬:“你谈的这个问题正是我们要探讨的。你说你没有搞建筑,但路也修了,房子也修了,这怎么叫我们向老百姓做工作呢?”

安总:“我们这些都是说得过去的,毕竟我们是有批文的,而且我们也是在恢复历史文化风貌,其他的项目呢?”

林靖南:“省人防办这个项目的一切手续都办齐了,是合法施工,其他暂时未获批准的项目我们一律都没有动工。”

“这与我们无关。”安总连忙掩饰,他也不愿意把话讲得太露。

林靖南进一步声明:“对这些项目,政府都采取了非常积极的态度,有专人负责。”

“我们这个项目为何麻烦不断?”安总又顶上了。

“你这个项目情况特殊,老百姓觉得你们没有按合同搞,他们吃亏了。所以,也不是我们能做得了主的。”老洪代林书记作答。

安总还是不依不饶:“乡镇就是做农村工作的嘛,做不了主,就没有工作好做了。”

常副区长看着双方这样在一些细节问题上你来我往地纠缠,也不能解决什么问题,连忙出来打圆场:“好了好了,这些具体的是非就不要扯了。林书记,你就说说这件事情该怎么办吧。”

“我看要从根本上解决,就只能把土地买断,否则是无法治根的。”

显然,这也是镇政府的立场,只是到这个时候才挑明。

“湖舫苑的土地不也是租赁的吗?别人不是搞得蛮好?”常副区长回旋了一下。

“大江区的许多项目也都是租的土地。”安总补充道。

“那我们就探讨一下他们是如何租的,借鉴他们的办法。”林靖南顺势给了安总一个台阶。

汪书记:“我估计不太可能全部是租赁。”

安总:“林书记说的借鉴也是一个可以讨论的途径。”他也明白,是非争得再清楚,最后还是要坐下来寻找解决问题的办法。

“是的,今天请常区长出面,不是要争个谁是谁非,而是要找出一个解决方案,我们谈得再好,农民不接受,也没有用,我同意可以借鉴湖舫苑的方案,做进一步探讨,过去的事就不要再扯了。”林靖南也附和着。

这个时候,双方的立场就开始接近了,作为调解人的常副区长非常高兴,他顺势提出了自己的想法。

“今天大家要我出面协调,我感到这件事情蛮棘手,无论怎么解决,我们都是从共同推动大江区的发展这个立场出发来想问题。应该说两边的想法都不是没有道理,我在小镇工作过,洲头的情况还是熟悉的,洲头一队地宽人少,过去是连鬼都不去的地方,前几年安和公司上岛搞开发,出的钱虽然少,但当时只要你来搞,能将农业税负担解决掉,农民也欢迎,所以也没有人去计较利益的事情,当时村里是不是也是这个心态呢?”

“是的。”安总和汪书记都承认。

“但现在情况变了,所以人们的认识也变了,开始相互攀比,这就是问题的根本,不是吗?”

“还是常区长看得准。”当事双方再次附和。

“但是我们又只能面对这个现实,因此,我想谈谈自己的三个想法:第一,原来签的协议还是应该算数的,这是一个信用问题,没有基本的信用,还谈什么创建投资环境?第二,也要考虑到群众的现实想法,如果完全不考虑,以后其他的项目开工了,一队群众的想法会更多,更会影响到发展和稳定,农民毕竟只有这个认识水平。因此,我们要考察一下,看看湖舫苑、碧水山庄他们究竟是一个怎样的搞法,看看有没有可以参考的地方,如果有利于开发,公司这边也适当地提高一点儿租金,让群众能接受,工作就好做。第三,如果要从根本上解决矛盾,最好还是一次性买断,征用下来后,不论搞什么,只要没有污染,都可以搞。区里也欢迎。所以,我还是建议一次性了断。”

说到这里,常副区长又重复了一次他的观点:“第一,合同不能单方面撕毁;第二,面对现实,谋求妥善解决;第三,买断。”

显然,话是有些明显偏袒镇、村这一边了,于是,常副区长又反过来讲了几句安抚安总的话:“最近发生的一些不愉快的事情,镇里要多做工作,电要送,门被拆了,要重新装上,派出所要立案调查,老百姓的素质低,政府和村里要教育,要加强联防,这些事情都不能再发生了,这样闹下去对洲头的开发也没有什么好处。”

这样一来,两边的人都接受了,安总就是再不愿意加价,也觉得话不好出口,于是,协调会的目的算是达到了。大家同意下一步要进一步探讨如何改善租赁的办法,而这实际上就等于是同意修改合同,增加租金,而且,双方也都赞同第二期的项目要以一次性了断的方式解决。

协调会就此结束,我再一次体会到了基层社会在对待合同问题上的灵活性以及产生这种灵活性的乡土基础。会议结束后,我又左思右想了半天,看看能否有什么更为妥善的不改变合同的解决办法,最后不得不承认,事情除了这样处理,好像也再难找到更好的方案。我不得不承认,如若一定要坚持合同的神圣性,只会把事情弄得更糟。

From #

小镇喧嚣:一个乡镇政治运作的演绎与阐释

视频切片(ffmpeg)

Content #

segment_format指定切片格式 #

ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 output-%d.mp4

查看第一分片mp4的最后的时间戳 #

ffprobe -v quiet -show_packets -select_streams v output-0.mp4 \
   | grep pts_time | tail -n 3

生成ffconcat格式索引文件 #

ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 \
    -segment_list_type ffconcat -segment_list output.lst output-%d.mp4

生成FLAT格式索引文件 #

ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 \
    -segment_list_type flat -segment_list filelist.txt output-%d.mp4

生成M3U8格式索引文件 #

ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 \
    -segment_list_type m3u8 -segment_list output.m3u8 output-%d.mp4

生成CSV格式索引文件 #

ffmpeg -re -i input.mp4 -c copy -f segment -segment_format mp4 \
    -segment_list_type csv -segment_list filelist.csv output-%d.mp4

csv列表文件中内容分为三个字段:文件名,文件起始时间,文件结束时间

...

hls推流

Content #

method参数用于设置HLS将M3U8及TS文件上传至HTTP服务器,使用该功能的前提是需要有一台HTTP服务器,支持上传相关的方法,例如PUT、POST等,可以尝试使用Nginx的webdav模块来完成这个功能,method方法的PUT方法可用于实现通过HTTP推流HLS的功能,首先需要配置一个支持上传文件的HTTP服务器,本例使用Nginx来作为HLS直播的推流服务器,并且需要支持WebDAV功能,Nginx配置如下:

location / {
    client_max_body_size 10M;
    dav_access              group:rw  all:rw;
    dav_methods PUT DELETE MKCOL COPY MOVE;
    root    html/;
}

配置完成后启动Nginx即可。通过ffmpeg执行HLS推流命令行如下:

./ffmpeg -i input.mp4 -c copy -f hls -hls_time 3 -hls_list_size 0 -method PUT

-t 30 http://127.0.0.1/test/output_test.m3u8 命令行执行完毕后,在Nginx对应的配置目录下面将会有ffmpeg推流上传的HLS相关的M3U8以及TS文件。

From #

HLS(HTTP Live Streaming)

HLS #

HLS工作原理如下:

  1. 切片(Segmentation): 媒体流被分割成一系列小的、独立的文件片段。
  2. 播放列表(Playlist): 一个包含有关媒体流信息的索引文件,指导客户端播放这些片段。播放列表通常是一个.m3u8文件。
  3. HTTP传输: 片段和播放列表通过HTTP协议传输到客户端。
  4. 自适应比特率: HLS支持多个版本的相同内容以不同的比特率进行编码,使客户端能够根据网络条件自动选择合适的版本。

ffmpeg for hls #

常规文件转hls直播: #

ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb output.m3u8

-bsf:v h264_mp4toannexb会将mp4中的H.264数据转换为H.264 AnnexB标准的编码,AnnexB标准的编码更常见于实时的传输流中。如果源文件为FLV,TS等可作为直播传输流的视频,则不需要这个参数。

start_number设置第一片的序列数 #

ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -start_number 300 output.m3u8

hls_time设置切片的duration #

控制转码切片长度为10秒左右一片,该规则会从关键帧处开始切片,所以时间并不会均匀。

ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_time 10 output.m3u8

hls_list_size设置切片的个数 #

ffmpeg -re -i input.mp4 -c copy -f hls -bsf:v h264_mp4toannexb -hls_list_size 3 output.m3u8

hls_base_url设置前置基本路径 #

m3u8列表中的切片文件默认与m3u8的路径相同,通过这个参数可以设置TS切片存储的路径。

...

ffmpeg for flv

ffmpeg生成带关键帧索引的flv #

将关键帧索引写入metadata:

ffmpeg -i input.mp4 -c copy -f flv -flvflags add_keyframe_index output.flv

ffprobe解析flv文件,并打印出关键帧信息 #

ffprobe -v trace -i output.flv

ffmpeg codec option

Content #

-c[:stream_specifier] codec (input/output,per-stream) -codec[:stream_specifier] codec (input/output,per-stream) Select an encoder (when used before an output file) or a decoder (when used before an input file) for one or more streams. codec is the name of a decoder/encoder or a special value “copy” (output only) to indicate that the stream is not to be re-encoded.

For example

ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT

encodes all video streams with libx264 and copies all audio streams.

...

ffmpeg for mp4

MP4 #

查看demuxer的参数:

ffmpeg -h demuxer=mp4

查看muxer的参数:

ffmpeg -h muxer=mp4

faststart参数 #

正常情况下ffmpeg生成moov是在mdat写完成之后,通过参数faststart可将moov 容器移动至mdat的前面,这样的mp4文件即使没有全部下载完成也可开始播放。

ffmpeg -i input.flv -c copy -f mp4 -movflags faststart output.mp4

isml参数 #

ISMV为微软发布的一个流媒体格式,通过参数isml可以发布ISML直播流,推至 IIS服务器:

ffmpeg -re -i input.mp4 -c copy -movflags isml +frag_keyframe -f ismv Stream

Options #

-f fmt (input/output) Force input or output file format. The format is normally auto detected for input files and guessed from the file extension for output files, so this option is not needed in most cases. -re (input) Read input at native frame rate. Mainly used to simulate a grab device, or live input stream (e.g. when reading from a file). Should not be used with actual grab devices or live input streams (where it can cause packet loss). By default ffmpeg attempts to read the input(s) as fast as possible. This option will slow down the reading of the input(s) to the native frame rate of the input(s). It is useful for real-time output (e.g. live streaming).

...

ffmpeg主要工作流程

主要工作流程 #

1)解封装(Demuxing)。 2)解码(Decoding)。 3)编码(Encoding)。 4)封装(Muxing)。其中需要经过6个步骤,具体如下。 1)读取输入源。 2)进行音视频的解封装。 3)解码每一帧音视频数据。 4)编码每一帧音视频数据。 5)进行音视频的重新封装。 6)输出到目标。

From #

ping Flooding

Content #

An attack called Smurf, and its variants, forces a system to expend its resources processing echo replies.

One method of accomplishing this is to spoof the victim’s source address and broadcast an echo request to an entire network of hosts. A single spoofed request message can result in hundreds or thousands of resulting replies being sent to the victim.

Another way of accomplishing a similar result is to install trojans on compromised hosts across the Internet and time them to each send echo requests to the same host simultaneously.

...

Stealth Scans(RST package)

Content #

Stealth port scans, by definition, aren’t meant to be detectable. They are based on how the TCP protocol stack responds to unexpected packets, or packets with illegal state flag combinations.

For example, consider an incoming packet that has the ACK flag set but has no related connection.

If the ACK were sent to a port with a listening server attached, the TCP stack wouldn’t find a related connection and would return a TCP RST message to tell the sender to reset the connection.

...