ffmpeg на Windows Mobile с C#

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

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

  2. В Wiki FFmpeg я нашел это

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

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

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

1
задан Cœur 19 September 2017 в 15:53
поделиться

1 ответ

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

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

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

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

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

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

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

2
ответ дан 2 September 2019 в 23:36
поделиться
Другие вопросы по тегам:

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