
ffmpeg
文章平均质量分 78
ffmpeg命令行使用或者API使用
码农小明
OpenHarmony多媒体领域开发者。
展开
-
FFmpeg生成静音音频和黑屏视频命令
开发中有时需要生成静音音频或者纯色黑屏视频为便于测试或其他特殊应用场景,可以使用FFmpeg命令-f lavfi来搞定。生成静音音频可以使用anullsrc或者aevalsrc来生成静音音频,aevalsrc还可以生成其他类型声音。以下命令生成10s特定采样率和声道的静音音频,可以指定编码器进行编码。anullsrcffmpeg -f lavfi -i anullsrc -t 10 silent-audio.mp3# orffplay -f lavfi -i anullsrc=r=44100:原创 2022-01-06 17:13:35 · 10766 阅读 · 1 评论 -
FFmpeg HDR视频转SDR视频命令
之前蓝光盘电影多是AVC 1080p 8bit SDR格式视频,近两年4K电影流行,下载的蓝光电影多是HEVC 2160p 10bit HDR视频格式。ffprobe查看有如下属性:# 10bit HDRStream #0:0(eng): Video: hevc (Main 10), yuv420p10le(tv, bt2020nc/bt2020/smpte2084), 3840x2160 [SAR 1:1 DAR 16:9], 23.98 fps, 23.98 tbr, 1k tbn, 23.98原创 2021-12-22 23:08:37 · 11973 阅读 · 8 评论 -
FFmpeg 视频旋转处理命令
因为某种原因发现这个特别好玩,总结一下,为了演示效果还特意做了个字母小视频,眼快闪瞎了。原创 2021-12-17 22:43:53 · 15989 阅读 · 3 评论 -
AAC ADTS 媒体流格式分析 及 FFmpeg解析mp4的aac码流方法
和其他编码格式一样,AAC只是数据编码格式,码流组织格式有ADIF(Audio Data Interchange Format) 和 ADTS (Audio Data Transport Stream)。ADIF 与 ADTS的显著区别就是前者的编码信息存在一个固定的地方,后者的编码信息是每一个包中都有。所以ADIF主要用于磁盘存储文件,ADTS主要用于渐进式传输的网络流,本文主要分析ADTS流。ADTS 流格式ADTS流格式为ADTS头部加AAC裸数据。[ADTS Header](AAC ES d原创 2021-12-04 14:25:33 · 2778 阅读 · 0 评论 -
H.264媒体流AnnexB和AVCC格式分析 及 FFmpeg解析mp4的H.264码流方法
H264码流分两种组织方式,一种是AnnexB格式,一种是AVCC格式。首先要了解的是H.264编码规范只是规定了如何编码,并没有规定以何种方式来排列编码后的数据。就如同AES算法只是规定如何加密一组数据,并没有强制规定如果分组。H.264规范没有规定如何组织数据,但是在附录B中提供了一种可选方案,即Annex B格式。H.264 NALU 概念H.264视频编码后的数据叫NALU(Network Abstraction Layer Units)。NALU有多种类型,分为两大类:VCL(Vide.原创 2021-11-25 22:19:22 · 7005 阅读 · 0 评论 -
Linux编译FFmpeg libx264 libx265 libfdk-aac libmp3lame libvpx libopus等
有些Linux发行版可以在线安装ffmpeg,但是因为版权关系不能包含我们所需的编码器,有时候还是需要手动编译。下面介绍一些常见编码器的安装。libx264、libx265、libfdk-aac、libmp3lame、libvpx libopus。不需要的可以不安装,最终ffmpeg configure不指定特定的编码器就可以了。不想自己编译的可以直接下载我编译好的,GNU C Library (GNU libc) 版本大于等于2.17的系统都可以使用。常见的CentOS 7和Ubuntu16.04以上原创 2021-08-12 14:28:21 · 3271 阅读 · 1 评论 -
使用FFmpeg进行屏幕录像和录音
有些时候我们需要对屏幕进行录制,比如制作视频教程,录制直播等。然而这方面的软件多是收费的,即使是免费试用版的还有水印,特别烦人。下面介绍使用FFmpeg进行屏幕录制的方法。Windows先安装dshow软件 Screen Capturer Recorder, 项目地址:https://sourceforge.net/projects/screencapturer/files/ 。然后查...原创 2018-07-16 17:01:10 · 44817 阅读 · 33 评论 -
RTP协议介绍以及C语言实现具有发送H.264视频功能的RTP服务器
RTP封装H.264视频规范以及C语言实现以前上学时间做嵌入式开发板Hi3516A的流媒体项目,现在又突然想起来,不想学过就忘了浪费了,所以又自己实现了一遍读取本地视频文件发送RTP视频流的程序,算是总结一下。网上关于RTP的介绍实在是太多,但是多数都是抄来抄去没有系统性,还是贴上代码更容易理解。 RTP封装H.264码流规范本文简单说明RTP结构和实现,详细说明请参考标准文档RT...原创 2018-05-19 15:04:40 · 10064 阅读 · 39 评论 -
【FFmpeg 3.x API应用四】音频编码
摘要这篇文章介绍音频编码,示例程序是读取上一节生成的PCM格式的音频文件,对其进行编码输出。初始化这个必备的操作就不多说了。void AudioEncoding::init(){ avcodec_register_all();}配置编解码器CodecContext查找编码器。在视频编码那一节我们使用avcodec_find_encoder_by_n...原创 2018-02-13 16:58:16 · 852 阅读 · 1 评论 -
【FFmpeg 3.x API应用三】音频解码
摘要这篇文章介绍音频解码,示例程序是读取一个mp3格式或者aac格式的音频文件,解码输出为未压缩的pcm音频文件。初始化FFmepg和FormatContext和视频解码一样,先使用av_register_all注册所有相关组件,然后使用avformat_open_input打开指定的媒体文件,并使用avformat_find_stream_info获取媒体流相关信息,把这些格式信...原创 2018-02-13 15:46:53 · 825 阅读 · 0 评论 -
【FFmpeg 3.x API应用二】视频编码
摘要这篇文章介绍使用FFmpeg实现视频解码,具体操作为读取上一节视频解码所生成的YUV420p格式视频文件,对其进行H.264格式视频编码,并将编码后的数据保存为H.264裸流文件Sample.h264。初始化FFmpeg所有操作之前必须先注册FFmpeg组件实现全局初始化。 void VideoEncoding::init(){ avcodec_regis...原创 2018-02-12 15:25:06 · 630 阅读 · 0 评论 -
【FFmpeg 3.x API应用一】视频解码
摘要这篇文章介绍怎么实现视频解码,具体步骤为读取Sample.mkv视频文件,从中提取视频流,然后解码为YUV图像数据,把YUV数据存储为PGM灰度图像,或者存储为YUV420p RAW格式视频。初始化FFmepg和FormatContext使用FFmpeg API第一个操作就是执行初始化函数:av_register_all注册所有相关组件,然后使用avformat_open_in...原创 2018-02-12 14:07:04 · 714 阅读 · 0 评论 -
【FFmpeg 3.x API应用〇】基于VS2017的FFmpeg开发环境的搭建
准备工作在Windows平台上最强大的IDE非Visual Studio莫属了,虽然本人也非常喜欢并经常用Clion写一些小程序,鉴于VS的通用性还是选择使用VS来学习FFmpeg开发,可以使用免费的VS2017 Comminity社区版。 然后要下载FFmpeg Windows平台的开发工具,可以点这里下载 Dev版本。 把下载下来的incldue和lib目录放到VS工程目录下。开发...原创 2018-02-12 16:13:55 · 999 阅读 · 0 评论 -
【FFmpeg杂记】音频解码输出PCM格式数据分析
FFmpeg音频解码后输出的为PCM数据,PCM中的声音数据没有被压缩。 FFmpeg中音视频数据基本上都有Packed和Planar两种存储方式,对于双声道音频来说,Packed方式为两个声道的数据交错存储,交织在一起;Planar方式为两个声道分开存储,也就是平铺分开。原创 2017-08-02 10:25:04 · 7160 阅读 · 0 评论