2017年5月23日火曜日

TSファイル自動CMカット&mp4エンコード その6 ~無劣化CMカット(失敗編)~

ffmpegのオプションを漁っていたら、できるんじゃないかと思ってやってみたが…
ffmpegのオプションに「-ss position」「-t duration」「-to position」があるらしい。
これらを組み合わせてなんとかできそうな気がする。

※まだ完全動作してないのでパスとかは適当です

@echo off
setlocal enabledelayedexpansion
set start=""
set end=""
for /f "tokens=1,2 delims=="  %%i in (obs_chapter_org.chapter.txt) do (
set str=%%i
if not !str:~-4!==NAME (
if !start!=="" (
set start=%%j
)
)
if %%j==XCM (
set /A cnt=!cnt!+1
set end=!time!
set outname=out!cnt!.ts
echo file '!work_path!!outname!' >> !work_path!mylist.txt
call time.bat !start! !end!
ffmpeg.exe -ss !start! -i test.ts -t !DPS_STAMP! -c copy !cnt!.ts
set start=""
)
set time=%%j
)
endlocal
ffmpeg -f concat -safe 0 -i %~dp0mylist.txt -c copy "%~dp0%name1%.ts"
pause
ffmpegに渡す時間(-ss)はjoin_logo_scpのresultより拝借。そこからCMに該当する部分を除いた時間を取得し、動画の時間(-t)は終了時刻から開始時刻を引いて求めるbat(time.bat)を作成して計算した。
これだとOP/A/B/EDの4パートに分割されるので、それらを -f concatオプションで結合する。
間違っていないはず。
だが音ズレの訪れが…
分割されたファイル自体は音ズレがなく、カット部分を挟んで再生すると(シークバーで飛ぶと音ズレしない)音ズレする模様。
結合をffmpeg以外のソフトでも試したが変わらずなので、どうしたらいいものか悩み中。
おそらくカットしている段階でなんかおかしいんだと思って、カットの段階からffmpeg以外のソフトも検討する必要がありそう。とにかく、GUIを使わずにやりたいのでAVidemuxに挑戦する予定。(すでに1敗してるけど)


0 件のコメント:

コメントを投稿