zoukankan      html  css  js  c++  java
  • 探索FFmpeg

    Part1 :FFmpeg简介

    FFmpeg定义

    FFmpeg是一款音视频编解码工具,为开发者提供了大量音视频处理接口。

    FF指的是“Fast Forward”

    FFmpeg历史

    2000年,法国天才Fabrice Bellard开发出第一代版本

    2004年,Michael Nidermayer接手

    2011年,FFmpeg其中的提交者对项目管理不满意,自立门户,创建了Libav

    2015年,Michael Nidermayer移植了大量的代码到FFmpeg中,并辞职,希望两个项目可以共同发展,若能合并则更好

    GitHub地址:https://github.com/FFmpeg/FFmpeg

    FFmpeg组成

    • AVFormat:实现了大多数媒体的封装格式,包括MP4,FLV等文件封装格式,RTMP,RTSP等网络协议封装格式。
    • AVCodec:实现了大多数媒体的编解码格式,支持MPEG4,AAC,H.264(AVC),H.265(HEVC),MP3
    • AVFilter:一个通用的音视频,字幕等滤镜处理框架
    • swscale视频图像转换计算模块:1080p转换为720或者480,或者将图像数据从YUV420p转换成YUYV.
    • swresample音频计算转换模块:操作音频采样,音频通道布局转换,布局调整。

    FFmpeg编解码工具ffmpeg

    ffmpeg是FFmpeg源代码编译后生成的可执行程序,可以作为命令行使用。

    ffmpeg主要工作流程:

    • 读取数据源
    • 进行音视频的解封装
    • 解码每一帧音视频数据
    • 编码每一帧音视频数据
    • 对音视频数据重新封装
    • 输出到目标

    FFmpeg多媒体分析器ffprobe

    包含音频,视频参数,媒体容器的参数信息。

    FFmpeg编译

    • windows平台编译

      下载软件包

      https://ffmpeg.zeranoe.com/builds/

      解压后配置环境变量

      C:Users oneplusDesktopffmpeg-20191001-c4de49e-win64-staticin

      打开命令行

      ffmpeg
      

    Part2:常用命令

    ffmpeg命令

    命令格式

    ffmpeg 
        [global_options] 
        [input_file_options] -i input_url 
        [actions] 
        [output_file_options] output_url
    

    参数说明

    -y   表示直接覆盖已经存在的输出文件
    -n   表示若某个输出文件已经存在则退出
    

    视频截取

    ffmpeg -ss 00:00:20 -t 00:00:10 -i test.mp4 noneplus.mp4
    

    -ss表示开始切割的时间,-t表示要切多少。上面就从20秒开始,切10秒钟出来。

    视频格式转换

    ffmpeg -i noneplus.mp4 noneplus.avi
    

    提取音频流

    ffmpeg -i output.mp4 -acodec copy -vn output.aac
    

    -acodec表示音频编码,copy表示不改变编解码器,只是改封装器

    -vn 不将视频流写到输出文件中

    提取视频流

    ffmpeg -i noneplus.mp4 -vcodec copy -an noneplus.mp4
    

    -an 不将音频流写到输出文件中

    添加音频

    ffmpeg -i bgm.mp3 -i test.mp4 output.mp4
    

    参数

    参数名 作用
    -i filename 输入文件
    ffmpeg -i test1.mp4 test2.avi
    
    

    转换格式mp4为avi。

    参考书籍:

    《FFmpeg从入门到精通》刘岐,赵文杰编著

  • 相关阅读:
    MFC tab页面中获到其它页面的数据
    sqlite数据库中"Select * From XXX能查到数据,但是Select DISTINCT group From xxx Order By group却查不出来
    关闭程序出现崩溃(exe 已触发了一个断点及未加载ucrtbased.pdb)
    springboot 通用Mapper使用
    springBoot 发布war包
    springCloud Zuul网关
    springboot hystrix turbine 聚合监控
    springBoot Feign Hystrix Dashboard
    springBoot Ribbon Hystrix Dashboard
    springBoot Feign Hystrix
  • 原文地址:https://www.cnblogs.com/noneplus/p/11661806.html
Copyright © 2011-2022 走看看