次のコマンドを使用しています。これは、xvidでエンコードされているように見えるものを除いて、ほとんどのファイルで機能します。
/usr/bin/ffmpeg -sameq -i file.avi -ss 00:01:00 -t 00:00:30 -ac 2 -r 25 -copyts output.avi
したがって、これは基本的に、1分マークから開始して30秒のビデオ+オーディオをスプライスアウトする必要があります。
00:01:00マークでエンコードを開始しますが、30秒だけが必要であることを無視して、何らかの理由でファイルの最後まで行きます。
出力は次のようになります。
FFmpeg version git-ecc4bdd, Copyright (c) 2000-2010 the FFmpeg developers
built on May 31 2010 04:52:24 with gcc 4.4.3 20100127 (Red Hat 4.4.3-4)
configuration: --enable-libx264 --enable-libxvid --enable-libmp3lame --enable-libopenjpeg --enable-libfaac --enable-libvorbis --enable-gpl --enable-nonfree --enable-libxvid --enable-pthreads --enable-libfaad --extra-cflags=-fPIC --enable-postproc --enable-libtheora --enable-libvorbis --enable-shared
libavutil 50.15. 2 / 50.15. 2
libavcodec 52.67. 0 / 52.67. 0
libavformat 52.62. 0 / 52.62. 0
libavdevice 52. 2. 0 / 52. 2. 0
libavfilter 1.20. 0 / 1.20. 0
libswscale 0.10. 0 / 0.10. 0
libpostproc 51. 2. 0 / 51. 2. 0
[mpeg4 @ 0x17cf770]Invalid and inefficient vfw-avi packed B frames detected
Input #0, avi, from 'file.avi':
Metadata:
ISFT : VirtualDubMod 1.5.10.2 (build 2540/release)
Duration: 00:02:00.00, start: 0.000000, bitrate: 1587 kb/s
Stream #0.0: Video: mpeg4, yuv420p, 672x368 [PAR 1:1 DAR 42:23], 25 tbr, 25 tbn, 25 tbc
Stream #0.1: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
File 'lol6.avi' already exists. Overwrite ? [y/N] y
Output #0, avi, to 'lol6.avi':
Metadata:
ISFT : Lavf52.62.0
Stream #0.0: Video: mpeg4, yuv420p, 672x368 [PAR 1:1 DAR 42:23], q=2-31, 200 kb/s, 25 tbn, 25 tbc
Stream #0.1: Audio: mp2, 48000 Hz, 2 channels, s16, 64 kb/s
Stream mapping:
Stream #0.0 -> #0.0
Stream #0.1 -> #0.1
Press [q] to stop encoding
[mpeg4 @ 0x17cf770]Invalid and inefficient vfw-avi packed B frames detected
[buffer @ 0x184b610]Buffering several frames is not supported. Please consume all available frames before adding a new one.
frame= 1501 fps=104 q=0.0 Lsize= 15612kB time=30.02 bitrate=4259.7kbits/s ts/s
video:15303kB audio:235kB global headers:0kB muxing overhead 0.482620%
たとえば、このファイルをmp4に変換してから同じアクションを実行すると、完全に機能します。
「MP4に変換」操作は単なるコンテナの変更であり、A/Vデータストリームの完全な再エンコードではないと思います。したがって、おそらくFFmpegはそれらのAVIコンテナで壊れた何かにハングアップしています。出力のこの行は、これをサポートしている可能性があります。
[mpeg4 @ 0x17cf770]無効で非効率的なvfw-aviパックBフレームが検出されました
新しいAVIコンテナを作成してみることができます-FFmpegにファイル全体をコピーさせます。例:
ffmpeg -i input.avi -vcodec copy -acodec copy output.avi
これにより、新しいAVIコンテナが作成され、データストリームがコピーされます。次に、コマンドを再試行してください。それが機能する場合は、壊れたAVI(またはFFmpegのバグ)があります-どちらの方法でも、すべてのビデオを新しいAVIコンテナーに入れて、その方法で実行できます。
それでも問題が解決しない場合は、壊れたXviDをさらに調べて、共通点を確認してください。
あなたの問題はこの記事と同じであるかどうか疑問に思います:
iPodまたはiPhone用のビデオファイルを変換する
おしゃれな新しいApple iPodVideoまたはApple iPhoneを使用したいが、ビデオを変換して再生する方法がわからない。
Ubuntu 9.10(Karmic Koala)には、ライセンスの問題のため、libfaacをサポートしていないバージョンのffmpegが付属しています。これは、ffmpegを自分でコンパイルする必要があることを意味します。このガイドでは、その方法について説明します。
この記事では、ffmpegを手動でコンパイルする方法、またはサポートするlibfaacを含む変更されたffmpegパッケージを作成する方法を段階的に説明しています Advanced Audio Coding (AAC)。