OGV形式は私のコンピューターで適切に再生されますが、トランスコーディングはフレームを(ドロップ?


11

ubuntu 12.10でrecordmydesktopを使用して一連のスクリーンキャストを作成しました。出力はogvファイルです。デフォルトのムービープレーヤー(トーテム)を使用してogvファイルを見ると、問題なく見えます。オーディオとビデオは同期しています。(私またはyoutubeによって)トランスコードされると、オーディオとビデオが同期しなくなります。ナレーション中に1〜2枚のスライドをスキップしているようです。

更新

この問題は、トランスコーディング中に重複フレームをドロップすることでより適切に特徴付けられると思います。マウスが動いているビデオの変換は、通常は正常に機能するようです。しかし、スライドの最中に話していると、これらの重複するフレームが削除されます。

私はこれを見ましたが、それは私の状況ではありません(ogv->何かから移動しようとしています/superuser/436187/ffmpeg-convert-video-w-dropped-frames-out-of-sync

AVIファイルは正しく翻訳されているようです!これは誰かにとって大きなヒントになると思います。根本的な問題を追跡したいのですが。以前のビデオからAVIへの変換をテストしていますが、各トランジションを確認する必要があるため、これにはしばらく時間がかかります。

これはGTK-recordmydesktopから元OGVファイルです: http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ogv

ビデオは10秒間のスライドで始まり、さらに5秒間ずつ3枚のスライドに進みます。スライドを進めるたびに、マイクもタップします(10秒、15秒、20秒、25秒)。

実行されたいくつかの変換を以下に示します(それぞれに独自のビデオタイミングの問題が表示されます)。

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.mp4

  • これは最初のフレームの最初のスライドを示していますが、すぐに先に進みます
  • これは、ストックffmpegを使用して行われました

http://dl.dropbox.com/u/64693533/sync_test/sync_test1.ffmpeg-static.mp4

  • これはかなり近いです-何らかの理由で13代でそれは前進することを決定します
  • これは数日前のffmpegの静的ビルドを使用して行われました

ここにそれがyoutubeにあります-あなたは13秒頃にそれが早く進むのを見ることができます(スライド1->スライド2から):

以下は、OGVファイルが正しく機能することの証明です。

ffmpegの翻訳

ffmpegまたはavconvを使用すると、YouTubeと同様の結果が得られるようです(移行は早期に発生するようですが、必ずしも同時に発生するわけではありません)。

これが私が使用するコマンド(最近のffmpegの静的ビルドで)と出力です。

$〜/ ffmpeg / ffmpeg -i JSP.ogv JSP.mp4
ffmpegバージョンN-50025-gb8bb661 Copyright(c)2000-2013 FFmpeg開発者
  2013年2月17日05:23:03にgcc 4.6(Debian 4.6.3-1)でビルド
  設定:--prefix = / root / ffmpeg-static / 64bit --extra-cflags = '-I / root / ffmpeg-static / 64bit / include -static' --extra-ldflags = '-L / root / ffmpeg- static / 64bit / lib -static '--extra-libs ='-lxml2 -lexpat -lfreetype '--enable-static --disable-shared --disable-ffserver --disable-doc --enable-bzlib --enable -zlib --enable-postproc --enable-runtime-cpudetect --enable-libx264 --enable-gpl --enable-libtheora --enable-libvorbis --enable-libmp3lame --enable-gray --enable-libass- -enable-libfreetype --enable-libopenjpeg --enable-libspeex --enable-libvo-aacenc --enable-libvo-amrwbenc --enable-version3 --enable-libvpx
  libavutil 52. 17.101 / 52. 17.101
  libavcodec 54. 91.103 / 54. 91.103
  libavformat 54. 63.100 / 54. 63.100
  libavdevice 54. 3.103 / 54. 3.103
  libavfilter 3. 38.100 / 3. 38.100
  libswscale 2. 2.100 / 2. 2.100
  libswresample 0. 17.102 / 0. 17.102
  libpostproc 52. 2.100 / 52. 2.100
[ogg @ 0x34d4640]同じストリームに対する複数のfisboneは実装されていません。FFmpegのバージョンをGitの最新バージョンに更新します。それでも問題が発生する場合は、ファイルに実装されていない機能が含まれていることを意味します。
[ogg @ 0x34d4640]ストリーム0のヘッダー解析に失敗しました
[ogg @ 0x34d4640]壊れたファイル、キーフレームが正しくマークされていません。
「JSP.ogv」からの入力#0、ogg:
  継続時間:00:12:49.67、開始:0.000000、ビットレート:224 kb / s
    ストリーム#0:0:データ:なし
    ストリーム#0:1:ビデオ:theora、yuv420p、1600x880 [SAR 1:1 DAR 20:11]、15 fps、15 tbr、15 tbn、15 tbc
    メタデータ:
      RECORDMYDESKTOP:0.3.8.1
    ストリーム#0:2:オーディオ:vorbis、22050 Hz、モノ、fltp、89 kb / s
[libx264 @ 0x369c5e0] SAR = 1/1を使用
[libx264 @ 0x369c5e0] CPU機能の使用:MMX2 SSE2Fast SSSE3 FastShuffle SSE4.2 AVX
[libx264 @ 0x369c5e0]プロファイル高、レベル4.0
[libx264 @ 0x369c5e0] 264-コア129 r2230 1cffe9f-H.264 / MPEG-4 AVCコーデック-Copyleft 2003-2012-http://www.videolan.org/x264.html-オプション:cabac = 1 ref = 3ブロック解除= 1:0:0 analyse = 0x3:0x113 me = hex subme = 7 psy = 1 psy_rd = 1.00:0.00 mixed_ref = 1 me_range = 16 chroma_me = 1 trellis = 1 8x8dct = 1 cqm = 0 deadzone = 21,11 fast_pskip = 1 chroma_qp_offset = -2 threads = 6 lookahead_threads = 1 sliced_threads = 0 nr = 0 decimate = 1 interlaced = 0 bluray_compat = 0 constrained_intra = 0 bframes = 3 b_pyramid = 2 b_adapt = 1 b_bias = 0 direct = 1 weightb = 1 open_gop = 0 weightp = 2 keyint = 250 keyint_min = 15 scenecut = 40 intra_refresh = 0 rc_lookahead = 40 rc = crf mbtree = 1 crf = 23.0 qcomp = 0.60 qpmin = 0 qpmax = 69 qpstep = 4 ip_ratio = 1.40 aq = 1:1.00
出力#0、mp4、「JSP.mp4」へ:
  メタデータ:
    エンコーダー:Lavf54.63.100
    ストリーム#0:0:ビデオ:h264([33] [0] [0] [0] / 0x0021)、yuv420p、1600x880 [SAR 1:1 DAR 20:11]、q = -1--1、15360 tbn 、15 tbc
    メタデータ:
      RECORDMYDESKTOP:0.3.8.1
    ストリーム#0:1:オーディオ:aac([64] [0] [0] [0] / 0x0040)、22050 Hz、モノラル、s16、128 kb / s
ストリームマッピング:
  ストリーム#0:1->#0:0(theora-> libx264)
  ストリーム#0:2->#0:1(vorbis-> libvo_aacenc)
[q]を押すと停止し、[?]を押すとヘルプが表示されます
[ogg @ 0x34d4640]壊れたファイル、非キーフレームが正しくマークされていません。
    最後のメッセージが2回繰り返されました
壊れたファイル、非キーフレームが正しくマークされていません。= 00:00:08.37 bitrate = 28.7kbits / s dup = 66 drop = 0    
壊れたファイル、キーフレームが正しくマークされていません。time= 00:00:51.01 bitrate = 125.3kbits / s dup = 675 drop = 0    
壊れたファイル、キーフレームが正しくマークされていません。time= 00:00:55.05 bitrate = 140.2kbits / s dup = 782 drop = 0    
壊れたファイル、キーフレームが正しくマークされていません。time= 00:00:59.60 bitrate = 140.5kbits / s dup = 836 drop = 0    
[ogg @ 0x34d4640]壊れたファイル、キーフレームが正しくマークされていません。
壊れたファイル、キーフレームが正しくマークされていません。time= 00:01:08.00 bitrate = 143.0kbits / s dup = 900 drop = 0    
壊れたファイル、キーフレームが正しくマークされていません。time= 00:01:11.86 bitrate = 141.6kbits / s dup = 910 drop = 0    

...何度も繰り返されます...

壊れたファイル、キーフレームが正しくマークされていません。time= 00:12:47.62 bitrate = 153.0kbits / s dup = 9087 drop = 0    
frame = 11521 fps = 87 q = -1.0 Lsize = 14849kB time = 00:12:49.48 bitrate = 158.1kbits / s dup = 9087 drop = 0    
ビデオ:2401kBオーディオ:12024kBサブタイトル:0グローバルヘッダー:0kB多重化オーバーヘッド2.938094%
[libx264 @ 0x369c5e0]フレームI:49平均QP:16.05サイズ:29658
[libx264 @ 0x369c5e0]フレームP:2912平均QP:9.88サイズ:114
[libx264 @ 0x369c5e0]フレームB:8560平均QP:12.76サイズ:78
[libx264 @ 0x369c5e0]連続Bフレーム:0.9%0.1%0.2%98.9%
[libx264 @ 0x369c5e0] mb I I16..4:90.8%0.4%8.8%
[libx264 @ 0x369c5e0] mb P I16..4:0.0%0.0%0.0%P16..4:0.0%0.0%0.0%0.0%0.0%skip:99.9%
[libx264 @ 0x369c5e0] mb B I16..4:0.0%0.0%0.0%B16..8:0.3%0.0%0.0%direct:0.0%skip:99.7%L0:65.3%L1:34.6%BI:0.1%
[libx264 @ 0x369c5e0] 8x8変換イントラ:0.5%インター:15.8%
[libx264 @ 0x369c5e0]コード化されたy、uvDC、uvACイントラ:6.4%0.1%0.1%インター:0.0%0.0%0.0%
[libx264 @ 0x369c5e0] i16 v、h、dc、p:94%4%2%0%
[libx264 @ 0x369c5e0] i8 v、h、dc、ddl、ddr、vr、hd、vl、hu:19%22%44%1%2%2%3%1%6%
[libx264 @ 0x369c5e0] i4 v、h、dc、ddl、ddr、vr、hd、vl、hu:35%17%19%4%5%5%5%5%5%
[libx264 @ 0x369c5e0] i8c dc、h、v、p:100%0%0%0%
[libx264 @ 0x369c5e0]加重Pフレーム:Y:0.0%UV:0.0%
[libx264 @ 0x369c5e0] ref P L0:82.5%1.4%11.9%4.3%
[libx264 @ 0x369c5e0] ref B L0:47.2%52.4%0.4%
[libx264 @ 0x369c5e0]参照B L1:99.2%0.8%
[libx264 @ 0x369c5e0] kb / s:25.60

ビデオはまだ早く進んでいますが、時間は異なります。gtk-recordmydesktopが「壊れたファイル」を生成しているようです。面倒なのは、OGVが機能することです。そのため、いくつかのオプションセットでこれを機能させることができるようです。

私はkdenliveでビデオをレンダリングできることを発見しました、そしてそれはそこで働いているようです。まだ何が起こっているのか知りたいのですが。 kdenliveの方がはるかに優れていますが、それでもまだ早い段階で進行することがあります。


2
ffmpegコマンドと結果の完全なコンソール出力を表示してください。
llogan 2013年

良い考え@LordNeckbeardコマンドと出力を追加しました。エラー/警告に気づきました:max_analyze_durationに達しました。
アミールT

ffmpegの最近の静的ビルドを使用しても問題は発生しますか?これにより、ffmpegの新しいバージョンですでに修正されている、遭遇する可能性のある潜在的なバグが除外されます。インストールする必要はありません。ダウンロードしてアーカイブを抽出し、含まれているffmpegバイナリを実行するだけです。
llogan 2013

問題を再現できるサンプル入力ファイルを提供できますか?
llogan 2013

良い考えです。小さなものを作り、今夜遅くに投稿します。
アミールT

回答:


4

最終的なアップロードがYouTubeになるのにOGVに変換する理由は間違っているかもしれませんが、LinuxでもAACオーディオを使用してx264ビデオコーデックに変換し、YouTubeにアップロードすることができます。H264を作成し、OGVファイルの代わりにYouTubeにアップロードしてみて、それが問題かどうかを確認しましたか?それがそれを解決するなら、あなたはそれがyoutubeにアップロードされているOGVの問題であったことを知っているでしょう、そしてそれがそれを解決しない場合、それはyoutubeの解釈または同様の何かのフレームレートの問題である可能性があります。

過去にYouTubeにアップロードされたOGVファイルには多くの問題がありました。この時点でも100%固定されているとは思えません。

http://support.google.com/youtube/bin/answer.py?hl=ja&answer=1722171

編集:オリジナルのフッテージが15fpsにあることにも気づきました...これが問題の原因である可能性が非常に高いです

編集2:質問を少し読み間違えたようです... OGVであるビデオファイルから始めているので、MP4に行くことがわかりました...これにより状況が少し変わります... 。しかし、15fpsと22050 Hzのオーディオとは関係があると思います...サンプルレートはオーディオの同期とは関係がないことを知っていますが、非標準のフレームレートとオーディオのサンプルレートを使用したときの経験から、私はドリフトが見られる傾向がありました...これらを同期させるのはかなり難しいかもしれませんが、安価なビデオエディターで最初の録音後にこれらを編集することはできません...

オーディオのドリフトについてソフトウェアは改善されていますが、キーフレーム同期点は標準ではなく、キーフレームなどを丸める可能性があるため、一般的ではないフレームレートとサンプルレートを使用する場合は、依然として一般的な問題です。

「壊れたファイル、キーフレームが正しくマークされていません」と書かれているところがわかります。それはそれが言及しているものです...

あなたへの私のアドバイスは、それをできるだけ近づけて、それをビデオエディタに取り込み、オーディオをスリップしてカットして、あなたが望む方法に一致させることです。残念ながら時々これはそれが修正される方法です...

ソフトウェアベースのトランスコーダーは、常に機能するわけではありません...同期機能や一定のフレームレートなどを確実に保証するために、protoolsセットアップやavidセットアップにハードウェアが付属している理由を理解してください...

もう1つの方法は、フッテージを標準のフレームレートに変換し、オーディオを再度マリマー化することです。ビデオがドリフトしていると確信しているので、おそらく、わずかに遅くなった後、加速していきます。終わりまたはその逆。

編集:私はこのffmpegコマンドを使用してビデオをオリジナルに同期させることができました...それは私が疑っていたものであるrate句が必要かもしれません

ffmpeg -i sync_test1.ogv -strict experimental -pix_fmt yuv420p -r 15 -vcodec h264 -acodec aac sync_test1.mp4


元のファイルは、ogvコンテナー内のTheoraビデオとVorbisオーディオです。私の知る限り、アミールTはこのフォーマットに再エンコードしていませんが、ffmpegまたはYouTubeでオリジナルを再エンコードしようとすると、同期の問題が発生します。
llogan 2013

入力形式はgtv-recordmydesktopが出力するogvです。私はogv以外(flvなど)に到達しようとしています。
アミールT

私の最新の回答を読んでください...それはFPSの問題だと思います
Chris James Champeau

1
-r 15ffmpegはデフォルトで入力フレームレートを継承し、結果の出力ファイルは-r 15git headのffmpeg(バージョンN-50285-gad89952)とまったく同じであるため、追加は省略と同じです。古いffmpegバージョンを使用して機能している場合、これはリグレッションである可能性があり、FFmpegバグトラッカーに報告する必要があります。
llogan 2013

1
私は@LordNeckbeardと一緒に、これをバグとしてFFMPEGに報告する必要があります
Chris James Champeau

3

Ubuntu 12.04.3 LTSで同様の問題に苦労しました。http://johnvansickle.com/ffmpeg/から入手できる静的なffmpegビルドを使用して問題を修正しました


1
静的ビルドも試してみましたが、多少うまくいきました。おそらくバグは修正されていますが、その場合、静的ビルドのバージョン番号を回答に追加すると便利でしょうか?
アミールT 14

0

コンテナーをトランスコーディングではなくaviに変更してみてください。これはyoutubeに適しています。

ffmpeg -i JSP.ogv -vcodec copy -acodec copy JSP.avi

私はこれを試しましたが、OGVをアップロードする場合と同じように、アップロードが処理を完了しません。この回答はYouTubeがOGVを受け入れる前に行われているため、その変更でなければなりません。ffmpegが4年後もこの変換の問題を抱えていることは不愉快です。
mcr

私のffpmegは、3.2.14-1〜deb9u1(apt-get installed)
mcrです。

静的ビルド(git-20191029)を使用して、上記のすべてのバリエーションを試しましたが、少し改善されていますが、オーディオとビデオの同期が取れていません。試行する場合は、大きな--max_muxing_queue_size値が必要です。私は40960を使用しました。– mcr '30
10/30
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.