BLOG main image
분류 전체보기 (77)
프로젝트 (8)
IT소문 (9)
영화가주는인생 (5)
OpenAPI (9)
DBMS (5)
JAVA (16)
IPhone/Object-C (9)
안드로이드 (0)
WEB etc (8)
Server (1)
Michael Kors Handbags on Sale
Michael Kors Handbags on Sale
Nike Roshe Run
Nike Roshe Run
michael kors handbags outlet
michael kors handbags outlet
outlet de zapatillas nike
outlet de zapatillas nike
Cheap beats by dre uk
Cheap beats by dre uk
2,355,323 Visitors up to today!
Today 40 hit, Yesterday 127 hit
daisy rss
tistory
'FLV'에 해당되는 글 2건
2011.09.11 12:11
java를 사용해서 실시간으로 업로드되는 영상을 ffmpeg를 사용해서 변화시키는 부분입니다.
ffmpeg는 로컬로 돌아가는 프로그램이라서 java에서 
해당 프로그램을 실행을 시켜야 합니다.

윈도우라면 exe파일을 실행을 시켜야 한다는 것인데
java에서는 ProcessBuilder 라는 놈이 사용되고 있습니다.

순서는  A폴더에  파일이 들어왔는지 실시간으로 체크하고 
ffmpeg로 인코딩하고 완료가되면 B폴더로 옮기게 됩니다.

public String convert() {


String ffmpegPath = "ffmpeg 파일이 있는 경로";    예) /work/ffmpeg
String fOriginal = "/work/upload.mp4";  //실시간으로 업로드되는 파일
String fResult = "/work/upload.flv";      // 인코딩하고 저장 할 파일위치

String[] cmdLine = new String[]{ffmpegPath,

                                               "-i",                           // 변환시킬 파일위치

                                               fOriginal,      

                                               "-ar",

                                               "44100",                

                                               "-ab",

                                               "32",                      

                                               "-s",

                                               "500x300",     //화면 사이즈

                                               "-b",

                                               "768k",          //비트레이트

                                               "-r",

                                               "24",           //영상 프레임

                                               "-y",

                                               "-f",

                                               "flv",            // flv파일 형태로 출력

                                               fResult};  // 저장하는 위치입니다.
 

// 프로세스 속성을 관리하는 ProcessBuilder 생성.
ProcessBuilder pb = new ProcessBuilder(cmdLine);
pb.redirectErrorStream(true);
Process p = null;
 try
        // 프로세스 작업을 실행
        
p = pb.start();
} catch (Exception e) {         
     e.printStackTrace();

     p.destroy();
     return null;
}

exhaustInputStream(p.getInputStream());   // 자식 프로세스에서 발생되는 inputstrem를 소비시켜야합니다.


 
 try {

        // p의 자식 프로세스의 작업이 완료될 동안 p를 대기시킴
        p.waitFor();

 } catch (InterruptedException e) {

         p.destroy();

 }


// 정상 종료가 되지 않았을 경우

 if (p.exitValue() != 0) {

       System.out.println("변환 중 에러 발생");

       return null;

 }

   // 변환을 하는 중 에러가 발생하여 파일의 크기가 0일 경우

  if (fResult.length() == 0) {

        System.out.println("변환된 파일의 사이즈가 0임");

         return null;

  }

  p.destroy();

}

private
void exhaustInputStream(final InputStream is) {

    // InputStream.read() 에서 블럭상태에 빠지기 때문에 따로 쓰레드를 구현하여 스트림을 소비한다
         try {

                BufferedReader br = new BufferedReader(new InputStreamReader(is));

                String cmd = null;

                while((cmd = br.readLine()) != null) { // 읽어들일 라인이 없을때까지 계속 반복

                   //System.out.println(cmd);

                }

                br.close();

             } catch(IOException e) {

                e.printStackTrace();

             }

   }

