2014-02-04 6 views
0

Я хочу добавить видеофайл в мое приложение для форм Windows, тип видеоформата - MP4. Я уже искал, как добавить видео, и я нашел ответ на использование библиотеки медиаплеера Windows.Как загрузить видео в winforms из ресурсов?

Я использовал его, но как только я поместил полный URL моего файла, он работает на моей машине, но когда я устанавливаю его на любой другой, он не воспроизводится. Я знаю причину, по которой я предоставляю местоположение видео, которое является моим местоположением HD, затем я искал дальше и обнаружил, что внедряю ресурсы, я меняю действие сборки на встраиваемые ресурсы, но снова имею ту же проблему.

Как я могу получить доступ к моему файлу встраивания в свой код? Я уже пробовал так, как namespace.file.mp4 или namespace.properties.resources.file.mp4, но он говорит, что:

Ошибка 1 Не удается неявно преобразовать тип 'байт []' на 'строка' L: \ Project SciMult-известково \ videotesting2 \ videotesting2 \ Form1.cs 29 41 videotesting2

+0

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

+0

Вложение видео в качестве ресурса - неплохая идея, они слишком большие. Для воспроизведения .mp4 требуется декодер, который знает, как обрабатывать определенный видеоформат, например AVC. Не универсально, вы, как правило, должны их купить. И легко проверить, пытаясь воспроизвести его с помощью проигрывателя Windows Media. Узнайте больше об этом на superuser.com –

ответ

0

это мой краткий код, который я хочу, чтобы воспроизвести видео, когда пользователь нажмите кнопку "О" menustripitem

using System.Data; 
using System.Drawing; 
using System.Linq; 
using System.Text; 
using System.Windows.Forms; 
using System.IO; 
using System.Reflection; 
using System.Resources; 

namespace videotesting2 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 

     private void Form1_Load(object sender, EventArgs e) 
     { 

     } 

     private void axWindowsMediaPlayer1_Enter(object sender, EventArgs e) 
     { 
      axWindowsMediaPlayer1.URL = @"L:\about.mp4"; 

     } 
    } 

}

1

Когда вы получаете доступ к ресурсу, это байт [], поэтому вы не можете воспроизводить видео. Ваш метод хочет, чтобы путь не был байтом [].

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

пространств имен необходимо

using System.Reflection; 
using System.IO; 

Что-то вроде этого

//Place it in the directory of your application 
string mp4Path = Path.Combine(Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location), "mp4File.mp4"); 

//check if it hasn't been written to disk yet 
if (!File.Exists(mp4Path)) 
{ 
    //write it to disk 
    File.WriteAllBytes(mp4Path, namespace.properties.resources.file.mp4); 
} 

//play using mp4Path 
+0

это мой краткий код, я хочу воспроизвести видео, когда пользователь нажимает «О» menustripitem. – user3272463

+0

, когда я попробовал File.writeallbytes (mp4path, namespaces.prop.res.my.mp4, но после ресурса мой файл пришел как только по имени не заполнено расширением .mp4is не комментирует почему? – user3272463

+0

Я думаю, что это 'System.Reflection' (без s). – Olivier

Смежные вопросы