zoukankan      html  css  js  c++  java
  • 说下 winOS / IOS / android /Linux 视频、音频 编码解码问题

    最近有朋友遇到一个问题, ios 上传视频文件,想在本地压缩下,然后再上传到服务器。

    问有没有什么 视频处理的库,

    最近Khronos的webgl 支持HTML5 ,(原理 WebGL 是openGL,openES的库》JS接口》解码HTML5的canvas数据 )

    流程反过来 也可以看成是 浏览器 HTML5的canvas 的数据 ==》通过调用JS访问 WebGL ==》WebGL 访问openGL,opengES 进行软硬解码 。

    我想这应该是浏览器 最好的选择。


    windows/linux :

    我第一个想到的是ffmpeg (windows/linux 下 软、硬解码都支持)
    然后是其他各种播放器,的 软硬 编码、解码


    IOS:
    ios8 之后已经开放了H264硬解的API了

    AVAssetExportSession
    AVFoundation里面的

    http://www.zhihu.com/question/20692215
    iOS 系统中,H.264 视频流可以硬件解码吗? 具体如何实现?

    demo
    https://github.com/adison/-VideoToolboxDemo
    https://github.com/stevenyao/iOSHardwareDecoder


    android :

    1. androidAPI

    使用VideoView和MediaPlayer都可以播放视频,这两个类到底是什么不同呢?
    VideoView 调用了 MediaPlayer 来播放视频,提供了一些视频播放的辅助功能。

    PS.有人说android 设备太多(GPU不一样)硬解码 会有问题,
    libstagefrighthw.so

    2.ffmpeg

    1. 需要验证再添加

    4.类似VLC,mplayer 也应该支持硬解码 所以从各个播放器的 开源代码中寻找线索,可能会有所发现


    我想 持续整理下 这方面的资料,以下是网上收集来的

    http://www.eoeandroid.com/thread-288058-1-1.html

    1、用Android4.1 API MediaCodec来对视频数据进行编码
    
    http://stackoverflow.com/q/17232477/2293921
    http://stackoverflow.com/questions/17232477/how-to-use-android-mediacodec-encode-camera-datayuv420sp/17288070#17288070
    以上网址相同 ,概括:How to use Android MediaCodec encode Camera data(YUV420sp)
    
    2、通过MediaRecorder方式对数据进行编码
    具体可参考http://blog.csdn.net/zblue78/article/details/6083374
    
    3、通过移植ffmpeg
    

    http://www.cnblogs.com/dwdxdy/p/3247075.html
    概括:NVCUVENC库是NVIDIA公司提供的视频编码库,可以实现H.264的GPU编码,接收原始YUV frames数据,编码产生NAL packets。

    https://github.com/yixia/VitamioBundle
    https://www.vitamio.org/Document/Introduction/2013/0429/3.html
    概括:
    由于收费,所以不考虑。
    Vitamio 是一款 Android 与 iOS 平台上的全能多媒体开发框架,全面支持硬件解码与 GPU 渲染。Vitamio 凭借其简洁易用的 API 接口赢得了全球众多开发者的青睐。到目前,全球已经有超过 100 种应用在使用 Vitamio,覆盖用户超过 2000 万。

    音频和视频格式

    Vitamio 使用了 FFmpeg 做为媒体解析器和最主要的解码器,同时开发了针对不同移动平台的硬解码方案,能够完美支持 H.264/AVC、H.263、 MPEG4 等常见的视频编码,覆盖上百种多媒体格式。下表只是一些最常见的视频格式支持,除特殊标明,全部支持硬件加速:

    DivX/Xvid
    WMV (一般只有软解码)
    FLV
    TS/TP
    RMVB (只有软解码)
    MKV
    MOV
    M4V
    AVI
    MP4
    3GP
    

    使用Android中的StageFright框架调用OpenMAX进行硬件编码,OMX部分由硬件厂商实现,无需关注,看好StageFright的调用方法即可


    自己写解码264文件,如果用view显示,就需要转成bitmap显示,或者使用opengl可以显示yuv数据

    如果已经保存成MP4格式的文件,就不需要解码了,通过mediaplayer就能播


  • 相关阅读:
    Linux系统启动流程
    linux系统目录介绍
    Nginx 安装配置教程
    深入理解linux系统的目录结构
    Mac 下安装Ruby环境(转)
    Android逆向之旅---SO(ELF)文件格式详解(转)
    TAG-9F10 发卡行相关数据(转)
    公钥,私钥,数字证书,签名,加密,认证,的概念区分(转)
    PBOC~PPT-补充内容B(转)
    PBOC~PPT-补充A(转)
  • 原文地址:https://www.cnblogs.com/scotth/p/4799727.html
Copyright © 2011-2022 走看看