本来想到南海研究站做DSP相关的工作,不过做视频编解码相关工作也很有意思。
1、功能说明
本软件实现了点对点的实时桌面录像传输,接收端采用VLC、FFMPEG可以实时播放发送的桌面录像,达到了每秒15帧的刷新率。采用不失真方式压缩桌面大小,编码成264码流,进一步利用tsmux将264码流文件转换成ts流,当ts缓冲区大于188字节后自动调用UDP点对点发送出去。
2、设计流程
本软件的最终成品是一个不断发送ts码流的软件,ts码流是视频流的包装,因此本软件最要是得到一个视频流,我们采用X264来编码产生H.264视频流。 X264的工程源码主要分四个层次,而底下三个层次(帧层、条带层、宏块层)已经封装在libx264d.lib里面,一般情况下是不需要对lib工程进行修改。 X264的最上一层,主函数层,主函数层提供给用户一个接口,输入视频图像原始的YUV数据,即可输出编码好的264码流数据。根据主函数的提供的接口,我们首先需要将屏幕截取下来然后缩小到我们期望的大小(图像越大编码时间越长,帧率将会越小),截屏区域以及压缩后的大小通过宏定义实现便捷修改,本程序中,我采用了CImage类创建图像,然后从屏幕得到图像并用不失真的方式得到期望的缩小的图像,进而得到图像的RGB值,再通过优化的YUV计算公式(将复杂乘除改成了简单乘除及移位)得到一帧图像的YUV数据,然后将数据YUV数据赋值给X264编码的PIC变量,再调用encode_frame()完成一帧编码并得到264码流文件。然后调用tsmux将264码流文件打包成ts流数据丢进发送缓冲区,tsmux自动将数据188字节一次一次通过UDP发送出去。 程序流程图如下: 本程序将以上流程图做成了死循环,不断截取屏幕丢给TSmux打包。需要注意的是,从获取屏幕数据到完成ts打包后,计算出所花时间T1,然后根据宏定义的X264参数fps帧率,计算出两次获取屏幕的时间间隔为T0=1000/fps毫秒,然后再休眠(T0-T1)毫秒即可保证屏幕录像的原始数据与264码流数据的帧率一致。
3、使用说明
使用本程序需要一台windowsXP或更新操作系统的计算机以及VLC播放器,本程序的UDP发送设置为发送到本地的10888端口(127.0.0.1:10888),可根据实际需要修改UDP.cpp里面的相关参数。 首先我们打开VLC.exe,点击“媒体”=》“打开网络串流”,如下图 在输入框内输入网络URL,VLC需要播放的是发送到本计算机的某个端口的UDP数据,所以地址写成“udp://@:10888”,然后点击播放,如果发送ts流程序已经工作,则可能需要等待一分钟捕捉到ts流包头以及时间戳信息。如果打开vlc后才立马打开发送ts流程序,则可以立即播放发送过来的实时屏幕录像。 如果不是发送给本地,需要将程序中UDP.cpp的UDP参数进行修改,然后重新编译生成X264_TS.exe,然后直接双击运行X264_TS.exe即可实现本地屏幕录像实时发送出去。
挺好的
[回复]
留芳付氏 回复:
2月 2nd, 2013 at 12:33
谢谢哈,链接已添加
[回复]
windwows 简单的都是浮云,x264的都是使用库的了,目前是硬写的encode,用代码的D1无线传输的,我现在刚开始。–turkeyzhu
[回复]
admin 回复:
2月 12th, 2014 at 22:23
欢迎交流。
[回复]
源码不能下载呀,重新分享下吧,谢谢!
[回复]
admin 回复:
2月 13th, 2014 at 10:22
好的,请稍等。
[回复]
源码过期了,可以直接给我传一份吗?谢谢了
[回复]
cloud 回复:
6月 4th, 2014 at 19:46
已经续期,谢谢关注。
[回复]
楼主您好,源码又过期了,是否方便续期?非常感谢!
[回复]
cloud 回复:
9月 10th, 2014 at 23:50
已续期。
[回复]
楼主,源代码过期了,能不能重新分享一下,谢谢
[回复]
cloud 回复:
10月 24th, 2014 at 08:48
已续期。
[回复]
楼主您好,源码又过期了,是否方便续期?
[回复]
cloud 回复:
10月 24th, 2014 at 08:48
已续期。
[回复]
楼主,代码有过期了,求续期啊
[回复]
cloud 回复:
3月 17th, 2015 at 12:13
已续期。
[回复]
我需要将输入的RTMP标准格式的时频流数据采用H.264进行压缩处理后进行输出,输入的视频流格式如下:
分辨率:768*576
格式:8比特灰度
帧频:12.5帧/秒
软件环境为C#
想参考一下贵程序,源码过期了,可否续期一下,谢谢
[回复]
cloud 回复:
3月 17th, 2015 at 12:14
已续期。
[回复]
你好,源码下载不了,能发一份到邮箱吗:50*******@qq.com
[回复]
cloud 回复:
3月 24th, 2015 at 09:02
您好,新的下载地址:http://www.fujiangyun.com/Cloud_X264_TS.zip
[回复]