2013-04-28 4 views
3

특정 솔루션을 찾기 위해 최선을 다한 것처럼 다시 게시/비슷한 게시물 인 경우 먼저 사과하겠습니다. 여기에 이미 작성된 게시물과 Google에서 문제가 있지만 할 수는 없습니다.ffmpeg/PHP - 비디오 형식을 ogg로 변환 할 때 문제가 있음 - 비디오가 끊김/오디오가 재생되지 않음 - win64

win64 시스템의 localhost에서 ffmpeg를 사용하여 비디오 변환 스크립트를 서버에 업로드하기 전에 작성/테스트하십시오.

mp4/flv/wmv/mov에서 성공적으로 변환 할 수 있지만 다른 형식의 .ogg로 변환하려고 할 때마다 문제가 발생합니다.

는 우선이 시도 :

exec($ffmpegPath." -i ".$srcFile." ".$destFile); 

을하지만, 영상/음성 녹음없이 손상된 파일로 끝났다. 그리고 나는 그것을 읽는 몇 가지를했고에는 OGG로 변환 할 때 명시 적으로받는 libvorbis/libtheora를 사용하도록 설정해야했다 일부 게시물을 발견, 그래서 나는이 시도 :

$aCodec = ' -acodec libvorbis'; 
$vCodec = ' -vcodec libtheora'; 
exec($ffmpegPath." -i ".$srcFile.$aCodec.$vCodec." ".$destFile); 

나는 소리로, 유효한에는 OGG 파일을 가지고이 시간 그러나 비디오 출력이 매우 고르지 않습니다. 시도하고 문제를 찾을 희망으로, 나는 간부 라인에 편집을 만들기 시작이 함께 결국 : 좋은 품질하지만, 소리없이 오그 비디오를 출력

$ffmpegObj = new ffmpeg_movie($srcFile); 
$srcVB = intval($ffmpegObj->getVideoBitRate()); 
$vCodec = ' -vcodec libtheora'; 
exec($ffmpegPath." -i ".$srcFile.$vCodec." -vb ".$srcVB." ".$destFile); 

합니다.

추가 소프트웨어 (ffmpeg2theora) 등을 설치하기 전에이 문제가 될 수있는 다른 아이디어가 있습니까?

또한 도움이된다면 ffmpeg의 출력을 반향시키고 위의 # 2 접근법을 사용하면 많은 오류가 표시됩니다.

100 buffers queued in output stream 0:1, something may be wrong. 
[ogg @ 00000000024bf780] st:0 PTS: 6743 DTS: 6743 < 7745 invalid, clipping 
[ogg @ 00000000024bf780] st:0 PTS: 6871 DTS: 6871 < 7746 invalid, clipping 
[ogg @ 00000000024bf780] st:0 PTS: 6999 DTS: 6999 < 7747 invalid, clipping 
[ogg @ 00000000024bf780] st:0 PTS: 7127 DTS: 7127 < 7748 invalid, clipping 
[ogg @ 00000000024bf780] st:0 PTS: 7255 DTS: 7255 < 7749 invalid, clipping 
[ogg @ 00000000024bf780] st:0 PTS: 7383 DTS: 7383 < 7750 invalid, clipping 

libvorbis와 libtheora가 잘 어울리지 않는 것 같습니다.

마지막으로 ffmpeg.exe 빌드를 여러 번 변경했지만 여전히 동일한 문제가 발생합니다. 사전에

감사합니다.

편집 : 가능한 해결 방법은 비디오/오디오를 별도로 인코딩 한 다음 다시 붙여 넣을 수있는 방법이 있습니까? 오디오/비디오 동기화 문제가 발생할 수 있습니까?

답변

2

언제나처럼 (문제 해결 시간이 많은) 여기에 내 질문을 게시 할 때 문제를 해결했을 수도 있습니다. 나는 파일을 변환뿐만 아니라 오디오/비디오 코덱을 지정하는 데 필요한뿐만 아니라 출력 오그 비디오의 오디오/비디오 비트 레이트 : 이것은 그것과 매우 가까운 품질의 비디오/오디오를 출력

//CREATE CLASS INSTANCE 
$ffmpegObj = new ffmpeg_movie($srcFile); 
//GET AUDIO BITRATE FROM SOURCE FILE 
$srcAB = intval($ffmpegObj->getAudioBitRate()); 
//GET VIDEO BITRATE FROM SOURCE FILE 
$srcVB = intval($ffmpegObj->getVideoBitRate()); 

//SET THE AUDIO CODEC TO LIBVORBIS 
$aCodec = ' -acodec libvorbis'; 
//SET THE VIDEO CODEC TO LIBTHEORA 
$vCodec = ' -vcodec libtheora'; 

exec($ffmpegPath." -i ".$srcFile.$vCodec." -vb ".$srcVB." -ab ".$srcAB." ".$destFile); 

원래 비디오 형식의

분명히 위의 코드를 사용하려는 사람은 $ ffmpegPath/$ srcFile/$ destFile에 대한 참조를 추가하고 해당 스크립트에서 ffmpeg 클래스를 사용할 수 있어야합니다.

또한 처음에는 PC에서 로컬로 Firefox에서 .ogg 비디오를 볼 때 비디오는 처음 재생을 시작했을 때 정지 한 다음 몇 초 후에 올바른 위치 (오디오에 상대적)로 이동합니다. 처음부터 재생하면 문제없이 재생됩니다.나는 나의 비디오 카드가 다만 동등하지 않다는 것을 추측하고있다; 이는 변환 후 파일을 처음 볼 때 문제를 설명합니다.

어쨌든 위의 코드는 fogmp 및 php를 사용하여 .ogg 형식으로 적절하게 변환하는 데 문제가있는 다른 사람들을 위해 작동해야합니다.