当前位置: 首页 > news >正文

临沂购买模板建站运动 网站专题怎么做

临沂购买模板建站,运动 网站专题怎么做,大学生兼职网网站建设计划书,网站导入页欣赏问题背景 问题背景是在,由于视频采集端使用的是H264编码采集的裸流,而网络流媒体大多是以FLV为主的直播方式进行的,为了实现实时直播,当前是打算直接使用FFmpeg将H264裸流实时转成FLV视频流。 为什么是使用FLV视频流呢&#xff0c…

问题背景

        问题背景是在,由于视频采集端使用的是H264编码采集的裸流,而网络流媒体大多是以FLV为主的直播方式进行的,为了实现实时直播,当前是打算直接使用FFmpeg将H264裸流实时转成FLV视频流。

        为什么是使用FLV视频流呢,因为相对简单,加上FLV Header后将每个NALU打包成Tag并进去大致就行了。但是这块怕有疏忽,最终还是想使用成熟的工具FFmpeg。

方法实现

1. 使用FFmpeg-go封装好的方法

FFmpeg-go

上面有具体的Demo,但是只有流转文件,也只有文件转流的方法,对于流转流还是需要自己动手处理一下。

import ffmpeg "github.com/u2takey/ffmpeg-go"err := ffmpeg.Input("pipe:", ffmpeg.KwArgs{"format":     "rawvideo","video_size": fmt.Sprintf("%dx%d", 480, 1064)}).WithInput(filein).Output("pipe:",ffmpeg.KwArgs{"c:v": "libx264", "f": "flv", "crf": "24"}).WithOutput(buf, errorbuf).Run()
if err != nil {panic(err)
}
bufs := make([]byte, 1024)
out, _ := os.OpenFile("res2.flv", os.O_CREATE|os.O_RDWR|os.O_APPEND, 0644)
for {n, err := buf.Read(bufs)if n == 0 || err == io.EOF {out.Close()break} else {//此处处理输出流,这边简单地写到文件里out.Write(bufs)}
}

其中

filein   是输入的H264视频裸流   buf是输出的视频流

虽说代码是这么写,但是实际上是run不起来的,不清楚具体是什么原因,因此后续还是打算直接调用ffmpeg可执行程序。

2. 直接调用FFmpeg

首先需要在电脑上下载好ffmpeg并且添加到环境变量,保证执行Powshell或者cmd指令的ffmpeg时能够正常运行,接下来还是直接上代码。

cmd := exec.Command("ffmpeg", "-re", "-r", "30", "-i", "pipe:0", "-vcodec", "libx264", "-f", "flv", "pipe:1", "-y", "another.flv")//获取输入流
stdin, err := cmd.StdinPipe()
if err != nil {fmt.Println("Error getting stdout pipe:", err)return
}//要写东西进去的时候只需要
stdin.Write(bytes) //获取输出流
stdout, err := cmd.StdoutPipe()
if err != nil {fmt.Println("Error getting stdout pipe:", err)return
}// Start the command
err = cmd.Start()
if err != nil {fmt.Println("Error starting command:", err)return
}

        这边需要注意到的点是,如果不加上"-re"的话,需要等stdin.close()之后,整个ffmpeg才会运行,才能见到有输出流。

        其次,这边加了 “-y” "another.flv",是用来进行对比的,这里ffmpeg将会把输出同时放在两个地方,一个写入到文件another.flv里(-y 是覆盖原有文件),另一个通过stdout传出来,我将stdout的数据流保存成out.flv后发现同another.flv对比发现并不相同。或许视频流和文件不应该这么处理。

总结

建议直接调用FFmpeg的可执行文件进行操作最好。

但是这样实时的流转流的方式实际上还是有挺大延迟的,如果要实时视频流P2P模式建议要么在采集端处理好要么在播放端处理好,中间层就不要过多操作影响实时性,如果是推流拉流的模式还是建议在中间层处理好。

存在问题

这边还是发现一些问题的,尤其是直接使用ffmpeg的时候

1. 直接读取文件和读取文件通过stdin传入byte获取到的结果是不一致的。

2. 直接output成文件和通过stdout获取byte再保存成文件得到的结果也是不一致的。

http://www.yayakq.cn/news/459632/

相关文章:

  • 集约化网站群建设简书wordpress
  • 长治做网站多少钱wordpress网站恢复
  • 如今做哪个网站能致富正阳县网站建设
  • 网站建设者html交流网站建设项目背景
  • 医院网站建设中标贵阳市住房和城乡建设部网站
  • 怎么注册网站网址乐清网站改版
  • 京东网站开发多少钱辽宁建设工程信息网投标制作软件
  • 网站运营包括哪些响应式全屏网站模板
  • 网站建设绩效目标百度问一问官网
  • 微信公众号的网站超链接怎么做网站建设维护是什么岗位
  • 网页设计与网站开发什么区别设计网站首页要几天
  • 经营地址怎么在国税网站做更改国家建设部门三类人员官方网站
  • 烟台做网站哪家做的好北京网站开发一般多少钱
  • 会网站开发 不会软件中山移动网站建设多少钱
  • 东莞 网站 建设 物流阿里建站官网
  • 江西省建设局网站求一个做健身餐的网站
  • 北京建网站的价格网站推广的软件
  • 事业单位网站方案网站建设 地址 昌乐
  • 网站作品网站建设鼎网络
  • 二建转注辽宁建设主管部门网站免费ppt模板下载大全完整版
  • 金华东阳网站建设网站主体证件
  • 免费的企业建站系统wordpress 相册
  • 蕲春做网站可以做结构式的网站
  • 医院网站建设论证报告建设美食网站的目的和功能定位
  • 大型网站开发像天猫类的定海网
  • 做物流的网站有哪些内容网站后台口令
  • 上海怎样建设网站爱站网反链分析
  • wordpress+登录404seo网站推广杭州
  • 公司做网站推广需要多少钱腾脉网建站
  • 网站建设专家有哪些wordpress 上传字体