多媒体开发
文章平均质量分 88
jwzhangjie
工作9年,游戏SDK开发4年
展开
-
Swift基础--ijkplayer编译
这篇与Swift基本上没有什么关系,不过之后会用到,这次编译是使用Mac编译IOS版本的,下面是编译流程,最后是整个项目的下载地址,因为下载太慢了。1、下载源码git clone https://github.com/bbcallen/ijkplayer.git 2、编译cd ijkplayer-ios-stable./init-ios.sh//这里下载依赖包./compile-ffmpeg.s原创 2014-10-19 21:58:46 · 5380 阅读 · 0 评论 -
Android本地视频播放器开发--视频解码
在上一章Android本地视频播放器开发--SDL编译编译中编译出sdl的支持库,当时我们使用的2.0,但是有些api被更改了,所以在以下的使用者中我们使用SDL1.3的库,这个库我会传上源码以及编译出的库,接下来这张我们使用ffmpeg解码视频文件中的视频帧同时使用SDL去显示。1、Decodec_Video.c 这是我视频解码的文件,其中内容如下:#include #include原创 2013-06-17 13:49:42 · 19300 阅读 · 17 评论 -
Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)
在上一章中Android本地视频播放器开发--NDK编译FFmpeg能够获取编译出来的ffmpeg库,接下来就是调用ffmpeg来实现解码,这里我们先解码音频,然后在播放音频,同时为了适应性我会用不同的方法进行播放例如使用Android提供的AudioTrack,SDL、OpengAL,OpenSL ES,最终合入视频播放器的是OpenSL ES,这样可以减少CPU的利用率。接下来在这一章中,原创 2013-06-07 13:00:53 · 19026 阅读 · 19 评论 -
Android本地视频播放器开发--NDK编译FFmpeg
在Android本地视频播放器开发中的搜索本地视频章节中,我们能够搜索本地视频并且显示每个视频的图片、标题、时间长度,当然如果需要添加其他的例如视频的长度和宽度可以使用Video类中的方法,既然我们获取到视频后,那么接下来就是解码视频,解码视频我使用的是ffmpeg,所以这张就是使用NDK编译手机可以使用的FFmpeg库。首先到官网http://ffmpeg.org/download.html原创 2013-06-06 13:23:13 · 20439 阅读 · 17 评论 -
Android本地视频播放器开发--搜索本地视频(1)
这一章的主要内容是搜索手机本地视频,添加到ListView列表里,每一个表项含有这个视频的缩略图,视频的播放时间,视频的标题,在搜索本地视频(1)中我们先制作搜索功能。Video.java--视频相关的属性类package com.zhangjie.graduation.videopalyer.videofile;import java.io.Serializable;import原创 2013-06-05 09:22:13 · 21734 阅读 · 16 评论 -
Android本地视频播放器开发--搜索本地视频(2)
在Android本地视频播放器开发--搜索本地视频(1)中我们获取了本地视频的数据,在这一章里面,我们将获取的数据通过LIstView来动态的实现出来。1、首先介绍布局代码,主布局代码只含有一个LIstView --jie_video.xml<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android原创 2013-06-05 09:36:05 · 24277 阅读 · 20 评论 -
Android本地视频播放器开发--SDL编译
在上一章 Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)中使用OpenSL ES来播放视频的声音,遗留的问题是声音的不同步,由于视频实现部分也要同步,而且音视频也要同步,所以音频部分就不单独同步问题,当同时播放音视频的时候进行两者的同步问题,对于视频显示部分最后是要使用OpenGL es来实现,由于SDL可以和OpenGL ES进行搭配,所以使用SDL+Op原创 2013-06-13 12:12:31 · 16621 阅读 · 7 评论 -
android 获取视频,图片缩略图
1、获取视频缩略图有两个方法(1)通过内容提供器来获取(2)人为创建缩略图(1)缺点就是必须更新媒体库才能看到最新的视频的缩略图/** * @param context * @param cr * @param Videopath * @return */ public static Bitmap getVideo原创 2013-05-15 10:55:16 · 10638 阅读 · 1 评论 -
Mp4v2实现h264+aac打包成Mp4视频文件
使用mp4v2实现录制mp4视频,需要准备如下信息:1、获取mp4v2源码并编译成库文件,对于mp4v2的编译可以看前面的文章android 编译mp4v2 2.0.0生成动态库;2、获取h264数据中的sps和pps数据,如果不会的话可以查看前面的文章 点击打开链接;3、获取音频解码信息,在调用MP4SetTrackESConfiguration使用,具体的获取方式一种通过f原创 2013-04-27 11:27:09 · 18513 阅读 · 21 评论 -
android yuv2rgb方案
之前项目里面需要解码h264视频,使用的是ffmpeg,解码出来的是yuv,最好的显示方法是通过opengl es 2.0来实现视频的显示,如果不会opengl es 2.0的话,那么就必须将yuv2rgb然后在绘制图像,而yuv2rgb我只知道两种方法1.通过ffmpeg里面的sws_scale来实现,不过这种方法比较慢,2.这是我之前使用的方法在http://wss.co.uk/pinknoi原创 2013-04-18 09:16:57 · 5766 阅读 · 10 评论 -
Android本地视频播放器开发--ffmpeg解码视频文件中的音频(2)
在Android本地视频播放器开发--ffmpeg解码视频文件中的音频(1)中我们从视频文件中解码出音频,这一章中将使用OpenSL ES来播放解码的音频数据,首先关于OpenSL ES这里暂不介绍,可以查看官网以及NDK中samples下面的native-audio里面的文件,这里我也是扣取了其中的代码,我们播放音频的部分在上一章的基础上进行添加的,代码如下:#include #i原创 2013-06-08 15:33:57 · 15557 阅读 · 9 评论 -
Android本地视频播放器开发--简易播放器原型
在以前的基础上,将音视频进行合并,音频播放采用OpenSL ES,视频播放采用OpenGL ES2.0进行显示,这次的版本其中音频和视频是在同一个线程,会造成音频断断续续,后续会采用音频使用SDL,视频采用SDL+OpenGL ES2.0,这部份代码会在之后开源,现在只提供库用来测试。可以使用git clone https://github.com/jwzhangjie/Graduation.gi原创 2013-06-19 13:29:05 · 22349 阅读 · 11 评论 -
流媒体开发之-直播界面切换电视台频道
1、流媒体开发之--直播实现2、流媒体开发之-直播自定义列表3、流媒体开发之-服务器图片的加载4、流媒体开发之-直播自定义分类5、流媒体开发之-获取直播节目预告-16、流媒体开发之-直播界面切换电视台频道 我们自由开发软件决定因素在于用户,如何使用户方便快捷的使用软件,这个是首要的,之前有的用户看到其他的直播软件能够在直播播放界面能够切换频道,很多人就提出这个需求,我看了一下这个功能其实也是很简单原创 2013-08-25 20:30:48 · 8459 阅读 · 1 评论 -
流媒体开发之-服务器图片的加载
1、流媒体开发之--直播实现2、流媒体开发之-直播自定义列表3、流媒体开发之-服务器图片的加载4、流媒体开发之-直播自定义分类5、流媒体开发之-获取直播节目预告-16、流媒体开发之-直播界面切换电视台频道 我们在开发直播的时候,要显示电视台的图标,而OOM也是经常遇到的,为了解决这个问题,我使用了网上一个开源的网络图片加载工具Android-Universal-Image-Loader原创 2013-08-19 12:57:41 · 5582 阅读 · 0 评论 -
流媒体开发之-获取直播节目预告-1
可可工作室出品:欢迎使用可可直播视频播放器:http://pan.baidu.com/share/link?shareid=3291150676&uk=4111208708在开发的时候,特别是创业阶段,很需要的就是资金和资源,当然我是没有资金了,那资源如何获取呢,互联网给了我们机会,对于直播类的网站有很多,而且节目很全,那既然我们现在没有资金购买资源,那我们可以暂且使用别人原创 2013-08-23 20:57:40 · 6890 阅读 · 2 评论 -
流媒体开发二
可可工作室出品:欢迎使用可可直播视频播放器:http://pan.baidu.com/share/link?shareid=3291150676&uk=41112087081、流媒体开发之--直播实现2、流媒体开发之-直播自定义列表3、流媒体开发之-服务器图片的加载4、流媒体开发之-直播自定义分类5、流媒体开发之-获取直播节目预告-16、原创 2013-08-25 20:50:47 · 4324 阅读 · 1 评论 -
libmad解码mp3生成pcm文件
在之前的一篇文章中介绍了如何在linux下,使用libmad解码mp3并且播放,将源码编译了,可以正常的播放MP3文件,但是在项目里面需要将mp3解码成pcm文件,所以需要将之前的代码进行修改一下,修改是在原来的基础上的,这样可以测试一下。/* * 本程序是从 minimad 改进而来,如要更详细的说明请参看 minimad.c * * MyMinimad.c , 2009/12原创 2013-07-01 23:23:20 · 12212 阅读 · 7 评论 -
ID3V2.3详解
Informal StandardDocument: id3v2.3 M. Nilsson3rd February 1999 1. ID3 tag version 2.3.01.1. Status of this documentThis document is an informal standard and replaces theid3v2.2.0 stand转载 2013-07-01 23:25:54 · 6358 阅读 · 0 评论 -
MyMinimad ── Linux下用libmad写的mp3解码播放程序
程序说明:其实本来应该是在output函数中设置采样率和声道数的,但有莫名奇妙的问题。所以定了个一般化的#define SAMPLE_RATE 44100#define CHANNELS 2#define PCM_DEVICE "plughw:0,0"即:mp3的采样率为44100Hz,声道数为2(立体声)源代码:/* * 本程序是从 minimad 改进而来,如转载 2013-06-30 22:35:36 · 3098 阅读 · 0 评论 -
VLC视频播放器开发--VLC for Android编译
VLC播放器是一款优秀的开源播放器,可以播放MPEG-1、MPEG-2、MPEG-4、DivX、DVD/VCD、数字卫星频道、数字地球电视频道(digital terrestial television channels)、在许多作业平台底下透过宽频 IPv4、IPv6网络播放线上影片。此软件开发项目是由法国学生所发起的,参与者来自于世界各地,设计了多平台的支持,可以用于播放网络串流及本机多媒体档原创 2013-06-22 12:37:47 · 6537 阅读 · 0 评论 -
android 编译libmad
之前项目里面需要转歌曲,不过是通过java来实现的比较慢,最近有时间在网上查看mp3解码,找到libmad,能够实现mp3的解码,所以编译成库测试一下性能。1、下载源码,到官网 http://sourceforge.net/projects/mad/files/libmad/0.15.1b/ 现在最新的版本是libmad-0.15.1b2、解压下载的文件,进入并创建jni目录,然后将里面的原创 2013-04-16 14:54:29 · 5071 阅读 · 7 评论 -
H264 获取SPS与PPS(附源码)
原文链接:http://blog.csdn.net/zgyulongfei/article/details/7538523在用Android手机进行h264硬编码的时候如果要进行视频流的实时传输与播放,就需要知道视频流的Sequence Parameter Sets (SPS) 和Picture Parameter Set (PPS)。今天算是看明白如何获取SPS和PPS,在这里记转载 2013-04-16 15:48:41 · 5981 阅读 · 0 评论 -
android 使用libjpeg-turbo将yuv2jpeg图像
要将yuv2jpeg图像则需要两个准备,一、准备libjpeg-turbo库,可以查看之前android 编译libjpeg-turbo文章,二、调用libjpeg-turbo代码,可以查看源码中的Exception.c文件,也可以看之前的使用libjpeg对图像进行压缩文章,下面就是根据这两篇文章来编写调用libjpeg-turbo库来实现yuv2jpeg的功能。1、将h264解码成yuv我原创 2013-04-16 10:35:50 · 12779 阅读 · 1 评论 -
FFmepg 多线程解码历程 - 6:frame_thread_init
//ff_thread_init选择帧线程初始化,就会进入frame_thread_initstatic int frame_thread_init(AVCodecContext *avctx){ int thread_count = avctx->thread_count; const AVCodec *codec = avctx->codec; AVC原创 2013-03-30 15:25:10 · 5132 阅读 · 0 评论 -
FFmepg 多线程解码历程 - 7:submit_packet
//在ff_thread_decode_frame中会调用submit_packet将码流交给对应的解码线程,来实现线程状态的改变,具体的流程图见下面图static int submit_packet(PerThreadContext *p, AVPacket *avpkt){ FrameThreadContext *fctx = p->parent; PerThr原创 2013-04-01 09:24:31 · 2662 阅读 · 0 评论 -
FFmepg 多线程解码历程 - 3: int ff_thread_decode_frame
//帧级解码函数,在avcodec_open2的时候,就会判断片还是帧解码,分析见下一篇int ff_thread_decode_frame(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr, AVPack原创 2013-03-30 14:08:45 · 4624 阅读 · 0 评论 -
FFmepg 多线程解码历程 - 5: ff_thread_init
//用来判断是帧还是片线程初始化int ff_thread_init(AVCodecContext *avctx){ if (avctx->thread_opaque) { av_log(avctx, AV_LOG_ERROR, "avcodec_thread_init is ignored after avcodec_open\n"); re原创 2013-03-30 15:00:18 · 2383 阅读 · 1 评论 -
FFmepg 多线程解码历程 - 2 :avcodec_decode_video2
//解码函数int attribute_align_arg avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture, int *got_picture_ptr,原创 2013-03-30 13:27:28 · 6625 阅读 · 0 评论 -
FFmepg 多线程解码历程 - 1:validate_thread_parameters
/** * Set the threading algorithms used.//设置线程的使用算法 * Threading requires more than one thread.//需要一个以上的线程 * Frame threading requires entire frames to be passed to the codec,//帧线程需要整个帧被传递到编码解码器原创 2013-03-30 10:58:03 · 4984 阅读 · 3 评论 -
FFmepg 多线程解码历程 - 4:avcodec_open2
//在初始化codec后,接下来就是打开解码器int attribute_align_arg avcodec_open2(AVCodecContext *avctx, const AVCodec *codec, AVDictionary **options){ int ret = 0; AVDictionary *tmp = NULL; if (avcod原创 2013-03-30 14:50:28 · 10643 阅读 · 0 评论 -
error: 'ff_get_buffer' was not declared in this scope
问题:/home/ffmpeg4android-code/ffmpeg-1.1.2/libavcodec/libstagefright.cpp: In function 'void* decode_thread(void*)':/home/ffmpeg4android-code/ffmpeg-1.1.2/libavcodec/libstagefright.cpp:188: error:原创 2013-03-29 13:58:57 · 3531 阅读 · 0 评论 -
Out of tree builds are impossible with config.h in source dir
在编译tools下的build_libstagefright的时候,由于之前在ffmpeg下面执行过./configure,生成config.h然后再次在tool下执行build_libstagefright的时候就会出现Out of tree builds are impossible with config.h in source dir这个问题解决:删除ffmpeg 下面的con原创 2013-03-28 14:20:58 · 8328 阅读 · 0 评论 -
NDK CPU Features
Android NDK CPU Features detection library:-------------------------------------------This NDK provides a small library named "cpufeatures" that can be used atruntime to detect the target device's原创 2013-04-02 13:11:11 · 4226 阅读 · 0 评论 -
android 编译faad2
由于最近要做AAC解码,查看了网上最初有两种思路:第一章种是ffmpeg,我查看./configure --list-decoders的时候,有看到aac解码器,同时在x86上编译也能够打开aac解码器,但是用用ndk交叉编译的时候即使--enable-decoder=aac也没有打开AAC解码器,所以这种方法暂停。第二中方法是使用faad2解码,在x86上调试,写一个demo能够解码aac,然后原创 2013-04-07 13:17:27 · 5259 阅读 · 9 评论 -
h264检测是I帧还是P帧,解决录像第一帧有马赛克问题
最近使用h264码流数据进行录像,但是录出来的第一帧有马赛克,究其原因是录像的第一帧不是关键帧,所以需要录像是需要判断第一帧是否是关键帧,方法有两种,第一种是原码流的基础上查找,第二种是将原码流传递给ffmpeg让ffmpeg判断key_frame,第二种相对简单,但是由于这样一来录像和解码视频切合的太紧密,之后修改比较麻烦,所以选择第一种方案,查看注释1可以明白如何检测h264码流的关键帧,下面原创 2013-04-23 09:32:05 · 7368 阅读 · 1 评论 -
android 编译libjpeg
之前需要将yuv转换为jpg图像,查看网上说libjpeg-turbo比libjpeg快2-3倍,但是在android手机上实践了一下,需要40-60个ms,这个虽然比以前的300ms好多了,但是还是不能满足我的要求,进一步查看了网上信息,libjpeg-turbo是为x86和x86-64进行优化的使用了SIMD指令,而手机上不支持,所以需要在试验一下libjpeg的需要。下面是我的编译步骤:原创 2013-04-13 10:39:56 · 6264 阅读 · 1 评论 -
android 编译libjpeg-turbo
最近解码视频生成的是yuv数据,然后需要生成jpg图片,之前的方案是yuv-rgb-bmp-jpg这样的话是很慢的,计算了时间大概要300ms左右,导致多次点击照相,会造成视频画面的延迟,所以只能使用别的方案替代,在网上查询libjpeg,但是又看了一篇文章http://www.linuxsir.org/bbs/thread374093.html说libjpeg-turbo比libjpeg快了2-原创 2013-04-12 10:49:29 · 12895 阅读 · 4 评论 -
使用libjpeg对图像进行压缩
libjpeg 是一个完全用C语言编写的库,包含了被广泛使用的JPEG解码、JPEG编码和其他的JPEG功能的实现。Libjpeg不仅可以把bmp格式转化成jpg格式,还支持其他格式的转化成jpg格式(例如ppm,gif,targa,rle等)。转化流程如下:(1) 分配和初始化一个JPEG压缩对象在libjpeg中,JPEG压缩对象被定义为“struct jpeg_comp转载 2013-04-12 12:34:42 · 8962 阅读 · 0 评论 -
ndk 8d compiled ffmpeg libstagefright
1.Download ffmpeg-0.11.2.tar.bz22.Enterffmpeg-0.11.2/tools3.Modify build_libstagefright#!/bin/bashNDK=/opt/android-ndk-r8dif [ "$NDK" = "" ]; then echo NDK variable not set, assum原创 2013-03-26 14:15:42 · 8862 阅读 · 22 评论 -
ndk 8d compiled ffmpeg problem -- 1
problem:/opt/android-ndk-r8d/toolchains/arm-linux-androideabi-4.6/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.6/../../../../arm-linux-androideabi/bin/ld: libavcodec/libavcodec.a(libs原创 2013-03-26 13:11:31 · 3554 阅读 · 0 评论