ffmpeg转码h264程序的二次开发思路

    在ffmpeg的官网下载的dev目录中,有一个转码器的程序,具体目录为\ffmpeg-3.2.2-win32-dev\doc\examples\transcoding.c,稍微修改,即可在visual studio中编译运行,可参考我的资源,ffmpeg官网转码vs可编译

    依赖的库: avcodec.lib avdevice.lib avfilter.lib avformat.lib avutil.lib postproc.lib swresample.lib swscale.lib

    头文件目录: ~\ffmpeg-3.2.2-win32-dev\include

    参数格式:in.h264 out.h264默认输入尺寸随意,输出转码为720x480大小。


在源码中,输入部分接口为:

   

 avformat_open_input(&ifmt_ctx, filename, NULL, NULL))    

    其中filename可以为命名管道的形式,即avformat_open_input(&ifmt_ctx, "\\\\.\\pipe\\MyNamedPipe", NULL, NULL)),这样即可进行ffmpeg多进程之间h264的码流通信。

    比如,ffmpeg接受网络流,通常用sdp作为输入,而sdp对于接受缓冲,延迟,抖动的设置均不灵活。而采用命名管道的方式,可以独立写一个接受网络h264流的程序,通过WriteFile调用命名管道的写如完成h264的码流通信。

    进程间通信也可以采用共享内存的方式,不过共享内存需要注意进程间的h264帧队列的同步,而实测效果对于1080P,60帧的码流,性能相当。

在linux下,pipebuf为4k,pipe为16条,所以pipesize最大为16*4k即65536个bytes,按帧传输h264码流,有一定风险,尚不明确如何像windows那样,指定pipe的缓存大小。

   

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值