エンコードソフト ffmpeg のスレ
公式サイト
http://ffmpeg.org/
どうもこれでエンコードしたら、ファイルサイズがでかくなるんだがorz >>419
>>420でいけそうなんじゃないかと思いつつ、
囮のバイクとか用意して犯人おびき寄せて、早いとこ捕まえちゃいなよ。
早く捕まえれれば、その150万するバイクもきれいに戻ってくるかもしれん。 >>420
カメラの設定が20/30fpsしか設定出来ないんですよね・・・
5fpsなら再圧縮に余計時間がかかるんで・・・何かいい方法ないですかね? >>416
カメラの動画形式は MPEG2 で出せる?
IピクチャからJPEG作るようにすれば、2ファイル(フレーム)/秒ぐらいになるぞ。 >>419
画質以前に設置の仕方が悪いんじゃないか
ネットワークカメラならそこで壊されても動画自体はPCに残るんだから
バイクを盗むにもカメラに近づくにも必ず映る場所に設置してれば
画質なんかそれほど問題にならないんでは たまに見かける-hurry upオプションて何の効果があるんでしょうか? 音声AACのAVIでエラーが出ます。
libfaac.dllを入れても変わりません。
どうしたらいいでしょうか?
Stream #0.1: Audio: [6][161][0][0] / 0xA106, 48000 Hz, 2 channels, 128 kb/s
[mp4 @ 01cb0050] track 1: could not find tag, codec not currently supported in c
ontainer その動画ファイルがおかしいんじゃね
ffprobeの結果を見てみたら?
AVIにH.264とAACを突っ込むとこうなるはず
Input #0, avi, from 'test.avi':
Metadata:
ISFT : Lavf52.64.2
Duration: 00:00:11.60, start: 0.000000, bitrate: 1727 kb/s
Stream #0.0: Video: h264, yuv420p, 640x360, 25 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0.1: Audio: aac, 48000 Hz, stereo, s16, 122 kb/s >>428
やはり同じです。
-atag オプション等で修正できないでしょうか?
Metadata:
encoder : Cobra 11.6.0.50930
Duration: 00:06:45.90, start: 0.000000, bitrate: 4100 kb/s
Stream #0.0: Video: h264, yuvj420p, 720x480 [PAR 40:33 DAR 20:11], 29.97 fps
, 29.97 tbr, 29.97 tbn, 59.94 tbc
Stream #0.1: Audio: [6][161][0][0] / 0xA106, 48000 Hz, 2 channels, 128 kb/s
Unsupported codec (id=0) for input stream 1 >>429
やってみた
$ ffmpeg -i org.avi -acodec copy -vcodec copy -atag 0xa106 bad.avi
$ ffprobe bad.avi
Input #0, avi, from 'bad.avi':
Metadata:
ISFT : Lavf52.64.2
Duration: 00:00:11.60, start: 0.000000, bitrate: 1727 kb/s
Stream #0.0: Video: h264, yuv420p, 640x360, 25 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0.1: Audio: 0xa106, 48000 Hz, 2 channels, 122 kb/s
Unsupported codec (id=0) for input stream 1
$ ffmpeg -i bad.avi -acodec copy -vcodec copy -atag 0xff good.avi
$ ffprobe good.avi
Input #0, avi, from 'good.avi':
Metadata:
ISFT : Lavf52.64.2
Duration: 00:00:11.52, start: 0.000000, bitrate: 1740 kb/s
Stream #0.0: Video: h264, yuv420p, 640x360, 25 fps, 25 tbr, 25 tbn, 50 tbc
Stream #0.1: Audio: aac, 48000 Hz, stereo, s16, 122 kb/s
$
>>430
やはり受け付けて貰えません。
0xA106の前の[6][161][0][0]が悪さをしてるんでしょうか。 [6][161][0][0]は0x0000a106を1バイトずつ表示したものだから関係ないと思う
ffmpegのバージョンが関係しているか、または音声ストリームそのものが壊れているか
何かやった時に同じような症状になったようなかすかな記憶はあるんだけど >>432
AVIをバイナリエディタで開いたところ、
vidsH264
audsの後は空白でした。
ここを書き換えてどうにかならないでしょうか? >>433
auds空白は再構築しようとして失敗したファイルでした。
すみません。 バイナリエディタで06 a1を検索してff 00に書き換えてみました。
音は出るようになりましたがffmpegに食わせると物凄い数のエラーが出ます。
どうもストリーム自体壊れているようです。 映像の右側を6px、左側を9pxが黒い帯になってるのだが
それをffmpegで切り取る事って可能なのでしょうか?
また、コマンドが分かりましたら教えてください。 >>436
たぶん
r25518未満
-cropright 6 -cropleft 9
r25518以降
-vf "6:0:width-15:height"
width,heightは動画ファイルの画面サイズ。ffmpeg -iで確認 ffmpegって下に文字を入れたりするのって出来なかったっけ?
確か可能だったはずなのだが、探しても見つからん。 >>438
そんな機能は無い
普通に編集するソフトを使え
Working with subtitles (create, edit, embed) in Linux
ttp://www.dedoimedo.com/computers/linux-subtitles.html >>439
ライブカメラの動画をいつもffmpegで読み込みさせて
1分毎にjpgで保存させているのですが、右下に時刻とか表示させたいなぁと思ってるんですけど。。。 その手の質問は本家のMLでも良く出るけど答えはffmpeg-socを使え。だったかな。 >>440
静止画だけだったらffmpeg 使わないでもっと軽いのでいいんでないかな+Imagemagick
昔はwebcam ってsoft が1分おきに画像取得,文字入れ,sftp アップロードまでやってくれてた http://blog.cheki.net/archives/1571
を参考にさせて頂きffmpegをインストールしているのですが、ffmpegのmakeのところで
libavcodec/x86/vc1dsp_yasm.asm:329: error: operation size not specified
make: *** [libavcodec/x86/vc1dsp_yasm.o] エラー 1
とエラーがでます。
解決方法あれば教えて下さい。
OSはCentOS5.4です。 CentOSなら「CentOS ffmpeg rpmforge」でググって詳しいやり方書いてる
サイトの手順通りにrpmでインストールした方がいいんじゃないかな? >>444
わけも分からず、ffmpeg の svn head なんかもってくることはない。
ffmpeg-0.6 系からビルドすべし。
>>445
一発解決しました。
>>446
libamr_nbとlibopencore-amrnbの問題で
色々試してうまくいかず、ホントわけも
訳もわからずいろんなサイトに縋ってました。
本当にありがとうございました。 >>447
ffmpeg はとりあえず x264 さえビルドできていれば、
最低限使えるようになっていると思う。
あとは、使いたいライブラリを事前にゴリゴリビルドしておいて、
最後に ffmpeg をビルドという感じで。
実際に ffmpeg-0.6 系で十分やと思うよ。 >>448
ありがとうございます。
>>445さんアドバイスでrpmでのインストール実行しました。
ffmpegをビルドからやりなおすと又、エラーになりそうで・・。
只、x264は入れておきたいのでx264導入後、
ffmpeg-06系ビルドに再チャレンジしてみます。
(rpmからインストールしたものにx264が
含まれていないかもまだわかっていませんが。。) FAACを使わないフリー版のAACデコーダーも再配布禁止? 花ノ下ニテ...。: 備忘録 Ubuntu10.10にWebcamStudio導入しUSTREAM放送をする。
http://blog.geroppa.net/2011/01/ubuntu1010webcamstudioustream.html
FFMPEGでUSTREAM : ffmpeg | 市民メディアセンター MediR
http://goo.gl/tplz8
ffmpeg でh.264 Ust 配信もそろそろ行けそうなのか
週末試してみようかな ffmpegにlibvpxを組み込んでコンパイルしようとしているのですが、make時にエラーが出てコンパイル出来ません。
libvpxは事前にコンパイルし、libvpxフォルダをffmpegフォルダ内に置きました。
./configure --enable-shared --enable-swscale --enable-gpl --enable-libvpx --enable-memalign-hack
でMakefileを作成し、makeしたところ
LD libavcodec/avcodec-52.dll
Info: resolving _ff_log2_tab by linking to __imp__ff_log2_tab (auto-import)
Info: resolving _av_reverse by linking to __imp__av_reverse (auto-import)
Info: resolving _av_md5_size by linking to __imp__av_md5_size (auto-import)
Info: resolving _av_pix_fmt_descriptors by linking to __imp__av_pix_fmt_descriptors (auto-import)
Info: resolving _ff_sqrt_tab by linking to __imp__ff_sqrt_tab (auto-import)
This should work unless it involves constant data structures referencing symbols from auto-imported DLLs.
C:/MinGW/lib/libvpx.a(x86_dsystemdependent.c.o):(.text+0x1d): undefined reference to `vp8_dequantize_b_impl_mmx'
~似たような文章のため省略~
C:/MinGW/lib/libvpx.a(loopfilter_x86.c.o):(.text+0xa6c): undefined reference to `vp8_loop_filter_simple_vertical_edge_sse2
'
collect2: ld returned 1 exit status
make: *** [libavcodec/avcodec-52.dll] Error 1
と出て失敗しました。
どなたか対処法をご存知の方がいらしたら教えてください。
すみません、書き忘れました。
gccのバージョンは4.5.0
ffmpegのリビジョンは26402
libvpxはlibbpx-0.9.5-214.tar.bz2
を使用しています。
コンパイル時にはMSYSを用いており、mingwは2010/10/30にリリースされたものを用いています。 >>454
>>455
すみません、スレタイ検索で調べていて板を確認していませんでした。
ありがとうございます。 ffmpeg-mtの公式コミットキタ━(゚∀゚)━!
と思ったら、とりあえずVP3だけだったでござるorz
もう少し待つしかないか… debian lenny(玄箱PRO)でffmpegをapt-getで入れたんだけど
mpeg2videoのコーデックが無いって言われます。
以下コマンドです。
ffmpeg -i $1 -vcodec mpeg2video -target ntsc-svcd -ab 128k -aspect 4:3 -s 720x480 outputfile.mpg
ffmpegの他に何か入れないとダメなのでしょうか?
それとも入れなおしたほうがいいですか? FFmpeg に ffmpeg-mt がマージされたけど、
Libav はどうするんだろう。 >>462
http://libav.org/about.html
> For instance, most of the ffmpeg-mt work has been merged into Libav for quite some time.
> This work is still ongoing, we are still working hard to fix the remaining issues such as
> with multi-threaded h264 decoding.
そもそもffmpeg-mtやってるAlexander Strange自身はLibav派だし PT2で録画したTSファイルからffmpegでメインストリームを取り出したいです
ffmpeg -i 入力ファイル名 -programid プログラムID -vcodec copy -acodec copy 出力ファイル名
と入力したところ、
[mpegts @ 0x20a3310] aac bitstream not in adts format and extradata missing
と出て終了しました
メインストリームを取り出せるようにするにはどうすればいいのでしょうか? エラーメッセージは他にも
[aac @ 0x20bf980] channel element 3.15 is not allocated
[mpeg2video @ 0x20833e0] mpeg_decode_postinit() failure
[aac @ 0x2083c90] channel element 3.9 is not allocated
[mpeg2video @ 0x20833e0] mpeg_decode_postinit() failure
が処理のはじめにも出てきます 最新のバイナリを自ビルドしてそれでもダメならサンプルをバグトラッカーに投げて文句を言えばいい >>465
TSについては録画スレの方が詳しい人が多い
とりあえず、ddでファイルの先頭削ってみれば? >>465
てか、./configure のオプションを全部晒さないと、
何を意図的に有効にしているかわからん。
>>471
./configure のオプションは>>469のサイトの通りです >>465
ffprobe でマッピング調べて、-map オプション使えば取り出せると思うけど。 >>465
progid の取得だったら、tsinfo を使う手もあるな。 >>465,473
ごめん、試してみたら >>465 と同様なエラーが発生して取り出せなかった。 ffmpegをPythonでどうやって快適に使えるか調査中。
ffmpeg自体は十分高速なんだが、Pythonで扱えるデータに変換する段階が遅い。
自作しないといけないんだろうか……。 フォルダにファイルを突っ込んだら自動的にiPad用の動画を別のフォルダにはき出すようにしたいのだけど、
どうすればいいの? >>479
inotifyでディレクトリを監視して、変換スクリプトを起動する ffmpegをコマンドラインで使用して、標準入力から各フレームをbmpで入力して
非圧縮のaviとして出力させようとしています。
そのまま出力させるとavi中のビデオコーデックが勝手にmpeg4にされてしまうので
-vcodec copyを指定することで一応raw(RGB24)にすることは可能なのですが、
こんなところにcopyを使っていいのか不安になります。
-vcodec bmpではなぜ効果がないんでしょうか?
何か別のオプションで解決するんでしょうか? あ!
自己解決しました。
そうか!
-vcodec bmp -i %03d.bmp output.avi
ではなく、
-i %03d.bmp -vcodec bmp output.avi
とすればいいんですね! そう言うのは普通、-vcodec rawvideoとか-pix_fmt bgr24とか使わんか?
まあ、bmpで処理できるんならそれでもいいだろうけど image2pipe のdemuxer腐ってやがるwww
mjpeg以外のコーデックだと途中まで読み込んでハネてしまうがな。こんな実装では。
ffmpegに各フレームをpipe使って入力してエンコードしようと思ったら
mjpeg(JPEG)形式じゃないと現状では正常に受け付けられないね。
他のコーデックを使おうとしたら一旦前フレームをファイルに書き出して、
-f image2 を使ってファイル名ベースで指定してやるしかない。 pythonを使ってffmpegからpipe越しにvideoから1フレームずつ読み書きできるようになった。
あとは音声ストリームも処理できるようにすれば、エンコーダーとして使えるようになるな。 ffmpegには音声のチャンネルレベルでのマッピングみたいなものは無いですよね?
左チャンネルの音と右チャンネルの音を入れ替えてみたりとか
左チャンネルの音を左右両方のチャンネルから出るようにしたりとか
左チャンネルの音を左右両方のチャンネルから出るようにしたりとか。 >>487
俺は分離したあと、soxでモノラル作ってるよ。
linux使いだったら試してみー >>488
ありがとうございます。
やっぱり今のところは他のコマンドに任せるしかないですよね。 デジタル放送の、ステレオ・モノラルが切り替わる時に、
AACデコーダが追従してくれるようにできないかなぁ。 古いアナログHDDレコーダーから持ってきたVROファイルをいじってる。
352x480で保存されたMPEG2を、ffmpegで640x480のh.264にすると
どうも処理がおかしい。著しく画質が落ちる。
先に640x480のイメージにしてからx264しているわけでは無いみたい。
つまり352x264を640x480に拡大したような画質になる…
そういうわけで、一旦640x480のrawvideoに書きだして
そっからx264しようとしたら
"Invalid pixel format string '-1'”
で止まる…どうしたらいいんだろう?
mjpegで一時ファイル作ろうかと思ったんだけど
mjpegのオプションがよくわかんなくなって煮詰まった。
ちなみに352x480のVROは、推定1TB分くらいあるはずで
現状、圧縮を先送りにしておくHDDの余裕が無い orz
異なる解像度のデータをひとつのVROに収納しているから
特定条件でしか、正常にそれを切り分けることもできないみたいだし…
>>491
それって、まずピクセルのアスペクト比自体が正方形じゃないはずだから、
PC用に変換するならフィルターを掛けないといけないんじゃ。
x264にエンコードする際にも一定の難易度があるから、
まずは取り扱い易い非圧縮か可逆の動画に直して
様子を見るといいんじゃないかな。 >>491
へたに拡大するよりも、そのままの解像度でSARを20:11にして、
再生時にプレーヤー側で引き延ばした方が良いと思われ。
>>493
そう、それでrawvideo経由で出たエラーの意味がわからず中断しています。
>>494
ここでH.264にしてしまうと、そっから改めて再エンコードはしないから
例外的なアスペクトにするリスクが気になっています。
たとえば、Android端末での再生はどうだろう?とか…
なにしろ、元がありえないほどひどいので
ここから更に、二度の非可逆エンコードは避けたい。
SHARP HR300(80GB世代家電)の低画質録画モードだったのかな。
積ん録を家電でやるもんじゃ無いと思いましたよ。
今はPT2と中古HDUSの環境構築中 \(^o^)
PT2からのTSファイルをMP4に変換しようとすると、たまに
Program 103
Stream #0.0[0x100]: Video: mpeg2video (Main), yuv420p, 1920x1080...(略)
Stream #0.1[0x110]: Audio: aac, 48000 Hz, stereo, s16, 255 kb/s
Stream #0.2[0x130]: Audio: aac, 0 channels, s16, 352 kb/s
というような、0 channels の音声ストリームを持っているものがあり、これを変換しようとすると
ffmpeg がエラーで落ちることがあります。 これって対応策はあるのでしょうか。
ちなみに、-ac 2 としても変化ありません。 ffmpegの版は git-N-30551-gba91bf です。 二ヵ国語の音声だな。
パッチ作って当てるしかない。 ありがとう。そうなんですね。
パッチ作って当てる、ということなのでffmpegのオプションスイッチでは
解決できないし、パッチ自体も現状存在しないという事と理解しました。
ついでと言ってはナンですが、PT2でのTSファイルの中には、PIDの解析(?)
すら終わらない (ffmpeg -i hoge.ts がハングする)のが結構あります。
HDTVtoMPEG2 とかで無変換ででも一旦通すとffmpegでも通るようになるのですが、
これもどうしようもない物なのでしょうか。 もし、ffmpegでは直接的には
処理できないとした時、Linux Nativeで動くts修正フィルターみたいなのって
ありませんか。(自動化したいのでCLIで動くのが希望) >>498
-mapオプションで0.0と0.1だけ指定、0.2を無視じゃダメ?
ffmpegが即落ちするtsはddで先頭削る
>>498
> 解決できないし、パッチ自体も現状存在しないという事と理解しました。
2sen にある mplayer のパッチに入ってる
ffmpeg/0003-add-dual-mono-support-to-ffdec_aac.patch
じゃダメなのかなぁ?
>>499
恥ずかしながら -map の使い方がよく判らないというのが正直な所なんです。
先の496の例では、-map 0.0:0.0 -map 0.1:0.1 とかにすれば良いのかな。
dd を使うのは思いつかなかった。 単純に188バイト削ればいいのでしょうか。
それとも、sync_byte=0x47 を見つけてそこまで削る?? (ぅ、面倒!)
>>500
ぉお、既にあるのですね。 パッチ確認してみます。
お二方の情報感謝!! wine BonTsDemux.exe で分離して ffmpeg でmp4化という手もあったような。
※長いやつを wine aviutl で mp4export するとキーフレームがなんたらかんたら
で怒られるのを回避したい。 static void opt_passlogfile(const char *arg)
って
static void opt_passlogfile(const char *opt, const char *arg)
じゃないから-passlogfileが通らないんだよね? もうこれだけで。
#! /bin/sh
ffmpeg -programid $1 -i $2 -vcodec copy -acodec copy -absf aac_adtstoasc $3 >>503とその下あたりをopt_default(opt, arg);と書き換えたら
-passlogfileがちゃんと通るようになったや。
書き換える前はffmpeg2passで始まるファイルがデフォルトで
-passlogfile ""を付けるとpasslogfileで始まるファイルに変わるw FFMpegって標準入力を閉じた状態でも動いて、その状態で標準入力から
何か必要になる(出力ファイルの上書き確認とか)とその時に終了する
って感じの動きをするってことでいいのかな?
標準入出力周りがいろいろぐちゃぐちゃになっててよくわからない。 >>506
標準入力を閉じた後でどうやって標準入力から別のシグナルを送り込むんだよ。
使い方にもよるが、通常は引数でフォーマットの全てを指定した上で、
フレーム単位で画像を読み書きしたりする。
なのでフレーム自体はむしろRAW形式を使ったりするな。
Pythonで動画を操作するときはそうしてる。 いや、そのどうやってって状態になるまではちゃんと変換をしてくれて、
どうやってという状態になったら無い入力を待たずに死んでくれる
おりこうさんだったっぽいと。 protocol pipe:がよくわからないんだけど、-i pipe:とすればstdinから読み取り、
そうでない出力ファイル名がくるところでpipe:とすればstdoutへ出力になるってことでいい?
/dev/stdinや/dev/stdoutのデバイスのオープンにはならないから
移植するときに書き換える場所が減る感じで。 >>509
ソース読めばわかるが、pipeプロトコルを使用した場合、
コマンドラインで指定したファイルを単にread/writeしている。
これは低レベルなシステムコールだから
バッファリングされず、Windowsでは使いものにならない。
このことはlivavの開発チームのバグトラッキングに投げておいたが、
大量のバグが修正されるに放置されたままの状況なので、
ずっとこのまんまなんだろうな……。 なんかコンテナの他にビデオやオーディオのストリームにまでcreation_timeを書き込めるみたいですが、
オプションはどう書けば良いんでしょ? ffmpegって他にffmpegが走ってないか確認して走ってたら
自分は勝手にnice 20ったりする? >>513
どうもlibx264の方でスレッドを増やしたときにそんなこともするらしい。 >>514
513はそんな事ができるLinuxはないという意味で言ってると思うの ffmpegって、『Quick Sync Video』は使えるんでしょうか???
先頭から指定したバイト数だけ読み飛ばすオプションって無いですよね? ddか何かで先頭を読み飛ばしたデータをパイプすればいいじゃん