FFmpeg 入门(4):线程分治】的更多相关文章

本文转自:FFmpeg 入门(4):线程分治 | www.samirchen.com 概览 上一节教程中,我们使用 SDL 的音频相关的函数来支持音频播放.SDL 起了一个线程来在需要音频数据的时候去调用我们定义的回调方法.现在我们要做的是用线程的方法去改造视频显示这块的逻辑.这样一来会使得代码的机构更模块化,这样改动起来会更简单,尤其是当我们想添加音视频同步逻辑时. 我们从哪开始呢?首先,我们发现我们的 main 函数做的事情太多了:运行 event loop.读取数据包.进行视频解码等等,所…
一个偶然的机缘,好像要做直播相关的项目 为了筹备,前期做一些只是储备,于是开始学习ffmpeg 这是学习的第一课 做一个简单的播放器,播放视频画面帧 思路是,将视频文件解码,得到帧,然后使用定时器,1秒显示24帧 1.创建win32工程,添加菜单项 “打开” 为了避免闪烁,MyRegisterClass中设置hbrBackground为null 2.在main函数中初始化ffmpeg库:av_register_all(); 3.响应菜单打开 void LoadVideoPlay(HWND hWn…
本文转自:FFmpeg 入门(7):Seeking | www.samirchen.com 处理 seek 命令 我们将为播放器添加 seek 的能力.这个过程中,我们会看到 av_seek_frame 用起来有多方便. 我们添加的功能是通过上下左右键能够做快进或快退,其中左右键快进或快退的幅度较小,为 10s,上下键快进或快退的幅度较大,为 60s.所以我们需要在我们的事件处理循环中添加处理按键的逻辑.但是当我们遇到按键事件时,我们不能直接调用 av_seek_frame,我们需要在 deco…
本文转自:FFmpeg 入门(6):音频同步 | www.samirchen.com 音频同步 上一节我们做了将视频同步到音频时钟,这一节我们反过来,将音频同步到视频.首先,我们要实现一个视频时钟来跟踪视频线程播放了多久,并将音频同步过来.后面我们会看看如何将音频和视频都同步到外部时钟. 实现视频时钟 与音频时钟类似,我们现在要实现一个视频时钟:即一个内部的值来记录视频已经播放的时间.首先,你可能会认为就是简单地根据被显示的最后一帧的 PTS 值来更新一下时间就可以了.但是,不要忘了当我们以毫秒…
本文转自:FFmpeg 入门(3):播放音频 | www.samirchen.com 音频 SDL 提供了播放音频的方法.SDL_OpenAudio 函数用来让设备播放音频,它需要我们传入一个包含了所有我们输出需要的音频信息的 SDL_AudioSpec 结构体数据. 在展示接下来的代码之前,我们先说说 PC 上是如何处理音频的.数字音频包含了一长串「音频采样(sample)」,每一个采样代表着一个音频波形的值.声音是在一定的「音频采样率(sample rate)」下被录制下来的,音频采样率即每…
本文转自:FFmpeg 入门(5):视频同步 | www.samirchen.com 视频如何同步 在之前的教程中,我们已经可以开始播放视频了,也已经可以开始播放音频了,但是视频和音频的播放还未同步,我们要怎么办呢? PTS 和 DTS 好在音频和视频都有信息来控制播放时的速度和时机.音频流有一个采样率(sample rate),视频流有一个帧率(frame per second).但是,如果我们只是简单地通过数帧和乘上帧率来同步视频,那么它可能会和音频不同步.实际上我们将使用 PTS 和 DT…
本文转自:FFmpeg 入门(2):输出视频到屏幕 | www.samirchen.com SDL 我们这里使用 SDL 来渲染视频到屏幕.SDL 是 Simple Direct Layer 的缩写,是一个优秀的跨平台多媒体库,你可以从 http://www.libsdl.org 下载 SDL 的库. SDL 有很多可以将图像绘制都屏幕的方法,其中有一个专门用于将视频渲染到屏幕进行播放,即 YUV overlay. YUV(其实这里叫 YCbCr 更准确)是不同于 RGB 的另一种存储原始图像数…
本文转自:FFmpeg 入门(1):截取视频帧 | www.samirchen.com 背景 在 Mac OS 上如果要运行教程中的相关代码需要先安装 FFmpeg,建议使用 brew 来安装: // 用 brew 安装 FFmpeg: brew install ffmpeg 或者你可以参考在 Mac OS 上编译 FFmpeg使用源码编译和安装 FFmpeg. 教程原文地址:http://dranger.com/ffmpeg/tutorial01.html,本文中的代码做过部分修正. 概要 媒…
总入口 http://blog.csdn.net/leixiaohua1020/article/details/15811977 各结构体介绍 http://blog.csdn.net/leixiaohua1020/article/details/14215833 简单的ffmpeg+sdl例子视频教学 http://blog.csdn.net/leixiaohua1020/article/details/47068015 关于解码与播放,例子是音频 http://blog.csdn.net/l…
1. 下载网站:https://ffmpeg.zeranoe.com/builds/ 先后下载 Win32 Shared 和 Win32 Dev 两个版本,分别解压缩. 2. 用Visual Studio 创建项目,选择 “Create new project from existing Code files” 3. 设置 include path 和 library path, sample as follow,记得把Shared里面的dll 拷贝到 debug目录. <?xml versio…