由于各种原因,多媒体在不影响效率的情况下完成任务从来都不容易。Ffmpeg每天都在努力改进它。它支持不同格式的编解码器和容器。
现在要回答如何使用这个库的问题,我想说在这里编写它并不是那么简单。但我可以用以下方法指导你。
1)在源代码的ffmpeg目录中,有output_example.c或api_example.c。在这里,您可以看到编码/解码完成的代码。您将了解应该在ffmpeg中调用哪个API。这是你的第一步。
2) Dolphin player是一个面向Android的开源项目。目前它有bug,但开发人员正在持续工作。在该项目中,您已经准备好了整个设置,您可以使用它继续您的调查。这里有一个来自code.google.com的项目链接,或者在终端中运行命令“git clone https://code.google.com/p/dolphin-player/”。您可以看到两个名为P和P86的项目。你可以用它们中的任何一个。
我想提供的额外提示是,当您构建ffmpeg代码时,在build.sh中,您需要启用您想使用的格式的muxers/demuxers/编码器/解码器。否则相应的代码将不包含在库中。我花了很长时间才意识到这一点。所以我想和你分享。
基本要素:
当我们说一个视频文件,例如:avi,它是音频和视频的组合
视频文件=视频+音频
视频=编解码器+ Muxer + Demuxer
codec =编码器+解码器
=>视频=编码器+解码器+ Muxer + Demuxer(Mpeg4 + Mpeg4 +avi +avi - avi容器的示例)
音频=编解码器+ Muxer + Demuxer
codec =编码器+解码器
=>音频=编码器+解码器+ Muxer + Demuxer(mp2 + mp2 + avi + avi - avi容器示例)
编解码器(名称来源于en*co*der/*dec*oder的组合)只是格式的一部分,它定义了用于编码/解码帧的算法。AVI不是一个编解码器,它是一个使用Mpeg4的视频编解码器和mp2的音频编解码器的容器。
Muxer/demuxer用于在编码/解码时从文件中合并/分离帧。
所以如果你想使用avi格式,你需要启用视频组件+音频组件。
Ex,对于avi,您需要启用以下功能。
mpeg4编码器,mpeg4解码器,mp2编码器,mp2解码器,avi muxer, avi demuxer。
噗嗤...
以编程方式build.sh应该包含以下代码:
--enable-muxer=avi --enable-demuxer=avi (Generic for both audio/video. generally Specific to a container)
--enable-encoder=mpeg4 --enable-decoder=mpeg4(For video support)
--enable-encoder=mp2 --enable-decoder=mp2 (For Audio support)
希望在这之后我没有让你更困惑…
谢谢,需要任何帮助,请告诉我。