ffmpeg将mjpeg流转mp4

前言

​ 最近项目中有个需求,就是将usb摄像头的mjpeg流转为mp4视频格式,记录一下过程中用到的一些命令,ffmpeg的基础使用命令请自行学习,本文不在赘述

命令
  1. 将多张图片转为mp4格式

    1
    2
    3
    #-i 标识从哪里输入 -c:v copy264格式的流,8线程 b:600k码率(码率越高,视频越大) 输出mp4格式
    #图片命名格式image0001.jpg,image0002.jpg,可自行更改
    ffmpeg -i image%04d.jpg -c:v libx264 -threads 8 -b 600k -preset veryslow -crf 25 out.mp4
  2. 将mjpeg流转为flv格式的视频

    1
    2
    #可直接输入usb的视频地址
    ffmpeg -f mjpeg -i http://192.168.1.1:8080/?action=stream -f flv -vcodec flv -q 10 D:/input.flv
  3. 将mp4格式转为ts

    1
    ffmpeg -i o1.mp4 -vcodec copy -acodec copy -vbsf h264_mp4toannexb o1.ts
  4. 将多个ts文件合并为mp4

    1
    2
    3
    4
    5
    6
    7
    #1、如果这种方式不奏效,请使用第二种方式
    ffmpeg -i "concat:o1.ts|o2.ts" -acodec copy -vcodec copy -absf aac_adtstoasc merge.mp4

    #2、将要合并的视频名称放入文件中,如list.txt内容如下,一行一条,文件名必须是单引号括起来
    # file 'NTR1.mp4'
    # file 'NTR2.mp4'
    ffmpeg -f concat -safe 0 -i filelist.txt -c copy output.mp4 #将文件中的视频合并成一个
  5. 将帧率拉长(类似快进)

    1
    2
    #2.7类似快进一倍
    ffmpeg -i 2.mp4 -filter:v "setpts=2.7*PTS" -pix_fmt yuv420p 2_1.mp4