linux怎么编程视频传输

时间:2025-01-23 11:49:34 游戏攻略

在Linux中实现视频传输,可以使用FFmpeg库或者直接进行Socket编程。以下是两种方法的详细步骤:

方法一:使用FFmpeg

FFmpeg是一个强大的多媒体处理工具,可以用于视频传输。以下是一个简单的示例,展示如何使用FFmpeg通过UDP协议进行实时视频传输。

发送端(第一台电脑)

```bash

ffmpeg -f avfoundation -i "0:0" -f mpegts udp://192.168.1.2:1234

```

接收端(第二台电脑)

```bash

ffmpeg -i udp://0.0.0.0:1234 -c copy out.mp4

```

方法二:使用Socket编程

服务器端(发送端)

```c

include

include

include

include

include

include

include

define BUFFER_SIZE 640 * 480 * 3 / 32

int main() {

int sockfd, client_sockfd;

struct sockaddr_in server_addr, client_addr;

char buffer[BUFFER_SIZE];

int client_addr_len = sizeof(client_addr);

// 创建UDP套接字

sockfd = socket(AF_INET, SOCK_DGRAM, IPPROTO_UDP);

if (sockfd < 0) {

perror("socket");

exit(1);

}

// 配置服务器地址

memset(&server_addr, 0, sizeof(server_addr));

server_addr.sin_family = AF_INET;

server_addr.sin_addr.s_addr = htonl(INADDR_ANY);

server_addr.sin_port = htons(1234);

// 绑定套接字

if (bind(sockfd, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) {

perror("bind");

exit(1);

}

while (1) {

// 接收数据

ssize_t len = recvfrom(sockfd, buffer, BUFFER_SIZE, 0, (struct sockaddr *)&client_addr, &client_addr_len);

if (len < 0) {

perror("recvfrom");

continue;

}

// 将接收到的数据写入文件

FILE *file = fopen("out.mp4", "ab");

if (file == NULL) {

perror("fopen");

continue;

}

fwrite(buffer, 1, len, file);

fclose(file);

}

close(sockfd);

return 0;

}

```

客户端(接收端)