FFmpeg如何提升—进阶版

1、FFmpeg 简介

FFmpeg 是一款免费的、开源的跨平台音视频处理工具,旨在提供高质量、高速度的多媒体处理功能,FFmpeg 设计以流式处理音视频。

FFmpeg 目前已成为业界公认的最强大、最全面的音视频处理工具之一,得到了广泛的应用。绝大多数的音视频相关应用和工具库,都直接或间接地引用了 FFmpeg。

FFmpeg 的开发始于2000年,最初由法国程序员 Fabrice Bellard 发起,后来有越来越多的开源贡献者参与。目前 FFmpeg 由一支由多名开发者组成的团队维护和开发。

2、ffmpeg 作者和团队

Fabrice Bellard 是一位法国著名的计算机程序员,因创立FFmpeg、QEMU等项目而闻名业内。

他的个人介绍网站是 bellard.org/。

其中列举了他创建的多个项目。他兴趣广泛,涉足多个不同的领域,可以称为一位真正的编程大师。

3、 基本命令

以下是 FFmpeg 的一些基本命令:

1.转码(Transcoding):将一个音视频文件从一种格式转换为另一种格式。例如,将一个 MP4 文件转换为 AVI 文件可以使用以下命令:

ffmpeg -i input.mp4 output.avi

在此命令中,“-i” 表示输入文件,“input.mp4” 是输入文件的名称,“output.avi” 是输出文件的名称。FFmpeg 会自动检测输入文件的格式,所以您不需要指定输入文件的格式。

2.裁剪(Trimming):截取一个音视频文件的一部分。例如,截取一个 MP4 文件的前 10 秒可以使用以下命令:

ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -c copy output.mp4

在此命令中,“-ss” 表示起始时间,“00:00:00” 是起始时间的时间戳,“-t” 表示持续时间,“00:00:10” 是持续时间的时间戳,“-c copy” 表示将剪切后的部分保存为新的文件而不重新编码。如果您需要对剪切的部分进行重新编码,可以使用以下命令:

ffmpeg -i input.mp4 -ss 00:00:00 -t 00:00:10 -c:v libx264 -c:a aac output.mp4

在此命令中,“-c:v libx264” 表示使用 H.264 编码器对视频进行编码,“-c:a aac” 表示使用 AAC 编码器对音频进行编码。

 【学习地址】: FFmpeg/WebRTC/RTMP/NDK/Android音视频流媒体高级开发
【文章福利】:免费领取更多音视频学习资料包、大厂面试题、技术视频和学习路线图,资料包括(C/C++,Linux,FFmpeg webRTC rtmp hls rtsp ffplay srs 等等)有需要的可以点击 1079654574加群领取哦~

3.转换尺寸(Resizing):调整音视频文件的尺寸。例如,将一个 MP4 文件的宽度调整为 640 像素可以使用以下命令:

ffmpeg -i input.mp4 -vf scale=640:-1 output.mp4

在此命令中,“-vf scale=640:-1” 表示使用 scale 滤镜对视频进行调整,“640” 是目标宽度,“-1” 表示根据目标宽度自动计算目标高度。

4.转换帧率(Frame rate conversion):调整音视频文件的帧率。例如将一个 MP4 文件的帧率调整为 30 帧可以使用以下命令:

ffmpeg -i input.mp4 -r 30 output.mp4

在此命令中,“-r 30” 表示将输出文件的帧率设置为 30 帧。

5.提取音频(Extracting audio):从一个视频文件中提取音频文件。例如,从一个 MP4 文件中提取音频可以使用以下命令:

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

在此命令中,“-vn” 表示不要输出视频,“-acodec copy” 表示将音频流复制到新文件中,而不重新编码。

6.添加水印(Adding watermark):将一个图片作为水印添加到视频中。例如,将一个 PNG 图片作为水印添加到一个 MP4 文件中可以使用以下命令:

ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" output.mp4

在此命令中,“-i watermark.png” 表示输入水印图片,“-filter_complex” 表示使用复杂滤镜,“overlay=10:10” 表示将水印放置在视频的左上角。

4、FFmpeg6.0进阶

4.1 FFmpeg过滤器

  1. FFmpeg过滤chain框架

  2. 音频过滤器框架

  3. 视频过滤器框架

  4. 多路音频混音amix

  5. 视频水印watermark

  6. 视频区域裁剪和翻转

  7. 视频添加logo

注: filter在视频剪辑领域应用广泛。

4.2 ffplay播放器

  1. 掌握ffplay.c的意义

  2. ffplay框架分析

  3. 解复用线程

  4. 音频解码线程

  5. 视频解码线程

  6. 声音输出回调

  7. 画面渲染时间间隔

  8. 音频重采样

  9. 画面尺寸格式变换

  10. 音频、视频、外部时钟同步区别

  11. 以视频为基准时音频重采样补偿

  12. 音量静音、调节大小的本质

  13. 音视频packet队列大小限制

  14. 音视频packet队列线程安全

  15. 音视频frame队列大小限制

  16. 音视频frame队列线程安全

  17. 暂停、播放实现机制

  18. seek播放导致的画面卡住问题

  19. seek播放数据队列、同步时钟处理

  20. 如何做到逐帧播放

  21. 播放器退出的流程要点

注: ffplay.c是ffplay命令的源码,掌握ffplay 对于我们自己开发播放器有事半功倍的效果。

5、 总结

FFmpeg 是一个功能强大的音视频处理工具,可以处理各种不同格式的音视频文件,是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。

猜你喜欢

转载自blog.csdn.net/irainsa/article/details/130693083