2016-09-20 6 views
0

私はこれらについてたくさんのスレッドを見ましたが、何も私の問題のために変更されていないようです。FFmpeg Audio Desync Issue

現在、私のJavaプログラムの中で、私はコマンドラインを呼び出してこのコマンドを使用しています。

ProcessBuilder builder = new 
       ProcessBuilder(
         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\" -vcodec libx264 -async 1 -f mp4 " + " -ss " + offset + " -c copy -t " + duration + " " + "\"" + outputFile + "\""); 

もともと、-vcodec -async、および-f MP4はありませんでしたが、うまくいけば、音声を修正するための努力で、彼らはそこに配置されています。

オーディオは約1〜2秒遅れていますが、私は誰もがアイデアを持っていたのだろうかと思いましたか?私はまだ働いていないフレームレートを手動で設定しようとしました。

もう1つ失敗した試みです。一緒に

ProcessBuilder builder = new 
       ProcessBuilder(
         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\" -vcodec libx264 -async 1 -acodec libfaac -ab 128k -ac 2 -bt 5000k -b 5000k -r 59.940 -threads 0 -f mp4 " + " -ss " + offset + " -c copy -t " + duration + " " + "\"" + outputFile + "\""); 

入力&出力ファイルオフセット及び期間は、すべての罰金です、これを疑問視しないでください。

クイック編集!

入力ファイルは常に

別EDIT Iオフセット及び期間の引数を削除し、代わりにcopytsを使用する場合は、ファイル全体をMP4に変換され、音声が同期され.flvの拡張子が付いています。問題はオフセットとデュレーションにあるように思えます。なぜなら、私は2つ前にコピーを試みたのですが、まだそれはdesync'dでした。現在

元のコマンドで

ProcessBuilder builder = new 
       ProcessBuilder(
         "cmd.exe", "/c", "ffmpeg -y -i " + "\"" + inputFile + "\"" + " -c copy -copyts " + "\"" + outputFile + "\""); 

答えて

1

(一番上の1)、-c:a copy-c copyを交換してください。あなたは-async 1を取り除くことができます。

+0

病気を試してみて、時間内にお知らせください。 –

+0

何??これはどのように "受け入れ"の作品ではありません - でも何でも – gpasch

+0

どのように?彼は私の質問に答えた。問題は、オーディオストリームをビデオと共に完全にコピーすることでした。 –