본문 바로가기

MultiMedia Framework23

CentOS에서 ffmpeg 설치 CENTOS에서 아래와 같은 방법으로 ffmpeg을 빌드하고 사용할 수 있다. 1. 의존 관계가 있는 library 다운로드 및 업데이트ffmpeg을 컴파일 하기 위한 dependency가 있는 라이브러리들을 설치한다. 당연히 관리자 권한으로 설치를 진행해야 한다.$> yum install autoconf automake cmake freetype-devel gcc gcc-c++ git libtool make mercurial nasm pkgconfig zlib-devel 2. ffmpeg_sources 폴더 생성 ffmpeg과 관련된 소스를 다운로드 받을 폴더를 생성한다.$> mkdir ~/ffmpeg_sources 3. Yasm 설치$> cd ~/ffmpeg_sources$> git clone --d.. 2015. 10. 20.
이미지 사이즈 변경하기 $> ffmpeg -i input.jpg -vf scale=320:240 output.jpg 위와 같이 명령어를 실행하면 320x240 사이즈의 output.jpg 파일을 얻을 수가 있다. jpg 대신 avi의 동영상 파일을 input으로 집어넣어도 320x240 사이즈의 동영상 resizing을 할 수가 있다. 2015. 10. 14.
동영상 파일에서 비디오만 출력하기 $> ffmpeg -i [파일 경로] -y -ss 00:00:01 -vcodec libx264 -s:v 720x400 -b 500k -r 30 -aspect 16:9 -t 60 -an [out 파일명] -i : 비디오를 추출할 원본 동영상 파일을 지정한다. (스트리밍 데이터일 경우에는 스트리밍 주소를 입력) -y : output 파일에 대해 동일한 파일이 존재할 경우 덮어쓰기 여부 설정. -y 옵션을 주면 덮어쓰기가 된다. -ss : 동영상으로부터 비디오 영상을 추출하고 싶은 시간대. ex) 00:00:05 (5초 후의 동영상 파일을 비디오로 추출해라) -vcodec : 비디오 코덱 정보 -s:v : 비디오 사이즈 -b : 비디오 bitrate. 초당 얼마만큼의 bit를 처리할 것인지를 결정. -r : .. 2015. 10. 13.
mp4 영상에서 오디오 추출하기 $> ffmpeg -y -i [mp4 파일명] -vn -acodec libmp3lame -ar 44.1k -ac 2 -ab 128k [mp3 output 파일명] -y : output 파일에 대해 동일한 파일이 존재할 경우 덮어쓰기 여부 설정. -y 옵션을 주면 덮어쓰기가 된다. -i : 오디오를 추출할 원본 동영상 파일을 지정한다. -vn : 비디오를 추출할 필요가 없을 때 사용한다. 반대로 오디오를 추출할 필요가 없을때에는 -an을 사용한다. -acodec : 오디오 코덱을 지정한다. 위에서는 mp3 오디오 코덱을 지정하였다. -ar : 오디오 sampling rate를 지정한다. sampling rate가 과연 몰까?? 오디오 데이터는 연속된 값을 가지고 있기 때문에 이를 디지털로 표현하기 위해 대.. 2015. 7. 9.
Stream Seek 이번 포스팅에서는 스트림 위치 값 등을 얻기 위해 어떻게 파이프라인에 요청을 하는 지와 스트림의 위치를 어떻게 조작하는지에 대해 살펴볼 것이다. 일단 코드에 앞서 GstQuery 라는 객체가 새롭게 등장하는데, 이 GstQuery는 element나 pad에게 정보를 요청하기 위해 사용된다.이전에는 파이프라인이 구성되면 EOS나 ERROR가 발생하기 전까지는 메인 function에서 계속 대기하는 것 위주로 설명을 하였는데, 이번 포스팅에서는 주기적으로 파이프라인을 깨워서 스트림 위치에 대한 정보를 요청하고 화면에 해당 위치를 출력하는 프로그램을 짤 것이다. 실행해보면 화면이 출력되고, console 창에 스트림 위치 값이 계속 변하는 것을 볼 수 있다. typedef struct _CustomData{ .. 2015. 3. 24.
동적으로 파이프라인 구축하기 이번 포스팅을 통해 동적으로 파이프라인을 구축하는 방법을 살펴볼 수가 있다. 언제나 그렇듯이 실행 ㄱㄱ $> g++ -o tutorial3 tutorial3.c `pkg-config --cflags --libs gstreamer-1.0`$>./tutorial3Pipeline state changed from NULL to READY:Received new pad 'src_0' from 'source': It has type 'video/x-raw' which is not raw audio. Ignoring.Received new pad 'src_1' from 'source': Link succeeded (type 'audio/x-raw').Pipeline state changed from READY to.. 2015. 3. 21.
수동으로 파이프라인 구축하기 전 포스팅에는 uri를 가져와서 playbin에 담은 후 gst_parse_launch를 통해 pipeline을 구축하는 방법을 설명했다. 이번에는 직접 pipeline을 구축해 보려고 한다. 이번에도 컴파일을 한 후 재생을 해보자. $> g++ -o tutorial2 tutorial2.c `pkg-config --cflags --libs gstreamer-1.0` 예전에 화면 조정 시간에 많이 봤던 장면이네..코드를 살펴보자.. gst_init(&argc, &argv); 이전 포스팅에서 설명했으니 이번엔 skip.. source = gst_element_factory_make("videotestsrc", "source");sink = gst_element_factory_make("autovideosin.. 2015. 3. 20.
hello world 찍기 대부분의 언어들은 Hello world를 찍어보는 것을 시작으로 프로그래밍을 이야기한다. 그럼 과연 gstreamer에서도 hello world를 찍어볼 수 있을까?여기서는 hello world를 화면에 찍어보기 보다는 gstreamer에서 hello world 격인 멀티미디어 재생을 해보려고 한다.해당 Tutorial은 gstreamer sdk 문서를 참조하였다. 해당 코드를 우선 실행시켜보자. 아래와 같이 컴파일을 하면 tutorial1 이라는 실행 파일이 생성된다. $> g++ -o tutorial1 tutorial1.c `pkg-config --cflags --libs gstreamer-1.0` 이제 생성된 tutorial1을 실행해보자. $> ./tutorial1 화면이 잘 재생되는가??? 이제.. 2015. 3. 19.
ffmpeg에서 이미지 추출하기 ffmpeg을 통해 비디오 영상에서 이미지를 추출할 수 있다. $> ffmpeg -ss [시간] -i [파일명] -y -vframes 1 -an -s [사이즈] [이미지 파일 이름] 시간(-ss) : 동영상 파일로부터 이미지를 추출하고 싶은 시간대. ex) 00:00:05 (5초 후의 영상을 이미지로 뽑아라) 파일명(-i) : 동영상 파일 경로 ex) test.mp4사이즈(-s) : 추출할 이미지 사이즈 ex) 1920x1080, 720x405이미지 파일 이름 : 결과 이미지 파일명 ex) test.jpg옵션(-y) : 동일 파일이 존재할땐 덮어쓴다.프레임 인덱스(-vframes) : 추출한 프레임 수오디오(-an) : 오디오를 끄는 기능. 파일에서 영상만 뽑아 쓰고 싶을 경우 -ss 옵션을 쓸 경우에는.. 2014. 12. 13.