在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; } ``` 客户端(接收端)