Программно преобразуйте видео в [закрытый] FLV

Ваша оболочка (возможно, bash) делает свое собственное экранирование, и это вас путает. Вы можете использовать команду echo, чтобы увидеть, что передается, или легко написать специальную программу (обычно называемую «showargs» или аналогичную):

$ echo "s/\\\/\//"
s/\\/\//
$ echo "s/\\/\//"
s/\/\//

Вы также можете использовать одинарные кавычки, которые иначе говоря, в bash.

19
задан Raibaz 2 February 2009 в 10:17
поделиться

10 ответов

У Вас в основном есть два варианта, если Вы хотите разместить, транскодировать и поток flv файлы (и не хотят покупать приложение транскодирования видео): можно обратиться к FFMpeg/MEncoder, или можно использовать внешний веб-сервис. Вы могли также обойти проблему полностью, позволив им встроить видео YouTube в Ваш сайт.

, Если бы Вы идете 'локальным путем FFMpeg', я предложил бы просто использовать ProcessBuilder и создать командную строку для выполнения FFMpeg. Тем путем Вы получаете полный контроль над тем, что выполняется, Вы избегаете JNI, который является абсолютным кошмаром для работы с, и Вы не допускаете определенный для ОС код в свое приложение. Можно найти FFMPeg со всеми дополнительными свойствами для в значительной степени любой платформы. Существует хороший шанс, это уже находится на Вашем сервере.

хорошая вещь о 'Локальном FFMPeg' маршрут состоит в том, что Вы не должны платить ни за какой дополнительный хостинг, и все работает локально, хотя Ваш размещающий администратор мог бы начать жаловаться, используете ли Вы сумасшедшую сумму диска и ЦП. Существуют некоторые другие вопросы о StackOverflow, которые говорят о некоторых из эти глюки с помощью FFMpeg для создания flvs, который можно на самом деле играть в Flash player.

маршрут веб-сервиса хорош, потому что существует меньше включенной установки. Я не использовал Эй! Смотрите , но это выглядит многообещающим. PandaStream легко настроить, и он работает хорошо, плюс Вы получают все Ваши видео на S3 без дополнительного усилия.

11
ответ дан 30 November 2019 в 02:10
поделиться

Существует большой вызов инструмента с открытым исходным кодом FFmpeg, который я использую для транскодирования моих видео. Я использую PHP, выполняющий вызовы оболочки, чтобы заставить его ожить, но я не могу предположить, что было бы слишком трудно заставить это играть по правилам с Java. (Возможно, это могло быть хорошей начальной точкой для Вас.)

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

21
ответ дан 30 November 2019 в 02:10
поделиться

Это может быть немного тангенциальным, но я нашел Поток Panda быть очень полезным решением всех видов проблем кодирования видео.

Все, что необходимо сделать, должно загрузить видеофайл на экземпляр Amazon EC2 рабочая Panda, и это закодирует видео к нужным форматам и качеству и выпустит обратный вызов к серверу приложений с деталями, когда это будет сделано. Можно тогда использовать связанный плеер Флеш-видео или собственный плеер для игры видео на сайте.

Это - очень масштабируемое (благодаря Amazon EC2 & S3), экономически эффективное и настраиваемое решение по сравнению с прокруткой Вашего собственного.

Наиболее рекомендуемый.

Обновление:

архитектура Panda следующие:

Architecture of Panda Stream
(источник: pandastream.com )

  1. форма загрузки Panda Отображений страницы в iframe или всплывающем окне
  2. Загрузка видео с индикатором выполнения Ajax
  3. обратный вызов API, когда кодирование завершено
  4. Видео, переданное потоком пользователю
4
ответ дан 30 November 2019 в 02:10
поделиться

Существует библиотека с открытым исходным кодом, пользовавшаяся MPlayer, названным mencoder, который поддерживает FLV, а также много других кодеков.

существует Java GUI, который Вы видели, как был сделан

, Это могло помочь также.

я, кажется, не могу найти любой пример не названным от консоли, таким образом, это не может быть полезно для Вас. :S

Редактирование Также смотрят на этот вопрос .

3
ответ дан 30 November 2019 в 02:10
поделиться

Вы могли попытаться использовать онлайн-сервис как HeyWatch для преобразования видео. Никогда не использовал его, но они заявление

"прозрачная загрузка, отправьте видео прозрачно от Вашего веб-сайта"

Не решение Java, но Вы не должны были бы волноваться, о каком ОС идет Ваше веб-приложение.

, Если ОС не была проблемой, я соглашаюсь с ответом , theBadDawg дал. Я не знаю об и имел не любую удачу, находящую чистое решение Java.

1
ответ дан 30 November 2019 в 02:10
поделиться

FFMpeg является лучшим когда дело доходит до видео транскодирования.

можно использовать обертки Java для ffmpeg - http://fmj-sf.net/ffmpeg-java/getting_started.php http://sourceforge.net/projects/jffmpeg/

1
ответ дан 30 November 2019 в 02:10
поделиться

Кодирование файлов в одном формате другому занимает много времени разработки для разбираний, который является, почему существует так мало с точки зрения декодеров/кодеров, которые могут выполнить те подвиги. Те, которые известны и использовали большинство, являются ffmpeg и mencoder.

