ffmpeg概述 及 examples/transcoding.c源码阅读

本文介绍了ffmpeg命令行工具,包括ffmpeg、ffplay和ffprobe的用途和源码对应文件。接着详细讲解了ffmpeg源码结构,重点分析了transcoding.c示例文件,涉及AVPacket、AVFrame等关键结构体,并阐述了open_input_file、open_output_file、init_filters等函数的功能。最后,探讨了流处理过程,尤其是过滤器在视频和音频流中的应用。
摘要由CSDN通过智能技术生成

1、ffmpeg命令行工具

图片

ffmpeg编译完后,主要包括三个工具,ffmpeg,ffplay,ffprobe

  • ffmpeg 非常强大的音视频转换工具,可以用来对音视频进行解码、滤波、叠加等操作,流程主要包括解码、滤波、编码三个步骤, 对应源码中的fftools/ffmpeg.c文件
  • ffplay 在mac或windows播放音视频, 对应源码中的fftools/ffplay.c文件
  • ffprobe ffprobe从多媒体流中收集信息,并以人类和机器可读的方式进行打印。即探测流音视频流的各种信息,比如编码情况、I帧、文件时长等。对应源码中的fftools/ffprobe.c文件

图片

例:

设置视频的比特率为64kbit/s

ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi

强制输出文件的帧率为24

ffmpeg -i input.avi -r 24 output.avi

将视频转码为 视频编码为x264,音频编码aac

ffmpeg -i x264_1080p_60fps.flv -c:v x264 -a:v aac -f flv x264_aac.flv

ffmpeg滤波器使用简介:https://www.jianshu.com/p/b16835da62ab
对于输入的多媒体格式如AVI、MP4等,可能会包含不同类型的多个流。FFmpeg能够识别5种类型的流:audio(a)、attachment(t)、data(d)、subtitle(s) 、video(v)。可以通过-map选项选择,在FFmpeg中表示如下:

file_number:stream_type[:stream_number]

其中 file_number和stream_number都是从0开始计数
PS: 媒体文件中的metadata包括一些额外的信息比如artist、author、date等

播放视频

ffplay [options] [input_url]

对于开发而言,主要关注的是ffmpeg
ffmpeg命令行用法以及相关参数可见官方文档

ffmpeg 官方文档https://ffmpeg.org/ffmpeg.html

filtershttps://ffmpeg.org/ffmpeg-filters.html

2、ffmpeg源码结构

https://github.com/FFmpeg/FFmpeg

图片

其中主要使用到的是libavcodec、libavformat、libavutil、libavfilter、libavdevice、libswresample、libswscale。

  • libavcodec 提供了很多编码器的实现
  • libavfor
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值