python+ffmpeg代码实现实时h264视频tcp传输
时间: 2023-08-10 13:05:21 浏览: 805
以下是一个基于Python和FFmpeg的实时H264视频TCP传输的示例代码,你可以根据自己的需求进行修改:
```python
import socket
import subprocess
# 视频来源,这里使用摄像头
input_video = "/dev/video0"
# FFmpeg命令行参数
ffmpeg_cmd = [
"ffmpeg",
"-re", # 实时推送
"-f", "v4l2", # 视频来源为摄像头
"-i", input_video,
"-c:v", "h264", # 编码为H264
"-f", "mpegts", # 输出为MPEG-TS格式
"-" # 输出到标准输出
]
# 建立TCP连接
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.connect(('127.0.0.1', 12345))
# 启动FFmpeg进程
ffmpeg_proc = subprocess.Popen(
ffmpeg_cmd,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
# 不断读取FFmpeg输出并发送给TCP客户端
while True:
data = ffmpeg_proc.stdout.read(1024)
if not data:
break
sock.sendall(data)
# 关闭TCP连接和FFmpeg进程
sock.close()
ffmpeg_proc.terminate()
```
这段代码使用了Python的socket库和subprocess库,通过调用FFmpeg命令行将摄像头采集的实时视频编码为H264格式,并以MPEG-TS格式输出到标准输出,然后不断读取标准输出并发送给TCP客户端。你需要根据实际情况修改IP地址和端口号,并确保客户端能够正确解码接收到的视频数据。
阅读全文