Nodejs将h264/h265转码成mp4或某一帧图片

Nodejs将h264/h265转码成mp4或某一帧图片

前置知识

  • 认识FFmpeg

    1. FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。有非常强大的功能包括视频采集功能、视频格式转换、视频抓图、给视频加水印等。
    2. 官网
    3. 相关指令集学习
  • 安装ffmpeg

    1. Linux
      yum install -y ffmpeg
      
    2. Mac
  • 指令范例

    1. 将h264转换为mp4
      ffmpeg -i test.h264 -c:v libx264 -strict -2 test.mp4
      
    2. 将mp4按指定帧率切割成图片
      ffmpeg -i test.mp4 -r 指定帧率 -f image2 test/image-%03d.jpg
      
    3. 对于24帧每秒的视频 128帧是第5秒的第四帧
      ffmpeg -i test.h264 -threads 1 -ss 00:00:05.167 -f image2 -r 1 -t 1 -s 256*256 test-%2d.jpg
      
    4. 要在1秒到20秒允许一个blur(模糊)滤镜(smartblur),然后curves滤镜在3秒之后
      ffplay -i good_scale.mp4 -vf "smartblur=enable='between(t,1,20)',curves=enable='gte(t,3)':preset=cross_process"
      
    5. 将h462的第一帧保存为图片
      ffmpeg -i test.h264 -vf "select=between(n\,0\,1)" -y test-%2d.jpg
      

技术栈

  • NodejsExpressFFmpeg

实现方案

使用shell功能执行ffmpeg指令
转码并保存
资源路径返回
资源路径返回 浏览器直接访问静态文件资源
浏览器
Node服务
Nodejs-shell
FFmpeg
静态图片/视频资源

核心代码(这一步就是使用nodeshell执行ffmpeg指令,后续自己按照业务去扩展)

const shell = require('shelljs');
// 执行ffmpeg
shell.exec(`ffmpeg -i topic.h264 -vf "select='between(n,0,1)'" -y -acodec copy topic.jpg`, (error, stdout, stderr) => {});

更多拓展(可以忽略)

  • 使用JavaScript播放H264视频 地址







文章转自 https://elasticnotes.com/node/h264/

complete!!





  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值