Ответ 1
В настоящее время для этого нет стабильного решения, поэтому лучше всего подождать, пока кто-то его не завершит.
Поиск фреймворка FFmpeg, используемого в .NET. Обертка должна поддерживать воспроизведение видео со звуком.
Следующие проекты представляют собой неполные обертки FFmpeg:
http://code.google.com/p/ffmpeg-sharp/
http://sourceforge.net/projects/sharpffmpeg/
http://sourceforge.net/projects/ffqlay/
http://www.intuitive.sk/fflib/post/fflib-net-released.aspx
ffmpeg-sharp - это самая близкая вещь, которую я нашел, но она также неполна (нет воспроизведения аудио в видео).
Я уверен, что существуют стабильные проприетарные обертки, поэтому я награжу награду за каждого, кто хочет поделиться этим кодом или сможет найти полную стороннюю версию.
В настоящее время для этого нет стабильного решения, поэтому лучше всего подождать, пока кто-то его не завершит.
Существует отличное решение для привязки FFmpeg к С#. Используйте FFmpeg.Autogen от: https://github.com/Ruslan-B/FFmpeg.AutoGen. Это также хороший пример при загрузке источника (и он поставляется с предварительно скопированным ffmpeg для 32 и 64 бит)!
Из того, что я знаю, нет чистого способа использовать ffmpeg из С# через P/Invoke, поэтому все эти обертки являются неполными проектами. Что вы можете сделать, так это создать процесс ffplay.exe (загрузить под разделяемыми сборками) и передать ему аргументы командной строки. В противном случае я предлагаю использовать WPF или Silverlight MediaElement, в зависимости от ваших потребностей; он имеет довольно приличную поддержку большинства основных задач, таких как воспроизведение видео и аудио.
Вы еще не просмотрели VLC Media Player? Это полнофункциональный медиаплеер, который использует кодеки из проекта FFmpeg. Вы можете использовать его основные функции и недавно обновленный проект оболочки на SourceForge и учебник по Проект кода, если вы хотите создать свой собственный. Я не использовал ни один из них лично, но они выглядят довольно прямолинейно.
Я не думаю, что такая вещь существует, и, честно говоря, API ffmpeg по-прежнему несколько нестабилен, поэтому даже если сегодня есть что-то, что соответствует вашим потребностям, есть не несущественный шанс, что через 2 года он больше не будет работать/быть постоянно обновляется. Кроме того, маршалинг данных между управляемым и собственным кодом является относительно дорогостоящим. В 99% случаев это не имеет значения, но в случае, когда вы имеете дело со средствами массовой информации (особенно несжатыми видеокадрами), это может иметь заметное влияние на производительность.
IMO лучший способ справиться с ffmpeg с С# - написать логику взаимодействия на C и выставить API более высокого уровня, с которого вы можете p/invoke с С#. Это все равно будет иметь место, если имеется подходящая оболочка низкого уровня.
Я уверен, что существуют устойчивые проприетарные обертки
Я провел много времени в конце прошлого года, ища его самостоятельно, без успеха.