ios ffmepg 解码mp3成功之后怎么处理
1个回答
展开全部
IOS平台下的ffmpeg编译简介,写在经历了n翻折腾之后。首先感谢Cocoachina中众多的资源
IOS下基于H264的音视频网传前后走通花了差不多1个多月时间。
先说下总的流程如下:
a)从网络接收H264视频数据 adpcm音频数据
b)网络数据输入到ffmpeg解码库 音频数据输入到音频解码库(音频解码库为自己所写)
c)ffmpeg解码出YUV420P视频数据 音频解码出PCM数据
d)将YUV420P数据转换为RGB24图像 用UIImageview输出 用OPENGL ES输出也可以(两种方法均验证过可行)
e)将音频PCM数据输入OPEN AL中输出
f)以上为整个流程,d1在iphone4上可以达到16桢 左右的效率
下面来说说FFMPEG部分。刚开始接触ffmpeg的时候遇到的第一个问题就是编译问题。
1 下载FFMPEG代码,该步比较简单可在ffmpeg官方网站上下载(我下的是0.6.5的,下了0.10的没编译过部分arm指令)
2 用gcc进行编译,写配置信息。该步骤浪费了太多的精力和时间,主要是没有在ios平台下的经验导致。
1)编译的时候不明白版本问题,编译后才发现每次编译需要制定不同的处理器模式为3种:armv6 armv7 i386版本
2)configure配置信息,前期犯了各种错误。还是对于ffmpeg的configure配置参数步了解导致。另外用gcc编译的经验也步丰富。
最终领悟出:配置信息主要为配置gcc的位置和汇编的编译器位置。
configure命令如下(该段配置信息为iFrameExtractor中。该demo也让我学习到很多知识,需要的可以在网上搜索下载):
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-avfilter --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic
配置成功后 make即可编译出armv7版本的lib*。a文件。
到此既可以生成ios下需要的ffmpeg静态库文件,需要用的时候拖入到项目中即可。
另外还需要添加libbz 、libz的framework
补充:在iOS6中编译出的。a的库在armv7s下编译目前有问题,可以修改target的Valid Architectures只支持Armv7去掉Armv7s
IOS下基于H264的音视频网传前后走通花了差不多1个多月时间。
先说下总的流程如下:
a)从网络接收H264视频数据 adpcm音频数据
b)网络数据输入到ffmpeg解码库 音频数据输入到音频解码库(音频解码库为自己所写)
c)ffmpeg解码出YUV420P视频数据 音频解码出PCM数据
d)将YUV420P数据转换为RGB24图像 用UIImageview输出 用OPENGL ES输出也可以(两种方法均验证过可行)
e)将音频PCM数据输入OPEN AL中输出
f)以上为整个流程,d1在iphone4上可以达到16桢 左右的效率
下面来说说FFMPEG部分。刚开始接触ffmpeg的时候遇到的第一个问题就是编译问题。
1 下载FFMPEG代码,该步比较简单可在ffmpeg官方网站上下载(我下的是0.6.5的,下了0.10的没编译过部分arm指令)
2 用gcc进行编译,写配置信息。该步骤浪费了太多的精力和时间,主要是没有在ios平台下的经验导致。
1)编译的时候不明白版本问题,编译后才发现每次编译需要制定不同的处理器模式为3种:armv6 armv7 i386版本
2)configure配置信息,前期犯了各种错误。还是对于ffmpeg的configure配置参数步了解导致。另外用gcc编译的经验也步丰富。
最终领悟出:配置信息主要为配置gcc的位置和汇编的编译器位置。
configure命令如下(该段配置信息为iFrameExtractor中。该demo也让我学习到很多知识,需要的可以在网上搜索下载):
./configure --disable-doc --disable-ffmpeg --disable-ffplay --disable-ffserver --disable-avfilter --enable-cross-compile --arch=arm --target-os=darwin --cc=/Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc --as='gas-preprocessor/gas-preprocessor.pl /Developer/Platforms/iPhoneOS.platform/Developer/usr/bin/gcc' --sysroot=/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk --cpu=cortex-a8 --extra-cflags='-arch armv7' --extra-ldflags='-arch armv7 -isysroot /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS5.0.sdk' --enable-pic
配置成功后 make即可编译出armv7版本的lib*。a文件。
到此既可以生成ios下需要的ffmpeg静态库文件,需要用的时候拖入到项目中即可。
另外还需要添加libbz 、libz的framework
补充:在iOS6中编译出的。a的库在armv7s下编译目前有问题,可以修改target的Valid Architectures只支持Armv7去掉Armv7s
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询