SDL_ffmpeg - Rodando vídeos usando SDL
Rodando vídeos usando o SDL e o FFmpeg com o SDL_ffmpeg no WINDOWS
Eu pensei que seria mais fácil, o maior problema é a falta de um tutorial
(inclusive na página do SDL_FFmpeg).
Antes de mais nada, tenha o SDL instalado, caso contrário siga o Post
SDL + Eclipse C++.
Baixe o SDL_ffmpeg
SDL_ffmpeg
Procure na parte de Downloads e baixe a versão mais recente.
Vamos fazer tudo manualmente.
Descompacte tudo.
Coloque o arquivo
SDL_ffmpeg.lib da pasta lib(descompactada)
na pasta lib do MinGW
Coloque o arquivo
SDL_ffmpeg.h
da pasta SDL, dentro da pasta Include (descompactada)
na pasta SDL, dentro da pasta Include do MinGW.
e por último
SDL_ffmpeg.c
Coloque junto do SDL_ffmpeg.h ( na pasta do SDL ).
Pronto, menos um problema.
Agora baixe o ffmpeg
ffmpeg
Vá em download source code.
estará em tar.gz, nada que o winrar não abra.
descompacte a pasta ffmpeg na pasta
include do MinGW
se ela tiver com o nome de ffmpeg-0.5 por exemplo, eu sugiro que você
renomeie para ffmpeg apenas por questão de padronização.
Pronto, menos dois problemas.
Agora a parte importante.
Abra a sua IDE ( Eclipse no meu caso )
Crie um novo projeto, blá blá blá
e use o código de exemplo que vem com o SDL_ffmpeg na pasta examples.
example.c
Adicione os seguintes parâmetros
-lmingw32
-lSDLmain
-lSDL_ffmpeg
-lSDL
Mande compilar.
Problemas encontrados por mim.
1 - Includes
Conserte coisas do tipo
#include <SDL/SDL.h> ao invés de "SDL.h"
#include <ffmpeg/libavformat/avformat.h> ao invés de avformat.h
2 - problemas de arquivos não encontrados.
Eu acho que o ffmpeg mudou alguns arquivos de pasta e esqueceu de mudar as referências.
avformat.h, em ffmpeg/libavformat
mude
#include "libavcodec/avcodec.h"
para
#include "../libavcodec/avcodec.h"
avcodec.h, em ffmpeg/libavcodec
mude
#include "libavutil/avutil.h"
para
#include "../libavutil/avutil.h"
swscale.h, em ffmpeg/libswscale
mude
#include "libavutil/avutil.h"
para
#include "../libavutil/avutil.h"
Acho que eram só esses.
Mande compilar.
3 - Outros problemas.
Coloque os Dlls contidos na pasta examples do SDL_ffmpeg.rar
na pasta do executável gerado pelo Eclipse.
avcodec-52.dll
avformat-52.dll
avutil-50.dll
SDL_ffmpeg.dll
e não esqueça do
SDL.dll
4 - Entry Point
Caso você tenha problemas de entry point não encontrado
da função SDL_ffmpegGetFrameRate no arquivo SDL_ffmpeg.dll.
Comente as duas linhas que a função SDL_ffmpegGetFrameRate() aparece.
Compile seu projeto denovo.
Não execute o arquivo, pois nada acontecerá.
Arraste um arquivo de vídeo para abrir com ele.
e provavelmente ele vai rodar o vídeo.
Isso é só uma mera utilidade desta biblioteca, dê uma olhada no arquivo record.exe,
abra ele com um arquivo.avi, por exemplo, e depois pegue esse mesmo arquivo e abra
com o example.exe.
Você ficará surpreso.
Eu pensei que seria mais fácil, o maior problema é a falta de um tutorial
(inclusive na página do SDL_FFmpeg).
Antes de mais nada, tenha o SDL instalado, caso contrário siga o Post
SDL + Eclipse C++.
Baixe o SDL_ffmpeg
SDL_ffmpeg
Procure na parte de Downloads e baixe a versão mais recente.
Vamos fazer tudo manualmente.
Descompacte tudo.
Coloque o arquivo
SDL_ffmpeg.lib da pasta lib(descompactada)
na pasta lib do MinGW
Coloque o arquivo
SDL_ffmpeg.h
da pasta SDL, dentro da pasta Include (descompactada)
na pasta SDL, dentro da pasta Include do MinGW.
e por último
SDL_ffmpeg.c
Coloque junto do SDL_ffmpeg.h ( na pasta do SDL ).
Pronto, menos um problema.
Agora baixe o ffmpeg
ffmpeg
Vá em download source code.
estará em tar.gz, nada que o winrar não abra.
descompacte a pasta ffmpeg na pasta
include do MinGW
se ela tiver com o nome de ffmpeg-0.5 por exemplo, eu sugiro que você
renomeie para ffmpeg apenas por questão de padronização.
Pronto, menos dois problemas.
Agora a parte importante.
Abra a sua IDE ( Eclipse no meu caso )
Crie um novo projeto, blá blá blá
e use o código de exemplo que vem com o SDL_ffmpeg na pasta examples.
example.c
Adicione os seguintes parâmetros
-lmingw32
-lSDLmain
-lSDL_ffmpeg
-lSDL
Mande compilar.
Problemas encontrados por mim.
1 - Includes
Conserte coisas do tipo
#include <SDL/SDL.h> ao invés de "SDL.h"
#include <ffmpeg/libavformat/avformat.h> ao invés de avformat.h
2 - problemas de arquivos não encontrados.
Eu acho que o ffmpeg mudou alguns arquivos de pasta e esqueceu de mudar as referências.
avformat.h, em ffmpeg/libavformat
mude
#include "libavcodec/avcodec.h"
para
#include "../libavcodec/avcodec.h"
avcodec.h, em ffmpeg/libavcodec
mude
#include "libavutil/avutil.h"
para
#include "../libavutil/avutil.h"
swscale.h, em ffmpeg/libswscale
mude
#include "libavutil/avutil.h"
para
#include "../libavutil/avutil.h"
Acho que eram só esses.
Mande compilar.
3 - Outros problemas.
Coloque os Dlls contidos na pasta examples do SDL_ffmpeg.rar
na pasta do executável gerado pelo Eclipse.
avcodec-52.dll
avformat-52.dll
avutil-50.dll
SDL_ffmpeg.dll
e não esqueça do
SDL.dll
4 - Entry Point
Caso você tenha problemas de entry point não encontrado
da função SDL_ffmpegGetFrameRate no arquivo SDL_ffmpeg.dll.
Comente as duas linhas que a função SDL_ffmpegGetFrameRate() aparece.
Compile seu projeto denovo.
Não execute o arquivo, pois nada acontecerá.
Arraste um arquivo de vídeo para abrir com ele.
e provavelmente ele vai rodar o vídeo.
Isso é só uma mera utilidade desta biblioteca, dê uma olhada no arquivo record.exe,
abra ele com um arquivo.avi, por exemplo, e depois pegue esse mesmo arquivo e abra
com o example.exe.
Você ficará surpreso.