音视频学习--H264解析渲染

一、H264文件获取

  下载一段MP4文件,通过FFMPEG转换成MP4

ffmpeg -i Gravity.mp4 -vcodec h264 out_2.264

 

二、通过解析H264成帧,然后刷新

  这里的环境是 MacOS  + Python2.7 + openCV2

  

#!/usr/local/bin/python2.7
# -*- coding: utf-8 -*-
__author__ = ‘qqvipfunction‘

import sys
import cv2
import os
import datetime

#打印时间戳
def Log(str):
    print(datetime.datetime.now().strftime(‘%Y-%m-%d %H:%M:%S.%f‘) + ": " + str)

#cv2.waitKey ,填写0表示永久等待,正数表示等待多少毫秒,如果按键返回按键的值

if __name__ == ‘__main__‘:
    h264_path = os.getcwd() + ‘/rsc/gravity/out.h264‘
    Log(h264_path)

    loop = True
    frameCount = 0
    cap = cv2.VideoCapture(h264_path)
    while (cap.isOpened() and loop):
        Log("frame " + str(frameCount))
        frameCount = frameCount + 1
        ret, frame = cap.read()
        if ret:
            gray = cv2.cvtColor(frame, cv2.COLOR_BGR2BGRA)
            cv2.imshow(‘frame‘, gray)
            if cv2.waitKey(1) & 0xFF == ord(‘q‘):
                loop = False
                break
        else:
            print("Parse H264 failed " + ret)
    cap.release()
    cv2.destroyAllWindows()

 

三、效果

时间: 2024-10-01 08:10:08

音视频学习--H264解析渲染的相关文章

Android音视频学习第7章:使用OpenSL ES进行音频解码

/* * *这里使用了transcode-1.1.7对wav文件进行解码,然后使用opensl es进行播放 * */ //用到的变量和结构体 WAV wav; //wav文件指针 SLObjectItf engineObject; //引擎对象 SLEngineItf engineInterface; //引擎接口 SLObjectItf outputMixObject; //混音器 SLObjectItf audioPlayerObject; //播放器对象 SLAndroidSimpleB

音视频学习-exceeded mem limit: ActiveHard 50 MB (fatal)

一.现象 ReplayKit2 适配中 UPLOAD进程被系统杀掉 日志中显示原因:exceeded mem limit: ActiveHard 50 MB (fatal) 二.内存占用分析 1)系统回调YUV数据(NV12类型)给到UPLOAD进程,回调方法运行在多线程中 - (void)processSampleBuffer:(CMSampleBufferRef)sampleBuffer withType:(RPSampleBufferType)sampleBufferType 上述在多线程

音视频学习-直播助手内存优化

一.iOS进程中使用的内存 1)内存的类型 Physical Memory Wired-The amount of memory being used by the operating system. Physical Memory Active-The amount of memory being used by processes other than the operating system. Physical Memory Inactive-The amount of memory th

【音视频连载-007】基础学习篇-SDL 播放 PCM 音频文件(上)

音视频学习入门技术文章连载: 技术开发故事会连载 [音视频连载-001]基础学习篇-SDL 介绍以及工程配置 [音视频连载-002]基础学习篇-SDL 创建窗口并显示颜色 [音视频连载-003]基础学习篇-SDL 消息循环和事件响应 [音视频连载-004]基础学习篇-SDL 加载图片并显示 [音视频连载-005]基础学习篇-SDL 加载 YUV 文件并显示 [音视频连载-006]基础学习篇-SDL 播放 YUV 视频文件]) 在前面的文章中已经能够利用 SDL 去播放 YUV 视频文件了,接下来

各种音视频编解码学习详解

各种音视频编解码学习详解 媒体业务是网络的主要业务之间.尤其移动互联网业务的兴起,在运营商和应用开发商中,媒体业务份量极重,其中媒体的编解码服务涉及需求分析.应用开发.释放license收费等等.最近因为项目的关系,需要理清媒体的codec,比较搞的是,在豆丁网上看运营商的规范 标准,同一运营商同样的业务在不同文档中不同的要求,而且有些要求就我看来应当是历史的延续,也就是现在已经很少采用了.所以豆丁上看不出所以然,从 wiki上查.中文的wiki信息量有限,很短,而wiki的英文内容内多,删减版

Android 音视频开发学习思路

Android 音视频开发这块目前的确没有比较系统的教程或者书籍,网上的博客文章也都是比较零散的.只能通过一点点的学习和积累把这块的知识串联积累起来.在学习的过程中,遇到不懂的地方,要及时的去google或者请教大神,不要半知半解的过去. 初级入门篇: 在 Android 平台绘制一张图片,使用至少 3 种不同的 API,ImageView,SurfaceView,自定义 View 在 Android 平台使用 AudioRecord 和 AudioTrack API 完成音频 PCM 数据的采

webrtc音视频解析流程分析

webrtc音视频解析流程包括多个线程: 1. rtp网络流接收线程(rtp stream reciever thread) 2. 音视频解码线程(decode thread) 3. 渲染线程(render thread) rtp网络流接收线程(rtp stream reciever thread): 接收网络rtp包,解析rtp包,得到音视频数据包.将解析出的rtp包,加入到RtpStreamReceiver::frame_buffer_中或最终加入VCMReceiver::jitter_bu

音视频开发学习——转知乎答案

著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处.作者:姚冬链接:http://www.zhihu.com/question/31156766/answer/54645514来源:知乎 我们先假设某人在音视频方面是零基础,也没学过任何数字信号处理相关知识,数学基础基本是高中水准,但是熟悉 C/C++ 开发,至少熟悉某一个平台下的编译调试IDE. 着重研究两个开源项目 ffmpeg 和 webRTC,主要看ffmpeg的视频部分和webRTC的音频部分. 首先,从视频解码入手,这

一个基于JRTPLIB的轻量级RTSP客户端(myRTSPClient)——实现篇:(六)RTP音视频传输解析层之音视频数据传输格式

一.差异 本地音视频数据格式和用来传输的音视频数据格式存在些许差异,由于音视频数据流到达客户端时,需要考虑数据流的数据边界.分包.组包顺序等问题,所以传输中的音视频数据往往会多一些字节. 举个例子,有时候一个媒体分包数据量很大(比如H264的一个分包常常会有2-4K),而大多数网络的MTU(最大传输单元)基本都是1500字节. 如果频繁收发这么大的数据包,会额外增添路由器的负担,甚至会导致网络阻塞,不利于网络的稳定. 于是服务器就自行对H264进行了分包以适应MTU,每个分包的开始处往往会多出一