• 探索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从入门到精通》刘岐,赵文杰编著

  • 相关阅读:
    判断表字段是否存在default约束
    在Eclipse mars 4.5.2 中安装spring 插件 spring tool suite
    MySql (mysql-5.6.37) 在Windows的安装及使用
    在CentOS7.2中搭建Tomcat9 并启用http/2 协议
    CentOS 7.2 中 Kafka,Zookeeper的单机部署,伪分布式部署以及真正的分布式部署
    博客歇菜后的总结
    通过WiFi连接手机(device), 出去数据线的烦恼
    Android Studio 使用三星 Note4 真机调试
    在Mac team 工作的那段日子里(一)
    又到年底了,没钱回家咋办?
  • 原文地址:https://www.cnblogs.com/noneplus/p/11661806.html
Copyright © 2020-2023  润新知