1�� ��
���������ƶ�ͨ�ż����Ͷ�ý�弼����Ѹ�ٷ�չ���ں��ֻ������硢��ý�弼��Ϊһ�����Ƶ��ؼ���Ҳ���˳���Ľ�����ͨ���ƶ�ͨ�������ṩ��ý������Ѿ���Ϊ���ܡ�ȫ���ƶ��û����dz��Ӵ�����ƶ���ý�������о���г�DZ����Ҳ����Ϊ�ƶ�ҵ����о��ȵ�֮һ������һ�����£�����ƶ�������ƶ��ն˵��ص㣬����ƶ���ý��ͻ��˵Ľ������������ʵ���塣
���������Ľ��FFmpeg��Դ�����н������̣�������ƶ��ն���ý�岥�������ڷֲ���ϵ�ܹ�����Ʒ���������Ƶ��ص����ڵײ����β�ͬ�����ļ�����ʱ��ý���������IJ��죬�����ṩ�˶��ⲿ����ͷ�豸�Ŀ��ƹ��ܣ�������Androidƽ̨[1]��ʵ�ָò�������
����2������������Ʒ���
�������������۲��ű����ļ�����������ý���ļ�������Ҫ�л�ȡý�����ݣ���������Ƶý�������������ý��������ʾ���û����������Σ�����0�ļ����ŵ����������������ԵĴ����Σ�����������ڲ�εIJ������ṹ��ơ�
�������ڱ����ļ���������ý���ļ������ݻ�ȡ��ʽ�Dz���ͬ�ģ���Ҫ�����ϲ�����һ���ԣ���Ҫ�������ļ�����Ԥ�������γ���ͬ��ʽ�������ṩ���ϲ���롣�����������ԣ�����ļ��������̱���������ʵʱ��صIJ�������Ʋ��÷ֲ�ṹ��ÿ������������ʹϵͳ����϶Ƚ��ͣ����ڸ��������չ����Ӱ�����²��Ӧ�á���������������������ȡ�㡢����Ԥ�����㡢����Ƶ�������û����档����ý�岥�����ֲ�ṹ��ͼ1��ʾ��
�����û��������Ҫ�ṩ�û��Ͳ�����֮��Ľ����ӿڣ��粥�ű����ļ�ʱ����ʵ����ͣ����������˵ȹ��ܣ��ڹۿ���ý���ļ�ʱ����ͨ�����ּ������������߲������Ϸ���ť��������ͷ�Ľ��ࡢ�������Ϣ��
��������Ƶ�������Ҫ�н���ѡ�������������������Ƶ��ʽ�Ľ������Ͷ�·ý����֮��ͬ���Ĺ��ܡ�����ѡ������ӱ����ļ�������ý���ļ�ͷ�л�ȡ��ý��Ľ����ʽ��Ϣ�����ݸø�ʽ��Ϣѡ����Ӧ�Ľ�������ѹ����ý�������н��롣�ò�������FFmpeg���Ż�����Ϊ�������Ľ���ģ��ġ���·ý��֮��ͬ��������Ƶ������Ƶ����ͬ�����ڲ��ű����ļ�ʱ���ܻ���Ҫ��Ļ��ͬ����
��������Ԥ������Ա����ļ�������ý���ʽ���װ����ȡ�ļ�������Ƶ����Ļ����Ϣ�����䰴֡������Ӧ�ϲ�����뻺����������ý���ļ���ȥ��RTP�İ�ͷ��Ϣ������RTP������Ƶ��Ϣ��֡��������������֡�����ϲ�����뻺����������װ������Ϣ�������PELCO-D/PЭ��涨���ı���ʽ��װ�û��Ŀ������룬����������Ϣ���ݸ��²㡣
�������ݻ�ȡ��Ĺ��ܰ��������ļ�����ý���ļ��Ļ�ȡ������ͷ������Ϣ�ķ��ͣ�ǰ��ֻ���ȡ�����ļ����ɣ���ý���ļ��Ļ�ȡ��Ҫ����ý���������ȡý��������Ϣ����ý���ļ���ȡ���ְ���ǰ�ڻỰЭ�̲��֡����ݷ��Ͳ��ֺ����ݻ��岿�֡�����ý����ϢЭ�̲�����Ҫʹ�� RTSPЭ��[2]Э��ý����������Ϣ����ý�����ͣ���Ƶ����Ƶ��������Э�飨RTP/UDP/IP������ý���ʽ��H263��mpeg������ý�崫��˿ڵ���Ϣ��
����3 FFmpeg��Androidƽ̨����ֲ
����FFmpeg��һ����¼�ơ�ת������/��Ƶ������빦��Ϊһ��������Ŀ�Դ����������������в�����ֻ��ҪFFmpeg�ж��ļ����װ������Ƶ���벿�ֵĹ��ܣ����� FFmpeg�����������ȫ����ֲ��Ŀ��ƽ̨�ϻ���ɴ����Ĵ������ࡣ����FFmpeg����Ŀ���ʱ����Linux����ϵͳ�ģ���û�п��ǵ��ֻ�ƽ̨�Ĵ�������С����Դ��������ƣ��������ֻ����ض���������FFmpeg������������Ż���ʮ����Ҫ�ġ�
����3.1 FFmpeg������
������FFmpeg����Ӵ��Ҵ���ṹ���ӵ�Դ�������ҳ�������Ҫ�Ĵ���ȷʵ��һ��dz����ѵĹ�������Linux�±�������FFmpeg����ʱ��Ҫ���� configure��make��make install�������ܽ�FFmpeg��ȷ�ı��뵽Linuxϵͳ���С�����configure�λ�����һ��configure.h��make�ļ������������ļ��п��Բ��ҳ��ôα��붼��������Щ�ļ���
�������о�������configureԴ�����ʱ����Լ���ܶ����ò��������в�����Ϊ����ѡ���������ѡ���������ר���ṩ���Ż��������Ż�������Ҫ���������ڱ���ʱ���������ݡ���FFmpeg����Ҳǡ�ǽ���ϵͳ�в���Ҫ���ļ�ȥ������˱�������ѡ���ʵ����Ż������ķ����ҳ������������ļ�������Щ������ϸ�о��ó�����ʱ���õIJ������£�
����./configure --enable-version3 --disable-encoders --enable-encoder=h263 --enable-encoder= amr_nb --disable-parsers --disable-bsfs --enable-muxer=tgp --disable-protocols --enable-protocol =file��
������������ʾ�IJ������ñ���Դ�ļ�ʱ��ϵͳֻ��h263��amr_nb�ı��뷽����3gp���ļ���װ��ʽ�������еĽ����ʽ�����װ�ļ���Դ���벿�ֱ��뵽�����ӿ⡣
������ʱ�����뵽���ӿ��Դ���뼯�ϼ�Ϊ���������Դ������Ч����ͨ������configure.h��make�ļ��еĺ���Ϊ.o�ļ�������Ϊ.o���ļ��DZ���.c����ʱ���ɵ�Ŀ���ļ���ÿһ���������.c�ļ���������.o�ļ�������ͨ���鿴���еĺ���Ϊ.o���ļ�������ɵ�֪�ڸ����ò����±�����Դ�ļ�����Щ����˿��Եó�������������Դ�ļ���С���ϡ�
����FFmpeg��Դ������Ȼ�ܹ���ƽ̨�������У�����������ƶ��������PC�����Եģ�PC�����ֻ���CPU������������Դ���ڴ�ȸ��������Դ�����кܶ����죬����������ֻ����ص���Ҫ�����¼��������Ż����룺
����1. ȥ��������롢�淶����ṹ������if-else ���жϡ������ֲ���ȫ�ֱ�����ʹ�üĴ�����������ֲ����������ٲ���Ҫ�Ĵ������࣬ȥ��FFmpeg ���Թ����еĴ�ӡ��䣻
����2. ������λ�������˳���������Ϊ�˳�����ָ���ִ��ʱ��ԶԶ��������λָ������dz���ָ�ʹ������λ������Լ���ָ�������ʱ�䣻
���� 3. ע��ѭ�������ĵ��ã��������ٶ���ѭ����ʹ�ã���д����ʱ���������ϴ�ѭ�����´�ѭ��������ԣ����ٲ���Ҫ�Ĵ����������
����4. ���ú����Ļ��档���FFmpeg ��ֲ��Ŀ��ƽ̨Androidƽ̨�������ʺϴ˱�̨�Ļ����С����
��������Ծ��������ľͲ�һһ�ظ��ˡ�
����3.2 FFmpeg��ֲ
����Google������NDK��makefile�ļ���Android.mk�ļ������ͨ��makefile�ļ��к֮ܶͬ�����ڿ�ƽ̨���� FFmpegԴ����ʱ������ʹ��ԭ�е�makefile�ļ���������ֲ���Ⱦ��������ǽ�FFmpeg���makefile�ļ�ȫ���滻ΪNDK�е� Android.mk�ļ���
����ͨ������FFmpeg��ģ��ṹ��֪avutil�ǻ���ģ�飬avcodecģ��ı�������Ѿ�����õ� avutilģ�飬avformat����ǰ���ߣ���������ģ��ṹ���ı�����ֲ��˳��Ϊavutil��avcoedec��avformat������IJ�����ϸ˵�����£�
����1. ����config.h��config.mak
��������˵��һ��FFmpeg�Դ��� makefile�Ŀ�ܣ�FFmpeg�ھ���configure����֮������һ��config.h�ļ���һ��config.mak�ļ����������ļ����������� 600-700���궨�壬����������������ĸ�������������ã������й�����ϵ�ܹ��������������ӿ⡢ͷ�ļ����汾����������ȵ���صĺ궨�塣����һ���ֱ���Ҫ�Ĺ���ƽ̨���췽��Ķ��壬����������ϵ�ܹ��ij�Androidƽ̨��ARMv5TE����ʱ�ļ������ʱ��ָ��ͻ�ѡ��ARM��ָ�������X86��ָ����������ļ�����Ҫ���Ժ�ܶ��ļ���Ҫinclude config.h����ļ������������������ļ���ѡ���ԶԴ�����б��롣
����2. ����libavutil.a
������libavutil����һ��Android.mk���ļ���libavutil���makefile�ļ���Ҫ����subdir.mak�������ʵ���������ı��룬������д��Android.mk�£����make�ļ����Բ�Ҫ������Ҫֱ�ӰѶ�Ӧ��Դ�ļ����룬����makefile��ָ��.oĿ���ļ�������Android.mk����Ҫֱ��ָ��.cԴ�ļ���Android.mk�ļ�������ʾ��
���� LOCAL_PATH := $(call my-dir)
����include $(CLEAR_VARS)
���� LOCAL_MODULE := avutil
����LOCAL_SRC_FILES:=adler32.c \
�������� \
���� include $(BUILD_STATIC_LIBRARY)
��������ʱ���ܻ���ֺܶ������Щ�����������ֶ�����Ϊ��Щͷ�ļ�û����������������⣬ֻҪ������Ӧ��ͷ�ļ���Ϳ����ˡ����粻ʶ��ijЩ�ļ���size_t�ؼ��֣��ڸ��ļ�include stdio.h��Ͳ������ˣ��������ƴ���Ͳ�һһ�����ˡ�
��������ģ�鰴����ͬ�ķ�����дAndroid.mk�ļ�����ֲ��Androidƽ̨��Ϊ�����в������Ľ���ģ�顣
����4 ��������
����4.1���ݻ�ȡ��
�����ò������Ҫ����Ϊ����ý�������Э��ý����Ϣϸ�ڣ�������Э�̽���ӷ������˻�ȡ��ý�����ݣ�����ý�����ݴ��뻺���������ձ����л�����Խ����ݰ���������Ԥ�����㣬��ṹͼ��ͼ2��ʾ��
���������иò�һ����������̣߳�����һ���߳�������TCP���ӣ�����RTSP�ỰЭ�̣�������RTP���ݴ����ڼ䣬��TCP���ӱ���һֱ�����������̷ֱ߳�Ϊ������Ƶ����ƵRTP���ݵ��̣߳����������̷ֱ߳�Ϊ�����Լ�������Ƶ����Ƶ��RTCP���ݰ���
����4.2 ����Ԥ������
��������Ա����ļ���Ԥ������ȫ������FFmpeg�ṩ�Ĺ����ļ����װ���ܣ�����ý���ļ���Ԥ�����轫һ������RTP ���ݰ�������һ���ⲿ�ּ����Ѿ���Գ��죬���Ľ����ٸ�����
������������ý�岥����������������ͨ��ý�岥����������ص㼴Ϊ�ܶ��ⲿ������̨������ͷ���п��ƣ����罹�ࡢ�ϡ��¡����ҵȷ�������á����Ա�����ʹ��PELCO-DЭ����Ϊ��̨����Э�顣
�����е�һ�ֽ�Ϊͬ����Ҳ����ʼ���ţ�ͨ������0xFF���÷����ֽ�������������õ��շ���ʽ��ȷ��ڶ��ֽ���дΪĿ���豸�ĵ�ַ����������1�ֽ���Ϊ������ͷ��Ȧ������Ŀ��ơ���������2�ֽ�Ϊ���༰�䱶���ƣ�����Bit4, Bit3, Bit2, BitlΪ�������ҿ���λ�����һ��Bit0λ����0������1�ֽ��У�ˮƽ�����ٶȣ�00-3F��������2�ֽڣ���ֱ�����ٶȣ�����ֵͬ�����ֽ�1��У�����ֽ�Ϊǰ�����ֽ�֮�͡�
����������Ƶ�PELCO-DЭ���ı������Ĭ�������λ������1��������2ȫ��Ϊ0��������1��������2ֵΪ20H��ͨ���ϲ㷢�͵İ�����Ϣ����Ӧ������1��������2����Ӧλ��
����Ŀǰ��������ý�岥����ֻ�ṩ�������ֿ��ƹ��ܣ���ģ������ϲ�����İ�����Ϣ������ӦλΪ1�������ֽڵ�ֵ���γ��߸��ֽ��ı��������ⲿ�豸�������յ��ϲ㰴��ֹͣ����Ϣ��ͳһ���� {0xff,0x01,0x00,0x00,0x00,0x00,0x01,}ֹͣ���
����4.3 ���뼰��ʾ��
�����������ҪӦ�� FFmpeg��ֲ��Androidƽ̨�Ĵ�����Ϊ�������Ľ���ģ�飬�ò��ִ���֧�ְ���avi��3gp��MPEG-4��90���ֽ����ʽ���ļ���ʽ�����Ҿ������Ż����FFmpeg����Ч�ʺ�Ч�ܶ��õ��˺ܴ����ߡ�
������ʾ�㱾����ҪӦ�ÿ�Դ��SDL������ʵ�֣�SDL(Simple DirectMedia Layer)��һ����ƽ̨�ģ���ѵĿ�Դ������������Ӧ��C���Կ����������ṩ����ƽ̨��ͼ�����������������豸�ļӿڡ�����������Ϸ��������ý��Ӧ�õĿ������ÿ�Դ�������������ڶ��ֲ���ϵͳ�ϣ����а���Linux��PSP��Windows��Mac OS X�ȡ�ͬʱSDL��������Ƶ����Ƶ���̣߳���ʱ�����¼��ȹ��ܡ�
����5 �ܽ�
�������Ľ����˻���Androidƽ̨����ý�岥�����ķֲ���ƽṹ����������ϸ��ƣ��ò������Ľ����Դ�Ծ��������Ż���FFmpegԴ���룬���ұ����еIJ������ṩ�˶��ⲿ����ͷ�Ŀ��ƹ��ܣ�����Ӧ�÷�Χ��Ϊ�㷺��
����������Ȼ����˴��п��ƹ��ܵ���ý�岥������ԭ����ʵ�֣������кܶ����� QoS�������Ż���������Ҫ��һ�����о���
- 1¥ ��ţ ������ 2015-3-30 4:33:50
- �����£����ݹ�����ȷ. ��ţ http://www.xmten.com/