2009-03-06 6 views
2

FFMPEG를 사용하여 명령 줄에서 비디오 파일을 변환하는 데 몇 가지 문제가 있습니다. CentOS 서버를 사용하고 있지만 불행히도 쉘 액세스 권한이 없습니다. 나는 다음과 같은 명령을 사용하여 사운드를 억제 할 때, 모든 것이 완벽하게 작동FFMPEG - 사운드를 사용할 때 파일 크기가 0입니다.

는 (물론 제외하고, 소리가 없습니다!) 그러나

ffmpeg -i $infile -an test.flv 

, 나는 모두의 사운드 어떤 방법을 사용하려고 할 때 출력되는 파일의 파일 크기는 0kb입니다.

FFMPEG는 libmp3lame 및 libfaac을 지원하도록 컴파일되며 필요한 코덱이 설치됩니다. 다음은 서버의 FFMPEG 구성입니다.

FFmpeg 버전 SVN-runKNOWN, Copyright (c) 2000-2007 Fabrice Bellard, et al. 구성 : --prefix =/usr --libdir =/usr/lib --mandir =/usr/share/man --incdir =/usr/include/ffmpeg - 사용 가능 libmp3lame - 사용 가능 libogg - 사용 가능 -libvorbis - 사용 가능 libogg - 사용 가능 libtheora - 사용 가능 libfaad - 사용 가능 libfaac - 사용 가능 libgsm - 사용 가능 -xvid - 사용 가능 -x264 - 사용 가능 liba52 - 사용 가능 liba52bin - 사용 가능 -pp --enable-shared --enable-pthreads - enable-gpl --disable-strip

여기 제가 시도한 명령의 아주 작은 샘플은 0KB 파일 크기의 결과입니다 :

ffmpeg -i $infile test.flv 
ffmpeg -i $infile -vcodec copy -acodec ac3 test.flv 
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec mp3 test.flv 
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec copy $outfile 
ffmpeg -vcodec copy -acodec copy -i $infile -vcodec copy -acodec aac $outfile 

사람이 여기에 무슨 일이 일어나고 있는지, 내가 정말 고맙겠에 대한 힌트를 제공 할 수 있다면!

편집 - 내가 파일

는 FFmpeg 버전 SVN - rUNKNOWN, 저작권 (C) 2000-2007 파브리스 벨라 드, 등으로 열려진 리디렉션 할 때 여기 결과입니다. 구성 : --prefix =/usr --libdir =/usr/lib --mandir =/usr/share/man --incdir =/usr/include/ffmpeg - 사용 가능 libmp3lame - 사용 가능 libogg - 사용 가능 -libvorbis - 사용 가능 libogg - 사용 가능 libtheora - 사용 가능 libfaad - 사용 가능 libfaac - 사용 가능 libgsm - 사용 가능 -xvid - 사용 가능 -x264 - 사용 가능 liba52 - 사용 가능 liba52bin - 사용 가능 -pp --enable-shared - 사용 가능 - pthreads - 사용 가능 - gpl - 사용 불가 - strip libavutil 버전 : 49.4.0 libavcodec 버전 : 51.40.4 libavformat 버전 : 51.12.1 2007 년 6 월 4 일 11:02:12 작성 , GCC 4.1.1 20070105 (레드햇 4.1.1-52)

입력 # 0, MOV, MP4, M4A, 3GP, '/path/to/7b4e37e703ce0a104f027cb9125b1a19.mp4'에서 3G2, MJ2 : 기간 : 00 : 00 : 32.4, 시작 : 0.000000, 비트율 : 122 kb/s 스트림 # 0.0 (jpn) : 비디오 : h263, yuv420p, 176x144, 29.97fps (r) 스트림 # 0.1 (jpn) : 오디오 : samr/0x726D6173, 8000 Hz, 모노

출력 # 0, flv, '/path/to/test.flv': 스트림 # 0.0 : 비디오 : flv, yuv420p, 176x144, q = 2-31, 200kb/s, 29.97fps (c) 스트림 # 0.1 : 오디오 : mp3, 8000Hz, 모노, 64kb/s 스트림 매핑 : 스트림 # 0.0 -> # 0.0 스트림 # 0.1 -> # 0.1

입력 스트림 # 0.1에 대해 지원되지 않는 코덱 (id = 73728)

답변

4

서버에 어떤 종류의 액세스 권한이 있습니까? 명령을 실행할 수 있어야합니다.

그렇다면 ffmpeg의 오류 출력은 무엇입니까?

아마도 적절한 적절한 논증을 통해 문제에 대해 더 자세히 알 수 있습니까?

편집 :

표준 출력을 얻을 수 있는지 봅시다. 실행 :

ffmpeg -version 

그리고 출력물을 얻을 수 있는지 확인하십시오. 표준 오류 출력을 추출하면 원래 문제를 조사 할 수 있습니다.

편집 : 당신이 stderr를 잃어버린 것 같은

그래서 보이는 - 지금 당신이 그것을 검색하는 방법을 해결해야합니다. 어쩌면

:

ffmpeg -version 2>&1 

가 작동합니까?

편집 :

어떻게 우리가 어디 있어요 - 입력 오디오 코덱이 지원되지 않습니다

Unsupported codec (id=73728) for input stream #0.1 

내가 Stream #0.1(jpn): Audio: samr/0x726D6173, 8000 Hz, mono이 무엇인지 모른다.

하지만 문제가 있습니다.

로컬 Linux 상자에서 조사하고 싶을 수도 있습니다 - 문제를보다 쉽게 ​​볼 수 있습니다.

편집 : 그것은는 FFmpeg과 같은

http://www.nabble.com/Convert-3gp-samr-file-td20514476.html에서 지원 --enable-libamr-nb --enable-libamr-wb로 컴파일 할 수 있습니다.

ffmpeg 옵션을 다시 컴파일합니까?

+0

아마도 오디오없이 파일을 변환 할 수 있다면 파일 액세스 문제가 아닙니다. 즉, 진단을 돕는 자세한 출력은 +1입니다. – lpfavreau

+0

나는 PHP의 시스템 함수 (http://php.net/system)를 사용하고 있는데, 이것은 0을 반환합니다. 나는 아무것도 출력하지 않는 패스 스루를 시도했습니다. –

+0

울트라 단순 ffmpeg -i $ infile test.flv를 사용하면 도움이되는 경우 1을 반환합니다. –

-1

이 문제가 해결되었습니다. 여기 내 코드 :

<?php 
    define('FFMPEG_LIBRARY', '/usr/local/bin/ffmpeg'); 
    $exec_string = FFMPEG_LIBRARY.' -i robot.avi -an output.flv'; 
    exec($exec_string); //where exec is the command used to execute shell command in php 
?> 
관련 문제