то, Что можно хотеть изучить, должно видеть, имеет ли платформа, на которой Вы работаете (Unix Windows/Mac OS X/Other) базовый набор вызовов API, можно использовать, который может декодировать файлы и повторно закодировать их. Windows имеет DirectShow, и Mac OS X имеет Quicktime. Не уверенный, если можно получить доступ к ним Java использования API все же.

FFMpeg действительно имеет обертку Java в наличии: FFMPEG Java, и существует также БРЕЛОКИ , который имеет JNI в наличии для их обертки C++ вокруг ffmpeg. Последний, который я нашел jFFmpeg, однако существует некоторые сообщения, которые я нашел с Google, предполагающим, что проект не может быть живым больше.

Ваш лучший выбор был бы или mencoder от mplayer и или ffmpeg. Ffmpeg можно установить как отдельный двоичный файл и затем назвать из другого кода с помощью команд "оболочки" по умолчанию. Если Вы однако не в состоянии выполнить команды, Вы, возможно, должны посмотреть на использование веб-сайта преобразования онлайн как предложенный Mark Robinson.

1
ответ дан 30 November 2019 в 02:10
поделиться

Из темы msdn на упорядочивание настраиваемых действий :

Как и в случае стандартных действий, настраиваемые действия, запланированные в InstallUISequence или AdminUISequence запускается, только если внутренний пользовательский интерфейс настроен на полный уровень.

Итак, я предполагаю, что ваше настраиваемое действие запланировано в последовательности пользовательского интерфейса, а не в InstallExecuteSequence . Попробуйте запланировать настраиваемое действие в InstallExecuteSequence следующим образом:

  <InstallExecuteSequence>
     <Custom Action='LaunchApplication' After='InstallFiles'/>
  </InstallExecuteSequence>

где «LaunchApplication» следует заменить на Id вашего элемента CustomAction .

edit : я просмотрел инструкции , которым вы следовали, и не вижу настраиваемого действия для запуска приложения, запланированного в какой-либо последовательности. Он запускается только из действия пользовательского интерфейса (нажатие кнопки «Готово»). Это объясняет, почему он никогда не выполняется во время автоматической установки.

edit : полный образец (это немного небрежно, поскольку он также пытается выполнить настраиваемое действие при удалении, восстановлении и т. Д., Но по какой-то причине я не мог получить "

20
ответ дан 30 November 2019 в 02:10
поделиться

Если вы хотите сделать это с помощью java, вы можете сделать это очень легко, используя Xuggle.

У них есть отличный сайт, объясняющий, как все сделать

документация находится здесь: http://build.xuggle.com/view/Stable/job/xuggler_jdk5_stable/javadoc/java/api/index.html

а отличный учебник, рассказывающий, как сделать то, что вы хотите, находится здесь: http: //blog.xuggle.com/2009/06/05/introduction-to-xuggler-mediatools/

Они предоставляют простой способ сделать то, что вы хотите в первом руководстве, а именно простое транскодирование.

Я обнаружил, что он отлично работает для кодирования в flv. За кулисами он использует ffmpeg, так что все, что может испортить ffmpeg, не сработает и с xuggle.

Соответствующий пример java-кода:

 // create a media reader
 IMediaReader reader = ToolFactory.makeReader("videofile.flv");

 // add a viewer to the reader, to see the decoded media
 reader.addListener(ToolFactory.makeWriter("output.mov", reader));

 // read and decode packets from the source file and
 // and dispatch decoded audio and video to the writer
 while (reader.readPacket() == null)
   ;

Который я взял с сайта http ://wiki.xuggle.com/MediaTool_Introduction

Если вам нужен полностью рабочий код clojure... вот он :)

(import '(com.xuggle.mediatool ToolFactory))
(import '(com.xuggle.mediatool IMediaDebugListener IMediaDebugListener$Event))

    (defn readerRecurse
      "calls .readPacket until there's nothing left to do2"
      [reader]
      (if (not (nil? (.readPacket reader))) ; here .readPacket actually does the processing as a side-effect.
        true                                   ; it returns null when it has MORE ro process, and signals an error when done... 
        (recur reader)))


    (defn convert
      "takes video and converts it to a new type of video"
      [videoInput videoOutput]
      (let [reader (ToolFactory/makeReader videoInput)]
        (doto reader
          (.addListener (ToolFactory/makeWriter videoOutput reader))
          (.addListener (ToolFactory/makeDebugListener (into-array [IMediaDebugListener$Event/META_DATA]))))
        (readerRecurse reader)))

теперь все, что вам нужно сделать, это что-то вроде:

(convert "/path/to/some_file.stupid_extention" "/path/to/awesome.flv")

и готово!

1
ответ дан 30 November 2019 в 02:10
поделиться

Вам также может быть интересно услышать, что мы выпустили Panda в качестве размещаемой службы, что упрощает настройку и масштабирование :)

http://pandastream.com

0
ответ дан 30 November 2019 в 02:10
поделиться
Другие вопросы по тегам:

Похожие вопросы: