zoukankan      html  css  js  c++  java
  • ffmpeg实现视频文件合并/截取预览视频/抽取音频/crop(裁剪)(ffmpeg4.2.2)

    一,ffmpeg的安装

    请参见:

    https://www.cnblogs.com/architectforest/p/12807683.html

    说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

             对应的源码可以访问这里获取: https://github.com/liuhongdi/

    说明:作者:刘宏缔 邮箱: 371125307@qq.com

    二,ffmpeg的使用例子: 音频/视频的提取/合并

    1,提取去除音频的视频流(静音视频)

    #-an :disable audio:关闭音频流

    #-vcodec:指定视频解码器:值为copy时,复制视频流

    [root@blog 1]# ffmpeg -v quiet -i 8_9f6fa300bacded7b.mp4 -y -vcodec copy -an /data/dev/think_file/html/8_mute.mp4

    2,提取音频

    #-vn: disable video ,关闭视频流

    #-acodec:指定音频解码器:值为copy时,复制音频流

    [root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -y -vn -acodec copy /data/dev/think_file/html/8.m4a

    说明:注意格式:从mp4中直接提取mp3格式可能会报错,

    提取成m4a格式没有问题

    3,把音频文件和静音的视频文件合并成一个正常的视频文件

    #-c codec :指定codec name

    #如果值是copy,表示拷贝所有的流

    [root@blog 1]# ffmpeg -i 8_9f6fa300bacded7b.mp4 -i /data/dev/think_file/html/8.m4a -c copy /data/dev/think_file/html/8_m.mp4

    三,ffmpeg的使用例子:合并两个视频文件

    1,合并多个视频文件

    查看两个文件的宽/高/长度

    6_1351031b24838211.mp4的时长

    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 6_1351031b24838211.mp4
    120.086633

    6_1351031b24838211.mp4的宽度

    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 6_1351031b24838211.mp4
    640

    6_1351031b24838211.mp4的高度

    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 6_1351031b24838211.mp4
    360
    5_d3958808f0a5da07.mp4的高度
    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=height 5_d3958808f0a5da07.mp4
    360
    5_d3958808f0a5da07.mp4的宽度
    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=width 5_d3958808f0a5da07.mp4
    640
    5_d3958808f0a5da07.mp4的时长
    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration 5_d3958808f0a5da07.mp4
    215.281733

    合并:

    生成视频列表文件

    [root@blog 1]# more con653.txt

    内容

    file '6_1351031b24838211.mp4'
    file '5_d3958808f0a5da07.mp4'

    连接两段视频

    [root@blog 1]# ffmpeg -f concat -i con653.txt -c copy /data/dev/think_file/html/653.mp4  

    查看新生成视频的时长:

    [root@blog 1]# ffprobe -v error -select_streams v -of default=noprint_wrappers=1:nokey=1 -show_entries stream=duration /data/dev/think_file/html/653.mp4
    
    335.409733

    注意:合并之前,要保持两个视频文件的宽高相同,不同width height会报错

    四,ffmpeg的使用例子:截取视频片断作为预览视频

    查看原视频文件的大小:

    [root@blog 1]# ll -h 8_9f6fa300bacded7b.mp4
    -rw-r--r-- 1 nginx nginx 7.4M Mar 29 03:47 8_9f6fa300bacded7b.mp4

    #-ss:开始时间

    #-t:持续的秒数

    #-c:a copy:copy视频

    #-s:指定画面的宽高

    [root@blog 1]# ffmpeg -ss 00:00:30 -t 20 -i 8_9f6fa300bacded7b.mp4 -c:a copy -s 320x180 /data/dev/think_file/html/8_pre2.mp4

    查看预览视频文件的大小:

    [root@blog 1]# ll -h /data/dev/think_file/html/8_pre2.mp4
    -rw-r--r-- 1 root root 1.3M May  1 17:50 /data/dev/think_file/html/8_pre2.mp4

    五,ffmpeg使用例子:crop裁剪视频:

    看一个例子:我们裁剪掉视频两侧的黑边

    原视频的截图:

    #crop=w=100:h=100:x=12:y=34

    w:指定宽度

    h:指定高度

    x:指定左侧的pos

    y:指定顶部的pos

    [root@blog html]# ffmpeg -i 8_rpi2.mp4 -vf crop=360:360:140:0 -c:a copy 360.mp4

    查看生成的截图:

     

    六,查看ffmpeg的版本

    [root@blog html]# ffmpeg -version
    ffmpeg version 4.2.2 Copyright (c) 2000-2019 the FFmpeg developers
    built with gcc 8 (GCC)

    七,查看centos的版本

    [root@blog html]# cat /etc/redhat-release
    CentOS Linux release 8.0.1905 (Core)
  • 相关阅读:
    线程池3种终止方式比较
    SQL Update多表联合更新的方法
    SQL SERVER 表添加新字段
    JSONObject
    char码值对应列表大全
    JSONOjbect,对各种属性的处理
    Spring MVC ajax提交方式
    docker 初学者 安装 命令
    VMware虚拟机安装CentOS7 设置Nat网络 (超详细)
    关于 i++ 和 ++ i
  • 原文地址:https://www.cnblogs.com/architectforest/p/12820962.html
Copyright © 2011-2022 走看看