public static void main(String[] args) 
{

 File f = new File("실시간으로 올라오는 파일위치");

if(f.exists()){
     convert();




단일 프로세스보다는 스레드로 돌리면 더 좋겟죠?
인코딩을 하게되면 cpu를 많이 잡아 먹습니다. ffmpeg가 아니더라도 막 올라가더군요..
 
이제 이 파일을 window 에서는 service로 linux에서는 crontab에 들록되어
계속해서 돌려주면 되겠습니다.



 


 
 
이전 댓글 더보기
Michael Kors | 2012.12.18 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
Your articles always have insights, very good,this is so ought to be an embarrassment to white liberals who are die. Thanks for sharing informative post. beautiful !!!
toms womens movember | 2012.12.19 09:41 신고 | PERMALINK | EDIT/DEL | REPLY
Une journaliste du Monde, http://www.discounttomssshoes.com/ purple toms, qui tente de se rendre en Tunisie depuis une semaine, http://www.discounttomssshoes.com/ toms code, n'a pas été autorisée par les autorités tunisiennes à entrer dans le pays, http://www.discounttomssshoes.com/ sale online toms, annonce le quotidien dans son édition datée de vendredi, http://www.discounttomssshoes.com/ toms ash maudie.
Related articles:


http://www.playyeah.com/viewthread.php?tid=589256&extra= http://www.playyeah.com/viewthread.php?tid=589256&extra=

http://redness.bbspace.org/viewthread.php?tid=16355&extra=page=1&frombbs=1 http://redness.bbspace.org/viewthread.php?tid=16355&extra=page=1&frombbs=1

http://hgtest2.hg13.huihost.com/thread-1049783-1-1.html http://hgtest2.hg13.huihost.com/thread-1049783-1-1.html
Miu Miu Boots | 2012.12.19 11:51 신고 | PERMALINK | EDIT/DEL | REPLY
코드자동완성 무료호스팅 블랙캣 Color Graphing Calculator enables the user to assign colors to various graphing objects like dotted lines, curves, bars, grid line rewtryreyuy
Jimmy Choo | 2012.12.24 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
수준의 작업이 가능하면서도 무척 배우기 쉽다. 또한 "문서"라는 작업 대상에 적합한 각종 API들이 제공되기 때문에 훨씬 더 쉽게 dfsadeeqrtrt
Jimmy Choo | 2012.12.24 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
수준의 작업이 가능하면서도 무척 배우기 쉽다. 또한 "문서"라는 작업 대상에 적합한 각종 API들이 제공되기 때문에 훨씬 더 쉽게 dfsadeeqrtrt
business telephone lines | 2013.01.03 18:49 신고 | PERMALINK | EDIT/DEL | REPLY
It’s a great site to see. That will help for improvisation of me. Will definitely marked as Bookmark.
moncler online | 2013.01.05 16:56 신고 | PERMALINK | EDIT/DEL | REPLY
Le ministre de l'Intérieur Brice Hortefeux, http://www.moncleroutletespain.com/ moncler outlet, condamné en juin 2010 pour avoir tenu des propos jugés "outrageants" envers les personnes d'origine arabe, http://www.moncleroutletespain.com/ http://www.moncleroutletespain.com/, sera rejugé le 9 juin, http://www.moncleroutletespain.com/ moncler chaquetas, a décidé mercredi la cour d'appel de Paris, http://www.moncleroutletespain.com/ moncler online.Related articles:


http://essay119.tistory.com/1482 http://essay119.tistory.com/1482

http://hiddenchampion.tistory.com/741 http://hiddenchampion.tistory.com/741
coach online outlet | 2013.03.01 14:59 신고 | PERMALINK | EDIT/DEL | REPLY
http://www.coachoutletvipstores.com/ coach online outlet
http://www.coachoutletonlinevipstore.com/ coach outlet online
discount oakley sunglasses | 2013.03.18 14:14 신고 | PERMALINK | EDIT/DEL | REPLY
Great and nice post thank you.
Shearrofeborn | 2013.07.30 20:57 신고 | PERMALINK | EDIT/DEL | REPLY

The forex industry remaining the biggest industry in the planet is also probably the most beneficial one as well. Practically anybody may become a trader and make massive money on this line, delivered these are decided good enough, and consider ample initiatives to receive by themselves nicely acquainted using the finer nuances with the trading course of action. Just as during the circumstance with other streams of life, it will not be a misnomer to state how the online has also substantially adjusted the extremely encounter in the forex trading process. No longer do you need to journey prolonged distances to trade in forex. Because of the internet, you can now do that sitting down while in the confines of the dwelling. Forex forex on the web trading is often a subject which is flourishing currently and it isn't surprising thinking of the volume of lucrative prospects the field presents.It is often preferable you equip oneself with the many requisite expertise wi
| 2013.09.11 23:55 | PERMALINK | EDIT/DEL | REPLY
비밀댓글입니다
http://lvneverfullbagprice.com | 2014.01.10 10:06 신고 | PERMALINK | EDIT/DEL | REPLY
thank you for share!
Emomynurn | 2014.10.23 05:44 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.10.28 21:31 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Nivalasn | 2014.10.30 11:58 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.10.31 06:48 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Emomynurn | 2014.11.09 06:11 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
adaroamurgy | 2014.12.03 03:13 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
dexuanesn | 2014.12.29 16:13 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
laurasmithejue | 2015.01.15 09:39 | PERMALINK | EDIT/DEL | REPLY
이용약관위배로 관리자 삭제된 댓글입니다.
Name
Password
Homepage
Secret
2011.08.17 17:18
안녕하세요.
동영상을 돌리는 프로젝트를 진행하고 계신가요?
저는 진행하고 있습니다.ㅋ 이래저래 자료를 찾다가, FFMPEG 라는 넘이 ..아주 좋은 프로그램이 있더라구요.
그걸 응용해서 자동으로 인코딩하는 프로그램을 만들어 봤는데요.

동영상을 플래쉬영상(FLV) 파일로 변환하여 웹에서는 플래쉬(SWF)로 보고.. 모바일에서는 mpeg파일로 변환하여
영상을 볼 수 있게 해야 합니다.
사람들이 올리는 동영상 종류는 다양하겠죠..

문제는 어찌 flv,mp4 파일로 변환하느냐가 문제입니다.
제가 구현한 해결방법은 ffmpeg 라이브러리를 사용하는 것입니다.

여기서 다운로드 : http://www.ffmpeg.org/  (window,linux 용 존재)


자~ 그러면 준비는 완료!
 이제 실제 프로그램을 만들어 보겠습니다.

전체적인 흐름은

1. 사용자가 업로드하는 동영상 파일을 A폴더에 넣습니다.
2. 실시간으로 A폴더에 동영상 파일이 들어왔는지 감지한다. ( JAVA 로 짜겠습니다. )
3. ffmpeg 를 실행해서 B폴더로 FLV,MP4 파일을 떨군다.
4. A폴더에 있던 사용자 파일은 삭제한다.
5. 완료

ffmpeg 옵션만 이해한다면 그리 어렵지 않다는걸 아실겁니다. 제가 워낙에 단순하게 코딩하는 스타일이라..ㅋㅋ

아래와 같이 옵션이 있습니다. 참고 하시구요.
다은 시간에는 간단하게 1번~5번까지 java로 짜서 올리겠습니다.



참고 1)

영화  flv 파일로 변경
ffmpeg -i "c:\input.avi" -ar 44100 -ab 32 -s 500x300 -b 768k -r 24 -f flv "c:\output.flv"


음악
c:\ffmpeg -i c:\_chiwawad\song.mp3 -t 00:00:05 -acodec wmav2 -ab 64000 c:\_thumbnail\snap_song.wma

영화
ffmpeg -i lost02.avi -t 00:00:05 -s 320x240 -r 200 -b 250 -ar 22050 -ab 48 lost02_512k.flv

옵션
-i = Input file name
-ar = Audio sampling rate in Hz (audio sampling frequency. default = 44100 Hz)
-ab = Audio bitrate in kbit/s (default = 64k)
-an = Disable audio recording.
-f = format (Force format)
-s = Frame size (가로x세로)
-t = 레코딩 시간 (hh:mm:ss[.xxx])
-ss = 이미지 캡쳐 시간 (초)
-fs = 파일 사이즈 제한
-vframes = 레코딩하는 비디오 프레임의 수
-r = Frame Rate (Hz, Default=25)


참고 2)

