ubuntu 14.04 LTS编译基于ffmpeg+sdl2.0的简单播放器
来源:互联网 发布:淘宝返现最多的app 编辑:程序博客网 时间:2024/04/29 01:53
ubuntu 14.04 LTS编译基于ffmpeg+sdl2.0的简单播放器
概要
我刚开始进入ffmpeg领域学习,最近参考最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0) 尝试自行编译调试simplest_ffmpeg_player.c(雷神源码里面是simplest_ffmpeg_player.cpp,自行修改下后缀,还有些ffmpeg宏参数变化要稍微修改下)来玩一下,编译过程中遇到了一些问题,主要和系统Ubuntu 14.04 LTS有关。
Ubuntu14.04 LTS由于某些特殊原因把ffmpeg工具和相关库从aptitude软件库中删除了,取而代之的是“fake ffmpeg”!所以编译simplest_ffmpeg_player.c过程中发现少了很多库,不止是ffmpeg显式链接的libavformat,libavcodec,libavutil等库,还有茫茫多的其他工具和库都没有了(按照ffmpeg基于ubuntu14.04官方安装文档安装了ffmpeg各种工具和库,编译过程中依旧报一堆错误)。我也是折腾了一段时间才找到了下面这个很实用的方法:基于ffmpeg源码搭建高效的编译调试环境。
搭建ffmpeg源码编译环境
打开参考文档Ubuntu CompilationGuide,有如下几点需要简单说明下:
- 在“Get the Dependencies”章节,除了要安装参考文档提到的所有依赖库,还要使用以下命令安装sdl2.0相关库:
sudo apt-get -y install libsdl2-dev
- 在“Compilation & Installation”章节,先忽略一开始提到的“Install FFmpeg”,“Reverting Changes Made by This Guide”这两个东东(其实就在该文档的后面)。按照文档创建目录ffmpeg_sources,ffmpeg_build,bin,之后按部就班的安装Yasm,libx264,libx265,libfdk-aac,libmp3lame,libopus,libvpx这些工具和库。
- 在“ffmpeg”章节,只要执行到如下configure命令即可(如果你想要安装ffmpeg整套工具,也可以执行后续的make和install命令,我们后面的编译环境用不到):
cd ~/ffmpeg_sourceswget http://ffmpeg.org/releases/ffmpeg-snapshot.tar.bz2tar xjvf ffmpeg-snapshot.tar.bz2cd ffmpegPATH="$HOME/bin:$PATH" PKG_CONFIG_PATH="$HOME/ffmpeg_build/lib/pkgconfig" ./configure \ --prefix="$HOME/ffmpeg_build" \ --pkg-config-flags="--static" \ --extra-cflags="-I$HOME/ffmpeg_build/include" \ --extra-ldflags="-L$HOME/ffmpeg_build/lib" \ --bindir="$HOME/bin" \ --enable-gpl \ --enable-libass \ --enable-libfdk-aac \ --enable-libfreetype \ --enable-libmp3lame \ --enable-libopus \ --enable-libtheora \ --enable-libvorbis \ --enable-libvpx \ --enable-libx264 \ --enable-libx265 \ --enable-nonfree
检查configure命令配置成功的标志之一是检查下doc/examples/pc-uninstalled/目录是否存在(该目录后续会用到):
ls doc/examples/pc-uninstalled/
到这里为止,我们已经把整个ffmpeg(+sdl2.0)源码编译环境配置好了,下面是在这个环境中编译simplest_ffmpeg_player.c的方法
编译simplest_ffmpeg_player.c
首先进入到ffmpeg源码的doc/examples/目录:
cd doc/examples/
之后把雷神源码里面的simplest_ffmpeg_player.c和bigbuckbunny_480x272.h265拷贝到该目录下,修改该目录下的Makefile如下:
diff --git a/doc/examples/Makefile b/doc/examples/Makefileindex af38159..ff1401a 100644--- a/doc/examples/Makefile+++ b/doc/examples/Makefile@@ -9,7 +9,7 @@ FFMPEG_LIBS= libavdevice \ CFLAGS += -Wall -g CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS)-LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS)+LDLIBS := $(subst SDL,SDL2, $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS)) EXAMPLES= avio_dir_cmd \ avio_reading \@@ -26,6 +26,12 @@ EXAMPLES= avio_dir_cmd \ scaling_video \ transcode_aac \ transcoding \+ simplest_ffmpeg_player \ OBJS=$(addsuffix .o,$(EXAMPLES))
之后就可以在该目录下执行编译命令:
PKG_CONFIG_PATH=pc-uninstalled make
编译完成就会看到可执行文件simplest_ffmpeg_player,run it:
./simplest_ffmpeg_player
播放器跑起来啦!
题外话
有了这个基础,你就可以把雷神源码包里面的simplest_ffmpeg_decoder.c,simplest_ffmpeg_decoder_pure.c,simplest_ffmpeg_helloworld.c,simplest_ffmpeg_player_su.c,simplest_video_play_sdl2.c全部放到这个环境下编译,稍微修改下cpp转换到c的一些参数兼容,以及ffmpeg一些宏参数的变化。
另外我也把修改保存到了自己的github上面,请参考 github
- ubuntu 14.04 LTS编译基于ffmpeg+sdl2.0的简单播放器
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的音频播放器 ver2 (采用SDL2.0)
- 最简单的基于FFMPEG+SDL的视频播放器 ver2 (采用SDL2.0)
- 基于SDL2.0和ffmpeg(2017,9,4版本)的简单视频播放器
- 演示基于SDL2.0+FFmpeg的播放器
- ffmpeg+sdl2.0编写最简单的视频播放器
- ffmpeg+sdl2.0做一个简单的音频播放器
- ffmpeg+sdl2.0做一个简单的音频播放器
- 基于ffmpeg+SDL2 实现简单rtsp播放器
- ffmpeg+SDL2 实现简单播放器
- ffmpeg SDL2.0播放音频
- [5] ffmpeg+SDL2实现的音频播放器V2.0(无杂音)
- android基于ffmpeg的简单视频播发器 编译ffmpeg
- pcl通过积分图来进行法线预测
- C++ 访问范围说明符
- 蓝桥杯-基础练习-十进制转十六进制
- 谈谈App混合开发
- listview使用
- ubuntu 14.04 LTS编译基于ffmpeg+sdl2.0的简单播放器
- 3D touch功能的封装
- http缓存的使用
- Linux free 命令详解
- Android 多线程断点下载的实现方法
- 仿微信语音聊天
- 100天JAVA学习计划06-多态
- [my]coolplayer.com的信息
- POI操作EXCEL(一)