Sto usando la libreria ZXing.Net per codificare e decodificare il mio file video usando RS Encoder. Funziona bene aggiungendo e rimuovendo la parità rispettivamente dopo la codifica e la decodifica. Ma quando si scrive un file decodificato, viene aggiunto "?" caratteri in file su posizioni diverse che non facevano parte del file originale. Non capisco perché questo problema si sta verificando durante la scrittura di file. Ecco il mio codiceInusuale aggiunta di caratteri dopo la scrittura del file decodificato
using ZXing.Common.ReedSolomon;
namespace zxingtest
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
string inputFileName = @"D:\JM\bin\baseline_30.264";
string outputFileName = @"D:\JM\bin\baseline_encoded.264";
string Content = File.ReadAllText(inputFileName, ASCIIEncoding.Default);
//File.WriteAllText(outputFileName, Content, ASCIIEncoding.Default);
ReedSolomonEncoder enc = new ReedSolomonEncoder(GenericGF.AZTEC_DATA_12);
ReedSolomonDecoder dec = new ReedSolomonDecoder(GenericGF.AZTEC_DATA_12);
//string s = "1,2,4,6,1,7,4,0,0";
//int[] array = s.Split(',').Select(str => int.Parse(str)).ToArray();
int parity = 10;
List<byte> toBytes = ASCIIEncoding.Default.GetBytes(Content.Substring(0, 500)).ToList();
for (int index = 0; index < parity; index++)
{
toBytes.Add(0);
}
int[] bytesAsInts = Array.ConvertAll(toBytes.ToArray(), c => (int)c);
enc.encode(bytesAsInts, parity);
bytesAsInts[1] = 3;
dec.decode(bytesAsInts, parity);
string st = new string(Array.ConvertAll(bytesAsInts.ToArray(), z => (char)z));
File.WriteAllText(outputFileName, st, ASCIIEncoding.Default);
}
}
}
E qui è la vista dei file hex del flusso di bit H.264