[原]从管道传送数据到ffmpeg进行视频编码

本文介绍如何在Windows环境下使用FFmpeg通过命名管道实现内存中的视频编码过程。具体步骤包括利用VC创建并连接命名管道,然后通过命令行调用FFmpeg进行视频编码。此方法避免了磁盘I/O操作,提高了效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在windows编译ffmpeg,一般的方法是mingw+msys,编译出来的是windows的可执行文件ffmpeg.exe。

阅读 ffmpeg 源码的时候,发现 ffmpeg 支持 pipe,也就是说,传递给ffmpeg.exe进程的输入文件参数和输出文件参数不需要是硬盘文件路径,整个过程可以直接在内存完整。

测试方法:

1、用VC调用CreateNamedPipe创建一个命名管道,注意开辟的空间要至少能容纳1帧数据。

2、调用ConnectNamedPipe连接命名管道,这时程序会被挂起,直到有进程连接这个命名管道。

3、打开命令行,到ffmpeg目录,输入命令行:ffmpeg -f rawvideo -pix_fmt rgb24 -s 320x240 -i \\.\pipe\MyPipe -f avi -s 320x240 C:\out.avi

4、这时VC进程被唤醒,ffmpeg进程挂起等待图像数据写入。VC进程调用WriteFile写图像数据到命名管道。(注意写入的数据格式,必须跟命令行传入的参数一致)

5、当命名管道被写入数据时,ffmpeg自动唤醒进行编码,编码完一帧后继续挂起等待下一帧数据,如此重复。


转自http://hi.baidu.com/lzj85/blog/item/2d562f44ea3c9146500ffe50.html

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值