惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

D
Docker
博客园 - 【当耐特】
S
SegmentFault 最新的问题
阮一峰的网络日志
阮一峰的网络日志
大猫的无限游戏
大猫的无限游戏
WordPress大学
WordPress大学
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
The Cloudflare Blog
Apple Machine Learning Research
Apple Machine Learning Research
小众软件
小众软件
博客园 - 三生石上(FineUI控件)
Martin Fowler
Martin Fowler
云风的 BLOG
云风的 BLOG
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
F
Fortinet All Blogs
Y
Y Combinator Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
J
Java Code Geeks
Engineering at Meta
Engineering at Meta
MyScale Blog
MyScale Blog
B
Blog
酷 壳 – CoolShell
酷 壳 – CoolShell
人人都是产品经理
人人都是产品经理

博客园 - 飘杨......

为ZLMediaKit在windows10编译srtp Windows10安装部署ZLMediaKit SurfaceView+EGL+OpenGL ES+ffmpeg播放视频并解决黑屏不显示画面的问题 SurfaceView+ANativeWindow+ffmpeg播放视频并解决花屏问题 SDL播放音频工具类封装 Qt QWidget中dropEvent(QDropEvent* e)拖拽放开不接收事件/不执行,且拖拽到目标后鼠标显示禁用符号 ffmpeg根据输入的参数截取视频 ffmpeg将视频流录制下来并保存到本地 ffmpeg解封装mp4并解码渲染(SDL2) Qt+ffmpeg+SDL硬件解码并渲染 ffmpeg+sdl播放H264/H265文件 FFmpeg实战:录制Windows屏幕并用FFmpeg压缩成H.264/H.265并保存 ffmpeg SwsContext像素格式转换BGRA转YUV420P H264/H265 NALU的nalu_unit_type解析 ffmpeg码率控制模式详解 ffmpeg-H264/H265常用编解码预设参数 Qt+FFmpeg+SDL 实现多路多格式原始视频播放工具:从像素处理到实时渲染 Qt+SDL 实战:多格式视频播放工具开发 —— 支持 RGBA/ARGB/RGB24/YUV420P 的完整实现 SDL将YUV视频渲染到Qt窗口播放
ffmpeg视频转码遇到H264黑屏问题
飘杨...... · 2025-05-29 · via 博客园 - 飘杨......

一、概述

  在基础音视频开发中视频的转码是一个常见的需求。以mp4文件举例:可能需要改变视频的宽高、码率、编码格式、像素格式等等中的一种和多种。那转码功能就派上用场了。

  实现步骤:

    1.创建解封装器,用于解封装mp4

    2.创建一个封装器,用于重新封装转码后的mp4文件

    3.创建一个解码器,用于解码mp4中的压缩数据

    4.创建一个编码器,用于把解码后的AVFrame重新编码成AVPacket

    5.复制编码器格式到封装器上下文

    6.循环解封装、解码、再重新编码、写入封装器。

    7.销毁此过程中生成的资源。

二、代码示例

  在实际的测试中发现,H264转码H264视频能够正常播放。而H264转H265的时候发现数据都已经写进去了,但是使用VLC测试播放的时候视频是黑屏,只有声音。

最后单步调试发现:未将编码器格式复制到封装器上下文中导致的。

avcodec_parameters_from_context(o_vs->codecpar, enContext);//o_vs是新创建的流,需要把编码格式告诉他,然后才行