Расшифровка ошибок Xuggle / ffmpeg (новичок) - PullRequest
4 голосов
/ 04 августа 2010

Я недавно начал работать с Xuggle, чтобы конвертировать видеофайлы различных форматов в соответствующие FLV (которые будут воспроизводиться на нашем сайте через jwplayer).Код, который я использую, тривиально прост;по сути, то, что они показывают для основного учебника по конвертации видео:

IMediaReader reader = ToolFactory.makeReader(file.getPath());
reader.addListener(ToolFactory.makeWriter(tempFileName, reader));

while (reader.readPacket() == null)
;

Это хорошо работает примерно для 50% видео, которые я пробовал.Тем не менее, я получаю следующую ошибку для некоторых видео (все .MP4, с которыми я сталкивался, а также некоторые .MOV)

Caused by: java.lang.RuntimeException: Error Operation not permitted, failed to write header to container com.xuggle.xuggler.IContainer@-635072136[url:/tmp/1280786368521.flv;type:WRITE;format:com.xuggle.xuggler.IContainerFormat@-631842520[oname:flv;olongname:FLV format;omimetype:video/x-flv;oextensions:flv;];] while establishing stream com.xuggle.xuggler.IStream@-615272544[index:1;id:2;streamcoder:com.xuggle.xuggler.IStreamCoder@-677475184[codec=com.xuggle.xuggler.ICodec@-635131032[type=CODEC_TYPE_AUDIO;id=CODEC_ID_MP3;name=libmp3lame;];time base=1/48000;frame rate=0/0;sample rate=48000;channels=2;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]
        at com.xuggle.mediatool.MediaWriter.getStream(MediaWriter.java:1065)
        at com.xuggle.mediatool.MediaWriter.encodeAudio(MediaWriter.java:837)
        at com.xuggle.mediatool.MediaWriter.onAudioSamples(MediaWriter.java:1448)
        at com.xuggle.mediatool.AMediaToolMixin.onAudioSamples(AMediaToolMixin.java:89)
        at com.xuggle.mediatool.MediaReader.dispatchAudioSamples(MediaReader.java:628)
        at com.xuggle.mediatool.MediaReader.decodeAudio(MediaReader.java:555)
        at com.xuggle.mediatool.MediaReader.readPacket(MediaReader.java:469)
        ... 10 more

Мне трудно определить, является ли основная причина дляошибка связана с Xuggle / ffmpeg / lame / etc.или проблема с моим кодом.

Я полагаю, что первым шагом является расшифровка журнала ошибок и использование этой информации, чтобы попытаться преобразовать видео с помощью собственных вызовов ffmpeg.Если это работает, я полагаю, что разумно полагать, что эти компоненты установлены правильно?

Так что для сообщения журнала, например:

Error Operation not permitted, failed to write header to container com.xuggle.xuggler.IContainer@-635072136
[url:/tmp/1280786368521.flv;type:WRITE;format:com.xuggle.xuggler.IContainerFormat@-631842520[oname:flv;olongname:FLV format;omimetype:video/x-flv;oextensions:flv;];] 

while establishing stream com.xuggle.xuggler.IStream@-615272544
[index:1;id:2;streamcoder:com.xuggle.xuggler.IStreamCoder@-677475184[codec=com.xuggle.xuggler.ICodec@-635131032[type=CODEC_TYPE_AUDIO;id=CODEC_ID_MP3;name=libmp3lame;];time base=1/48000;frame rate=0/0;sample rate=48000;channels=2;];framerate:0/0;timebase:1/90000;direction:OUTBOUND;]

, как бы я перевел это в команду ffmpeg?

какие-либо другие советы по отладке для этого новичка Xuggle?

Ответы [ 2 ]

5 голосов
/ 05 августа 2010

Проблема решена.Это было связано с тем, что FLV поддерживает только аудиопотоки с частотой дискретизации 44,1, 22,05 и 11,025 кГц.Использовал класс IAudioResampler в Xuggle из пользовательского прослушивателя MediaTool, прослушивающего onAudioSamples (), для повторной выборки звука с поддерживаемой скоростью.

1 голос
/ 18 мая 2011

Я тоже недавно столкнулся с этой же проблемой. Потратил пару дней на это, пока не нашел ответ здесь .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...