여러 비디오의 시작 부분에 동일한 클립 장면을 일괄 삽입하는 방법은 무엇입니까?

여러 비디오의 시작 부분에 동일한 클립 장면을 일괄 삽입하는 방법은 무엇입니까?

이런 방식으로 파일을 대량으로 병합하는 데 적합한 자동 또는 반자동 방법을 연구하는 데 며칠이 걸렸습니다. 기본적으로 제가 원하는 것은 다른 클립 앞에 동일한 클립을 삽입하는 것입니다.

이 경우에는 .flv, .mp4, .avi 파일(항상 동일한 코덱 병합)로 시도했지만 테스트 후에 성공하지 못했습니다.모든 프로그램 이용 가능Windows와 OSx 모두에서. 저를 믿으십시오. 나는 그들 모두를 시험해 보았습니다. 이 많은 작업을 아주 잘 처리할 수 있는 유일한 제품은 Videocharge입니다.워터마크 마스터그리고비디오차지 스튜디오. 그들 중 누구도 임무를 제대로 수행하지 못했습니다. 아마도 스크립트를 사용하여 이를 달성할 수 있는 방법이 있었을 것입니다.애프터 이펙트또는소니 베가스, 방금 아무것도 찾지 못했습니다.

이제 나는 쉘이나 유닉스 스크립팅 중 하나를 사용하여 동일한 결과를 얻을 수 있는 방법을 찾으려고 노력하고 있습니다. 상관하지 않습니다. 저는 이러한 작업을 위해서만 Ubuntu를 마운트하고 싶지 않습니다. 저는 프로그래머는 아니지만 완고한 성격을 갖고 있기 때문에(때때로 밤이 깊지 않을 때도 있음) 일괄 비디오 처리나 스크립팅에 대해 예리하고 능숙한 분의 도움이나 지도에 감사하겠습니다.

현재 내가 찾은 유일한 유용한 경로는 다음 중 하나를 사용하도록 유도합니다.멘코드또는ffmpeg명령을 통해 일괄 병합을 수행할 수 없습니다. 나는 비디오를 정렬하는 방법에 관심이 없습니다. 그러나 작업이 수백 또는 수천 개의 비디오에 대해 수행된다는 점을 고려하면 각각의 비디오를 "고유한" 소개 클립과 함께 별도의 폴더에 보관하는 것은 적합하지 않습니다. 가장 논리적인 방법은 "다발" 비디오를 폴더에 저장하고 인트로 클립을 인코더나 렌더러와 동일한 폴더에 저장하는 것입니다.

도움이나 안내에 미리 감사드립니다.

답변1

글쎄요, 동영상을 추가했지만 처음에는 추가하지 않았습니다. avidemux를 사용하여 비디오를 추가할 수 있습니다!

제가 자바스크립트를 잘 못해서 스크립트를 작성하지 못한 점 양해 부탁드립니다. Avidemux 스크립팅에 대한 튜토리얼이 있습니다. Avidemux는 오픈 소스이자 무료 비디오 변환기입니다. avidemux에서 오디오/비디오에 효과를 추가하고 여러 형식으로 저장할 수 있습니다.

이 스크립트는 여기에 제공된 페이지 링크에 대한 예제 튜토리얼입니다: [::: 링크 :::] 스크립트는 단순히 orgDir 디렉토리를 스캔하고 모든 AVI 파일의 압축을 풉니다. 결과 파일은 destDir 디렉터리에 저장됩니다(새 디렉터리 검색 API 사용).

Avidemux 기능은 다음과 같습니다: displayError, displayInfo, fileReadSelect, fileWriteSelect, allFilesFrom, nextFile

및 기타 기능: 로드, 추가, 저장, saveDVD, saveOGM, ClearSegments, addSegment, goToTime, forceUnpack, setContainer

여기에 더 많은 스크립트 기능이 있습니다:http://www.avidemux.org/admWiki/doku.php?id=using:scripting#avidemux_functions

avi 파일을 변환하는 Turotial 스크립트는 다음과 같습니다.

//AD  <-
/*
      Simple script that scans the orgDir directory
      and unpack all AVI files
      The resulting file is put in destDir directory
      Using new directorySearch API
*/
var app = new Avidemux();
var ds = new DirectorySearch();
var orgDir;
var destDir;
var reg =new RegExp(".$");
/*
      This is for Unix
      For Windows change to
      sep="\\";
      reg2=new RegExp("\\.*\\");
*/
var sep="\\";
var reg2 =new RegExp("\/.*\/");
var extension;
var target;
//
//
//
//      select files from original & target directories
//
      orgDir=fileReadSelect();
      destDir=fileWriteSelect();
      orgDir=pathOnly(orgDir);
      destDir=pathOnly(destDir);
//
//      strip last \\ or //
//
      orgDir=orgDir.replace(reg,"");
      destDir=destDir.replace(reg,"");
      print("orgDir : <"+orgDir+">");
      print("destDir : <"+destDir+">");
//
// Go
//
if(ds.Init(orgDir))
{
  while(ds.NextFile())
  {
      // Only process file we want i.e. AVI
      if(!ds.isNotFile && !ds.isDirectory && !ds.isHidden && !ds.isArchive && !ds.isSingleDot && !ds.isDoubleDot)
      {
          extension=ds.GetExtension();
          if(extension == "avi")
          {
              target=ds.GetFileName();
              target=destDir+sep+target;
              print("***"+ds.GetFileName()+"-->"+target);
              processFile(orgDir+sep+ds.GetFileName(),target);
              }
          //print("File: "+ds.GetFileName()+" is "+ds.GetFileSize()+" bytes, extension "+extension);
      }
  }
  print("We just searched in directory \"" + ds.GetFileDirectory() + "\"");
  ds.Close();
}
else
  displayError("Error initializing the directory search");
displayInfo("Finished !");
function processFile(filename, targetfile)
{
      // Load the file
      app.forceUnpack();
      app.load(filename);
      app.rebuildIndex();
      app.audio.delay=0;
      app.audio.mixer("NONE");
      app.audio.scanVBR();
      app.setContainer("AVI_UNP");
      app.save(targetfile);
      return 1;
}

도움이 되었기를 바랍니다...

출처:

답변2

@user2377276님의 제안에 많은 감사를 드립니다. 그 노력에 정말 감사드립니다. 사실, 귀하의 해결 방법은 나를 올바른 방향으로 안내하는 것입니다. 글쎄요, 아직 성공하지 못했기 때문에 그러기를 바랍니다. 지금까지 병합을 달성하기 위해 가장 가까운 방법은 여러 다른 비디오와 동일한 디렉터리에서 실행되는 다음 코드의 다른 변형을 통해서였습니다. 추가할 고유 파일은 루트에 배치되었으며 출력용으로 C:/TEMP를 만들었습니다.

for %a in ("*.flv") do Mencoder -oac copy "c:\INTRO.flv" "%a" -o "c:\TEMP\%a"

모든 비디오는 FLV1에 있지만 해상도가 약간 다르기 때문에 기본적으로 엉망이 됩니다.

ffmpeg로 시도해 봐야할지 모르겠습니다. 제안?

여러 프로그램을 테스트했지만 그 중 어느 것도 다시 인코딩하지 않았기 때문에 다시 인코딩할 필요 없이 이 작업을 수행할 수 있다고 확신합니다. 일부 경우에는 해상도를 강제로 적용하기만 합니다. 실제로 가장 잘 작동하는 것으로 보이는 프로그램은 AIR 응용 프로그램인 Rich Flv였지만 일괄 처리에서는 작동하지 않습니다.

관련 정보