Jpegフレームでいっぱいのディレクトリからビデオ(フォーマットに関係なく)を作成しようとしています。
インターネット上の多くのトピックで見られるように、avconv(v0.8)と、libavのドキュメントを試してみました。
avconv -i samples/*.jpeg output.mpeg
うまく機能し、output.mpegファイルを作成しているようです。
ただし、ファイルはどのリーダー(vlc、banshee、totemなど)でも読み取ることができません。エラーはありませんが、[再生]を押しても何も起こりません。
ビデオファイルのサイズを確認すると、元のビデオは10MBであるのに対し、約20kBです。したがって、データはファイルに保存されていないと想定できます(入力で指定されたフレーム数に関係なく、約20kBです)。
処理のデバッグログのペーストビンを作成しました。私はコーデックの世界に精通していないので、多くのことを理解していません: http://Pastebin.com/9dfxFWZe 。
-s、-r、-b、-vcodec、-f形式などとの組み合わせもたくさん試しますが、問題はまだあります。
私は何か間違ったことをしていますか?
あなたを助けることができることは何でも私に尋ねてください、私は非常に迅速に答えます。
ご協力ありがとうございました :)
avconvは、入力ファイル名をprintfのような構文で指定することを想定しています。シェルワイルドカード(samles/*。jpegなど)を使用するだけでは不十分です。
サンプルの名前はsample/lapinsnipermin/.jpegのようですので、次のコマンドラインを試してください。
avconv -f image2 -i samples/lapinsnipermin/%03d.jpeg output.mpeg
これは機能しますか?ビットレートのオプションを追加することもできます(例:-r25)。
標準のワイルドカードを使用して選択を制御できるように、必要なjpgファイルをパイプ処理する方がよいことがわかりました。次のようにしてみてください。これにより、Webおよびモバイルで(つまり、標準のブラウザータグを使用して)ユーザーが使用できるビデオも出力されます。
cat samples/*.jpeg | avconv -r 30 -f image2pipe -codec:v mjpeg -i - -pix_fmt yuvj420p -r 30 -c:v libx264 -vf scale=480:300 -y output.mp4
グーグルで解決策を探したときに出てきたので、これを復活させます。私はついにこれを使ってそれを動かしました:
knoppix@Microknoppix:~$ avconv -r 1 -i /tmp/photo%d.jpg -r 24 -s 320x240 -vsync cfr /tmp/video.mpg
Avconvに元の名前の入力ファイルを認識させることができませんでした。これは理由を示しています:
knoppix@Microknoppix:~$ strace avconv -i /media/sdb1/DCIM/188_0408/IMGP%04d.JPG /tmp/video.mpg 2>&1 | grep 188_0408
execve("/usr/bin/avconv", ["avconv", "-i", "/media/sdb1/DCIM/188_0408/IMGP%0"..., "/tmp/video.mpg"], [/* 36 vars */]) = 0
stat64("/media/sdb1/DCIM/188_0408/IMGP0000.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0001.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0002.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0003.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
stat64("/media/sdb1/DCIM/188_0408/IMGP0004.JPG", 0xbf925b00) = -1 ENOENT (No such file or directory)
write(2, "/media/sdb1/DCIM/188_0408/IMGP%0"..., 66/media/sdb1/DCIM/188_0408/IMGP%04d.JPG: No such file or directory
開始番号を設定するオプションが表示されなかったので、次のようにしました。
i=0; for file in /media/sdb1/DCIM/188_0408/IMGP28*.JPG; do cp $file /tmp/photo$i.jpg; i=$((i+1)); done
最終結果は私の写真のビデオで、毎秒1枚ずつ表示されます。 -vsync cfr
は、出力フレームレートに一致するように入力フレームをパディングするようにavconvに指示します。