http://rodrigopolo.com/ffmpeg/cheats.html <<< 여기 사이트도 참고


참고 3) 오리지날
 
http://www.ffmpeg.org/

행적 | 2011.08.24 13:55 신고 | PERMALINK | EDIT/DEL | REPLY
제가 찾던 프로젝트네요! 빨리빨리 강좌 올려주세요 ㅎ
한국에 니코동같은 사이트를 만드려고 공부하고 있었는데 딱 좋은 강좌를 찾았네요 ㅎ
닥컴마니아 | 2011.08.26 12:28 신고 | PERMALINK | EDIT/DEL
안녕하세요. 행적님
다다음주에 프로젝트가 오픈하는데 오픈과 동시에
해당 내용도 오픈시키겠습니다.
감사합니다. ~^^
대왕감자 | 2011.11.02 12:02 신고 | PERMALINK | EDIT/DEL | REPLY
오랜만에와서 눈팅하고갑니다~_~ 어려운것도 쉽게설명하시는거 같군영
닥컴마니아 | 2011.11.02 13:49 신고 | PERMALINK | EDIT/DEL
대왕감자님 안녕하세요~^^
칭찬해주셔서 감사합니다.
앞으로도 자주 뵙으면 좋겠습니다.~
coach outlet online | 2012.11.29 12:39 신고 | PERMALINK | EDIT/DEL | REPLY
This is my first time i visit here. I discovered so numerous interesting stuff in your weblog especially its discussion. From the tons of comments on your articles, I guess I am not the only one having all of the enjoyment here! maintain up the great work.
Tiffany & co outlet | 2012.12.18 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
From your article, you can learn a lot of philosophy of life. It’s actually a great and helpful piece of info. I’m satisfied that you shared this helpful information with us.
Michael Kors Handbags Outlet | 2012.12.18 11:15 신고 | PERMALINK | EDIT/DEL | REPLY
The world is like a mirror: Frown at itand it frowns at you; smile, and it smiles too. and these ideas are worth learning from. This article of the classic collection.
bollywood saree | 2013.01.17 17:28 신고 | PERMALINK | EDIT/DEL | REPLY
Very happy to see your article, I very much to like and agree with your point of view. Thank you for sharing.Welcome to look at my website and blog articles.Hope we can become good friends, and exchange and to help each other! Thanks!!
<a href="http://www.paridhan.co.in/collections/product/8/34/0/womens-wear/bollywood-saree">bollywood saree</a>
Name
Password
Homepage
Secret
prev"" #1 next

티스토리 툴바