注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

utopia

memories of life

 
 
 

日志

 
 
关于我

目前在网易杭研院存储平台组做视频相关的工作。

管道pipe概述以及在视频转码中的使用  

2014-03-12 17:35:50|  分类: 音视频知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |
管道是一种特殊的文件。有以下特点:
1、不落地。即不像传统文件一样会刷到磁盘中。
2、会阻塞。管道对应内存中的的一块缓冲区,可以有一个读进程和一个写进程分别进行读写操作。当二者速度不匹配就会导致一方等待从而造成阻塞。
3、使用方便。可以直接通过标准输入输出对其进行访问。还可以直接在shell命令对其进行访问。
4、读写较快。读写都是直接对内存进行操作。


结构
管道pipe概述以及在视频转码中的使用 - wuyingxingzyd - utopia
 


读进程和写进程通过引用同一个inode来对同一个文件进行操作。单位为页。在linux系统中,页的大小通常以4k为大小。
读写都是直接调用VFS的fs_read和fs_write接口来进行。
当满足一下两个条件就可以进行读操作:
1、内存中有足够空间。
2、有读锁。

简单应用
cat test.txt - > test.pipe < /dev/null & cat test.pipe

管道pipe概述以及在视频转码中的使用 - wuyingxingzyd - utopia
 

cat test.sh -> test.pipe </dev/null & awk '{print $0}' test.pipe

在视频转码中的使用。
#将原始码流提取出来,并编码成h264的视频流。
mkfifo test.v & ffmpeg -i test.ts -f yuv4mpegpipe - > test.v < /dev/null & ffmpeg -f yuv4mpegpipe -c:v libx264  test.mp4

由于原始码流非常大,一分钟的1920x1080的视频会有2.5G大小之多,直接落地会有很大的开销。



  评论这张
 
阅读(79)| 评论(0)

历史上的今天

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018