
Recherche avancée
Autres articles (52)
-
Personnaliser en ajoutant son logo, sa bannière ou son image de fond
5 septembre 2013, parCertains thèmes prennent en compte trois éléments de personnalisation : l’ajout d’un logo ; l’ajout d’une bannière l’ajout d’une image de fond ;
-
Ecrire une actualité
21 juin 2013, parPrésentez les changements dans votre MédiaSPIP ou les actualités de vos projets sur votre MédiaSPIP grâce à la rubrique actualités.
Dans le thème par défaut spipeo de MédiaSPIP, les actualités sont affichées en bas de la page principale sous les éditoriaux.
Vous pouvez personnaliser le formulaire de création d’une actualité.
Formulaire de création d’une actualité Dans le cas d’un document de type actualité, les champs proposés par défaut sont : Date de publication ( personnaliser la date de publication ) (...) -
Publier sur MédiaSpip
13 juin 2013Puis-je poster des contenus à partir d’une tablette Ipad ?
Oui, si votre Médiaspip installé est à la version 0.2 ou supérieure. Contacter au besoin l’administrateur de votre MédiaSpip pour le savoir
Sur d’autres sites (8350)
-
avcodec/mpeg12dec : parse A53 caption data embedded in SCTE-20 user data
15 mars 2017, par Aman Gupta -
avcodec/packet : add an LCEVC enhancement data payload side data type
29 août 2024, par James Almer -
Accord.Video.FFMPEG.VideoFileWriter writes different data from the input data
14 novembre 2017, par Rasool AhmedI’m working on project that encrypting video frames using RC4 algorithm and save these frames in playable video file.
I used a package named Accord.Video.FFMPEG. This package has a classes (VideoFileReader, & VideoFileWriter) that reads and writes video frames.
The first step is reads the video :
VideoHandler v = new VideoHandler();
OpenFileDialog newimag = new OpenFileDialog();
if (newimag.ShowDialog() == DialogResult.OK)
{
textfile = newimag.FileName;
picbox.ImageLocation = textfile;
status1.Text = "loaded";
//MessageBox.Show("your video file have been loaded seccufly"); // is an idea for viwing message
}
bytedata = v.ReadAllFrameBytes(textfile);The second step is encrypting the frames of video :
byte[] bn = new byte[bytedata.Length];// new array to hold the encryptred file
bn = Encrypt(bytedata, ba);The last step is saving the encrypted frames :
v.WriteFramesData(newfilepath, bn);
My encrypting algorithm is encrypting and decrypting the cipher with same algorithm and key.
These stpes works on Text, and Images files, but when I use it on video I can’t restore the encrypted video. After some testings, I found that VideoFileWriter dosn’t write the same input frames. Whyyyyyyy ?
Here is my VideoFileHandler I made it :
using System;
using System.Collections.Generic;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Drawing.Imaging;
using System.IO;
using Accord.Video.FFMPEG;
namespace imgtobyt_1_in_c
{
class VideoHandler
{
public List data;
public byte[] imagedata;
public int Height, Width;
public byte[] ReadAllFrameBytes(string FileName)
{
// create instance of video reader
VideoFileReader reader = new VideoFileReader();
// open video file
reader.Open(FileName);
Height = reader.Height;
Width = reader.Width;
data = new List();
// read video frames
for (int i = 0; i < 100; i++) //change 100 to reader.FrameCount
{
Bitmap videoFrame = reader.ReadVideoFrame();
byte[] framebytes = GetBytesFromFrame(videoFrame);
data.Add(framebytes);
// dispose the frame when it is no longer required
videoFrame.Dispose();
}
reader.Close();
imagedata = new byte[data.Count * data[0].Length];
int c = 0;
for (int i = 0; i < data.Count; i++)
{
byte[] d = data[i];
for (int x = 0; x < d.Length; x++)
{
imagedata[c] = d[x];
c++;
}
}
return imagedata;
}
public byte[] GetBytesFromFrame(Bitmap Frame)
{
LockBitmap lockBitmap = new LockBitmap(Frame);
lockBitmap.LockBits();
byte[] framebytes = new byte[Frame.Width * Frame.Height * 3];
int z = 0;
for (int x = 0; x < lockBitmap.Height; x++)
for (int y = 0; y < lockBitmap.Width; y++)
{
Color Pixel = lockBitmap.GetPixel(y, x);
framebytes[z] = Pixel.R;
z++;
framebytes[z] = Pixel.G;
z++;
framebytes[z] = Pixel.B;
z++;
}
lockBitmap.UnlockBits();
return framebytes;
//using (var stream = new MemoryStream())
//{
// Frame.Save(stream, System.Drawing.Imaging.ImageFormat.Png);
// return stream.ToArray();
//}
}
public Bitmap GetFrameFromBytes(byte[] Framebytes, ref int offset, int Width, int Height)
{
Bitmap Frame = new Bitmap(Width, Height, PixelFormat.Format24bppRgb);
LockBitmap lockBitmap = new LockBitmap(Frame);
lockBitmap.LockBits();
for (int x = 0; x < Height; x++)
for (int y = 0; y < Width; y++)
{
Color Pixel = Color.FromArgb(Framebytes[offset], Framebytes[offset + 1], Framebytes[offset + 2]); offset += 3;
lockBitmap.SetPixel(y, x, Pixel);
}
lockBitmap.UnlockBits();
return Frame;
//Bitmap bmp;
//using (var ms = new MemoryStream(Framebytes))
//{
// bmp = new Bitmap(ms);
//}
//return bmp;
}
public void WriteFramesData(string FileName, byte[] data)
{
// create instance of video writer
VideoFileWriter writer = new VideoFileWriter();
// create new video file
writer.Open(FileName, Width, Height);
int offset = 0;
// write video frames
for (int i = 0; i < 100; i++)
{
// create a bitmap to save into the video file
Bitmap Frame = GetFrameFromBytes(data, ref offset, Width, Height);
writer.WriteVideoFrame(Frame);
}
writer.Close();
}
}
}Please, I need to make this works.