ffmpeg на Windows Mobile с C # - PullRequest
       14

ffmpeg на Windows Mobile с C #

1 голос
/ 22 июня 2010

Мне нужно работать с FFmpeg для Windows Mobile с C # , на самом деле я хочу собрать плеер для .m4b, .m4a файлы.Я знаю, что TCPMP существует, но я хочу сделать свой собственный.Поэтому я хочу использовать .Net , и у меня есть несколько вопросов:

  1. Если я использую некоторые C # FFmpeg оболочки , например, TaoFramework,будет ли он работать на Windows Mobile (если я использую FFmpeg lib, скомпилированный для Windows Mobile )?

  2. В вики FFmpeg я нашел это

После того, как вы скомпилировали или загрузили библиотеки Windows DLL для FFmpeg, вы можете использовать .Net Platform Invoke (PI) для доступа к функциям в библиотеках libavformat и libavcodec. Ссылка на источник ...

Но я не знаю, как его использовать?Я пытался сделать это с помощью dll, который я скачал с http://ffmpeg.arrozcru.org/autobuilds/. Может быть, мне нужно скомпилировать ffmpeg для этого параметра самостоятельно?

И последний вопрос - что такое libavcodec?Когда я скачал общую сборку, я получил avcodec-52.dll, avfilter-1.dll, ffmpeg.exe, но не могу найти libavcodec.dll или это просто псевдоним?

1 Ответ

2 голосов
/ 22 июня 2010

Здесь много вопросов и множество вещей, которые вам нужно понять.

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

Итак, это означает, что если вы хотите, чтобы ваше приложение было в управляемом коде (что нормально), то вам понадобится гибридное решение.Это означает, что вам нужно понять, и для этого приложения достаточно хорошо понять, как работает нативный код и как управляемый код взаимодействует с нативным кодом.

Теперь, если есть существующие библиотеки FFmpeg (я возьму вашу работудля этого я ничего не знаю о FFmpeg) тогда первое, что вам нужно сделать, это определить, есть ли у них версии, скомпилированные специально для Windows CE.Если этого не произойдет, вам придется определить, насколько сложно будет создать этот порт, и тот факт, что вы задаете этот вопрос, заставляет меня поверить, что создание порта такой величины будет очень трудным для вашего текущего навыка.set.

Если у них есть сборка для Windows CE, вам нужно понять, каков ее программный интерфейс.Если это классы C ++, то вы не можете напрямую вызывать это из управляемого кода, поэтому вы должны написать в нативном коде библиотеку «shim», которая предоставляет прямые точки входа C и которая сделает все выделения C ++и призывает вас.

Как только вы все это сделаете, вы можете посмотреть на задачу вызова интерфейса shim или библиотеки C из управляемого кода через Platform Invoke.

В основному вас много работы, и нет какой-либо определенной статьи, на которую я могу вам указать, которая проведет вас от одного конца к другому.Вот несколько ссылок, чтобы вы начали, хотя.Если вы полностью понимаете каждый из них, то у вас, вероятно, будет достаточно знаний для написания оболочки вокруг существующей реализации (необязательно для написания самой реализации ядра проигрывателя).

...