1 配置ffmpeg
1.1 下载安装ffmpeg
下载ffmpeg-2.7.7.tar.gz
tar -xvzf ffmpeg-2.7.7.tar.gz
cd ffmpeg-2.7.7
./configure --prefix=/usr/local/ffmpeg --enable-shared --enable-gpl --enable-version3 --enable-nonfree --enable-postproc --enable-pthreads --enable-libmp3lame --enable-libtheora --enable-libx264 --enable-libxvid --enable-x11grab --enable-libvorbis
make
sudo make install
1.2 配置.pro文件
## FFMPEG 2.7.7
FFMPEG_DIRS = /usr/local/ffmpeg
OPENCV_DIRS = /usr/local/include
##FFMPEG
INCLUDEPATH += $${FFMPEG_DIRS}/include
LIBS += -L$${FFMPEG_DIRS}/lib/ -lavcodec -lavdevice -lavfilter -lavformat -lavutil -lswresample -lswscale -lpostproc
##OPENCV
INCLUDEPATH += $${OPENCV_DIRS}/opencv \
$${OPENCV_DIRS}/opencv2
LIBS += $${OPENCV_DIRS}/../lib/libopencv_*.so
LIBS += -lpthread
2 创建socket
// client.cpp
#include "include/client.h"
const int SER_PORT = 12580; // 服务器接收的端口号
static const char * SER_IP = "192.168.43.1"; // 服务器的IP地址,
int initTcpClient()
{
int cli_socket = socket(AF_INET, SOCK_STREAM, 0); // cli_socket为返回的套接字描述符
if (cli_socket == -1)
{
cout << "invalid socket!";
return 0;
}
sockaddr_in seraddr;
seraddr.sin_family = AF_INET;
seraddr.sin_port = htons(SER_PORT); // htons()将输入端口号转换成大端字节序存储,本来就是大端的不变
inet_pton(AF_INET, SER_IP, &seraddr.sin_addr); // 将字符串表示的IP地址转换为用数值表示,并存储在seraddr.sin_addr中
cout << "connecting..." << endl;
if (connect(cli_socket, (const sockaddr*)&seraddr, sizeof (seraddr)) == -1) // connect()成功返回0, 出错返回-1
{
cout << "connect error!"<< endl;
close(cli_socket);
return 0;
}
cout << "connection successful!" << endl;
// // 测试
// char a[10] = "abcd";
// send(cli_socket, (const char*)a, sizeof(char)*4, 0);
return cli_socket; // 返回套接字描述符
}
3 截屏传输
3.1 初始化
注意