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

Posted jartins

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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) => );

更多拓展(可以忽略)

文章转自 弹力笔记












complete!!

以上是关于Nodejs将h264/h265转码成mp4或某一帧图片的主要内容,如果未能解决你的问题,请参考以下文章

FFmpeg linux解包解码rtsp流编码h.264/h.265 mp4视频报错问题排查(没解决)

ffmpeg mp4box制作dash流

#yyds干货盘点# FFmpeg[5] - 将视频文件转码成MP4格式(FFmpeg转封装2)

python小工具------将H264/H265码流文件转为一帧一帧的JPEG文件

python小工具------将H264/H265码流文件转为一帧一帧的JPEG文件

前端视频流播放