Обнаружены неверные данные при обработке ввода при передаче ffmpeg m4s в mp4 - PullRequest
0 голосов
/ 01 марта 2020

Результат окна Power Shell

Я увидел здесь пост о преобразовании m4s в mp4, и я выполнил шаги по объединению всех файлов в другой файл m4s, который я называется all.m4s и когда я использую команду ffmpeg -i allm4s.m4s - c copy video.mp4. Я создал объединенный файл m4s, написав exe-код, чтобы добавить все файлы m4s, в которых есть слово video, в файл m4s. Вот исходный код, написанный на c#, если вы компилируете код, то это код, который я использовал для создания m4s

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;

namespace files
{
    class Program
    {
        static void Main(string[] args)
        {
            string dir = Directory.GetCurrentDirectory();
            string[] info = Directory.GetFiles(dir);
            Console.WriteLine(dir + "\\allm4s.m4s");
            Console.ReadKey();
            foreach (string name in info)
            {
                if (Path.GetFileName(name).Contains(".m4s") && Path.GetFileName(name).Contains("video"))
                {
                    using (Stream srcStream = File.OpenRead(name))
                    {
                        using (Stream destStream = File.OpenWrite(dir+"\\allm4s.m4s"))
                        {
                            srcStream.CopyTo(destStream);
                            Console.WriteLine(destStream+name);
                        }
                    }
                }
            }
            Console.ReadKey();
        }
    }
}

Я думаю, что если возникнет проблема, это связано с этот файл allm4s.m4s, так как размер файла составляет около 1,5 МБ, хотя каждый сегмент m4s составляет около 750 КБ каждый и их достаточно много. Если у кого-нибудь есть способ добавления множества файлов вместе через программу / приложение, которое было бы полезно .

1 Ответ

0 голосов
/ 01 марта 2020

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

Java Program

String inputStr="";
String stream="";

for(int index=0;index<input.length;index++){
  inputStr=inputStr+" -i "+input[index];
  stream =stream +"["+index+":v]"+"["+index+":a]"; //gets audio and video stream of file
}
 String command = "ffmpeg "+inputStr+" -filter_complex \" "+stream+" concat=n="+(index-1)+ \
 ":v=1:a=1 [v] [a] \" "+ "-map \"[v]\" -map \"[a]\" outputfile.m4s"

 Runtime.getRuntime(command).exec().waitFor();//runs ffmpeg command to concat all files
...