音视频编码实战-------pcm+yuv数据转成MP4

这篇具有很好参考价值的文章主要介绍了音视频编码实战-------pcm+yuv数据转成MP4。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.编码流程图

音视频编码实战-------pcm+yuv数据转成MP4,音视频开发,音视频
音视频编码实战-------pcm+yuv数据转成MP4,音视频开发,音视频

2.相关模块及函数

2.1 编码器相关API

avcodec_find_encoder: 根据编码器ID查找编码器
avcodec_alloc_context3:创建编码器上下文
avcodec_open2:打开编码器

2.2 复用器相关API

avformat_alloc_output_context2:为输出格式创建复用器上下文
avformat_new_stream:创建音视频流
avcodec_parameters_from_context:将编码器上下文中的参数拷贝到音视频流中的编码器参数中AVCodecParameters
avio_open:正式打开输出文件
avformat_write_header:写入头部信息
av_interleaved_write_frame(),对编码后的 AVPacket 进行封装,然后写入文
av_write_trailer:写入视频结尾信息

2.3 重采样相关API

swr_alloc_set_opts:设置重采样配置参数,并且分配重采样器上下文
swr_init:让重采样相关配置生效
swr_convert:对视频帧进行转换
swr_free:释放重采样器上下文

注意点

av_packet_alloc得到的数据必须要设置stream_index,不然stream_index都默认为0了

packet的pts,dts,duration时间基都要转换为对应所在stream的time_base

编码器上下文的flags要设置一下AV_CODEC_FLAG_GLOBAL_HEADER这个参数,不然的话很多视频播放器是播放不了的,尤其是视频流
这个参数是将全局头部信息(SPS,PPS)放在extradata指针中,而不是每一个关键帧中

简单的编码流程相关代码

码云仓库链接
文章来源地址https://www.toymoban.com/news/detail-554193.html

到了这里,关于音视频编码实战-------pcm+yuv数据转成MP4的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【秒懂音视频开发】15_AAC编码实战

    本文将分别通过命令行、编程2种方式进行AAC编码实战,使用的编码库是libfdk_aac。 fdk-aac对输入的PCM数据是有参数要求的,如果参数不对,就会出现以下错误: 采样格式 必须是16位整数PCM。 采样率 支持的采样率有(Hz): 8000、11025、12000、16000、22050、24000、32000 44100、48000、

    2024年02月03日
    浏览(71)
  • 【音视频|PCM】PCM格式详解

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍数字音频的PCM格式🍭 😎金句分享😎:🍭子曰:君子不器。 ——《论语·为政篇》。意思是,君子不应像器具那样,只有一种用

    2024年02月08日
    浏览(28)
  • Qt/C++音视频开发69-保存监控pcm音频数据到mp4文件/监控录像/录像存储和回放/264/265/aac/pcm等

    用ffmpeg做音视频保存到mp4文件,都会遇到一个问题,尤其是在视频监控行业,就是监控摄像头设置的音频是PCM/G711A/G711U,解码后对应的格式是pcm_s16be/pcm_alaw/pcm_mulaw,将这个原始的音频流保存到mp4文件是会报错的,在调用avformat_write_header写文件头的时候提示(-22) Invalid argument,

    2024年04月11日
    浏览(38)
  • 【图像处理】音视频色彩:RGB/YUV

    目录 1.RGB  1.1介绍        1.2分类 1.2.1RGB16 1)RGB565 2)RGB555 1.2.2RGB24 1.2.3RGB222 /

    2024年02月20日
    浏览(37)
  • 【音视频原理】图像相关概念 ⑦ ( YUV 跨距 Stride 对齐 | YUV 跨距 概念 | YUV 跨距对齐 概念 | YUV 跨距 Stride 对齐示例 )

    Stride 跨距 , 指的是 在 内存中 每行像素 占用的空间 , 由于 系统 对 图像有 跨距对齐 的要求 , 这个 Stride 跨距 可能 大于等于 实际的 图像像素 所占用的 宽度 ; 分辨率为 638 x 480 的 RGB24 格式的图片 , 内存处理时 以 16 字节对齐 ; RGB24 格式中 R ( 红 ) / G ( 绿 ) / B ( 蓝 ) 每个分量占

    2024年02月19日
    浏览(37)
  • 安卓音视频开发(3)—— AudioTrack两种方式播放pcm音频

    前言 之前学习了AudioRecord录制pcm音频,与之对应的就是AudioTrack播放pcm音频(MediaPlayer、SoundPool有其他应用场景),它有两种数据加载模式(MODE_STATIC、MODE_STREAM)。 模式 MODE_STATIC :这种模式下,一次将所有的数据放入一个固定的buffer,然后写入到AudioTrack中,后续就不用继续

    2023年04月22日
    浏览(38)
  • 将抖音视频转成MP3并下载

    这篇是在上一篇的基础上写的,这篇负责抖音作者详情页的视频转声音提取,这篇需要用到后端。 本地启动后端后,在控制台输入对应代码,即可实现hover在封面上,按d一键下载音频 控制台代码 后端 node 代码 如果不想用控制台,也可以用暴力猴,暴力猴脚本如下:

    2024年01月23日
    浏览(98)
  • GB28181设备接入侧如何对接外部编码后音视频数据并实现预览播放

     技术背景 我们在对接GB28181设备接入模块的时候,遇到这样的技术诉求,好多开发者期望能提供编码后(H.264/H.265、AAC/PCMA)数据对接,确保外部采集设备,比如无人机类似回调过来的数据,直接通过模块,对接到GB28181平台侧,此外,还期望不支持或者内网没有外部网络权限

    2024年02月12日
    浏览(32)
  • 【FFmpeg】ffmpeg 命令行参数 ⑤ ( 使用 ffmpeg 命令提取 音视频 数据 | 保留封装格式 | 保留编码格式 | 重新编码 )

    使用 ffmpeg 命令 从 视频数据 中 提取 音频数据 / 视频数据 保留封装格式 , 封装格式 指的就是 封装 视频数据 的 容器 ; 一个 mp4 格式的视频 , 其 封装容器 就是 mp4 容器 , 其中 封装了 h.264 格式的视频数据 和 aac 格式的 音频数据 ; 执行 命令 , 从 input.mp4 输入文件中 , 提取 音频

    2024年03月23日
    浏览(42)
  • 【音视频 | wav】wav音频文件格式详解——包含RIFF规范、完整的各个块解析、PCM转wav代码

    😁博客主页😁:🚀https://blog.csdn.net/wkd_007🚀 🤑博客内容🤑:🍭嵌入式开发、Linux、C语言、C++、数据结构、音视频🍭 🤣本文内容🤣:🍭介绍wav音频格式🍭 😎金句分享😎:🍭子曰:父母在,不远游,游必有方。 ——《论语·里仁篇》。意思是,父母还健在时,就不要

    2024年02月06日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包