ffmpegならこちらへ 2 [転載禁止]©2ch.net
4年越しでスレを使い切ったんですね胸熱ですわ
だのにffmprgって何だお
4 :
名無しさん@お腹いっぱい。:2015/01/12(月) 08:15:08.04 ID:q6szQA/w0
ランチャーの話もここでいいのかな。
デスクトップキャプチャ動画撮影もできるようになってるんだな。
ffmpegのインタレ解除はあまり評判が良くないようですが、
それにしても良くないような気が…
カメラが横にパンするような動きになると、ガタガタになります
インタレ解除するの諦めてとりあえず縮小してみたのですが、
それでも同じようなガタガタな感じになりました
-vf "yadif=0:-1" と指定してます
そういうものでしょうか?
>>8 うわああああ すごく良いですありがとうございます!
なぜかSDぐらいに縮小しないとプレイヤーによってはうまく再生できない感じの
出力になってしまうのですが(60pになるから?)
ソース画質が良くなくてSDぐらいが調度良いと思っていたのでバッチリでした
ありがとう!
10 :
名無しさん@お腹いっぱい。:2015/01/21(水) 20:44:40.78 ID:EPwK+bPo0
>avidemuxにはこの機能
具体的なフィルタ名があればffmpegにもあるかどうか調べられるが
12 :
名無しさん@お腹いっぱい。:2015/01/21(水) 22:50:25.32 ID:EPwK+bPo0
mplayerのgammaです。
よろしくお願いいたします。
13 :
名無しさん@お腹いっぱい。:2015/01/21(水) 22:56:50.90 ID:EPwK+bPo0
14 :
名無しさん@お腹いっぱい。:2015/01/21(水) 23:23:07.21 ID:EPwK+bPo0
解決しました
ありがとうございます。
15 :
名無しさん@お腹いっぱい。:2015/01/22(木) 13:57:21.94 ID:eim2cxaG0
ffmpegで動画の再生時間の取得を行いたいのですが
http://stackoverflow.com/questions/19013536/how-to-get-video-duration-in-seconds とりあえず
ffmpeg -i file.flv 2>&1 | grep "Duration"
これで取得できることが分かりました。
ここからdurationだけを抽出すれば良いのですが
できればsedなどを使ってスマートに抽出を行いたいと考えています
ffmpeg -i file.flv 2>&1 | grep "Duration"| cut -d ' ' -f 4 | sed s/,// | sed 's@\..*@@g' | awk '{ split($1, A, ":"); split(A[3], B, "."); print 3600*A[1] + 60*A[2] + B[1] }'
2383
のようなややこしい記述を使えば良いことは分かるのですが
この記述の仕方について書かれたページがどうしても見つかりません
どういう使い方をすれば良いか教えていただけないでしょうか?
16 :
名無しさん@お腹いっぱい。:2015/01/22(木) 22:51:33.20 ID:NXw7fiXl0
17 :
名無しさん@お腹いっぱい。:2015/01/23(金) 11:22:24.93 ID:AXrRx0vT0
前に書くか後に書くかではなくて、-i付きファイル名のインプットファイルか
ファイル名だけのアウトプットファイル名の前に置くことで
どちらのファイルに影響を与えるかということじゃね?
18 :
名無しさん@お腹いっぱい。:2015/01/23(金) 11:46:42.23 ID:ELoHVAB20
>>17 そういうことなのかとも思ったのですが
つまり、10分の動画を8分からエンコードを開始した場合に
-i付きファイル名の前に書くと2分しかエンコードしないけれど
後ろに書くと最初から10分エンコードして、最後に8分以降をトリムするという意味なのでしょうか?
それで後者の方が正確にトリミングが可能ということですか?
これ合っていますか?
でも、タイムスタンプをリセットとか
前 -ss はフィルタの区間でカットするが、 後 -ss はその時間だけ後ろをカットする
という説明の意味が合わないと思うのですが
どうか教えてください
まずオプションの解釈が最近のバージョンはしっかり整理されたのかこういうことらしい。
ffmpeg [global_options] {[input_file_options] -i ‘input_file’} ... {[output_file_options] ‘output_file’} ...
で、-ssはinputとoutputに作用するから { } のかたまり単位で発動するということ。
-ssで指定した分だけinputを読み飛ばし、-ssで指定した分だけ最初の書き込みを行わない。
で、書き込みを行わなくても中の時間は進んでいるからtrimフィルタの終わりの時間指定に影響が出て
結果指定した長さの分の尻切れになるということじゃね?
20 :
名無しさん@お腹いっぱい。:2015/01/23(金) 14:35:20.10 ID:LC5BlLdH0
>>19 ご回答ありがとうございます。
しかし回答が難しすぎてよく理解できません、
もう少し簡単に分かりやすく説明していただけないでしょうか?
タイムスタンプのリセットというのは何のことを指しているかについても教えていただけないでしょうか?
outputの方に付ける(-iの後に付ける)と出力はされないが
中の時計を回しつつ入力の読み捨ては行われるということ。
-ss 2が付いていれば先頭が2秒というファイルが出てくる。
23 :
名無しさん@お腹いっぱい。:2015/01/23(金) 16:27:06.61 ID:PHqpOry20
>>21 すいません、やはりよく分かっていないのですが
このタイムスタンプというのはffmpegの内部処理の話であって出力されるファイルには残らない情報ですよね?
それで
>>18にも書いたように
outputの方に付ける(-iの後に付ける)方は
2分しか動画を出力しない設定にしてあったとしても
内部では全体をエンコードすることになるということですよね?
では、outputの方に付ける(-iの後に付ける)方のメリットは何なのでしょうか?
タイムスタンプはファイルに残るのですが
残るとしてどこでそれを確認できますか?
エンコードを始めるまでに出力に-ssで指定された分の
入力ファイルのデコードをするというだけじゃね?
ストリーミング対応のコンテナではタイムスタンプが残るが
普通の0から始まるコンテナでは残らないという程度じゃね?
25 :
名無しさん@お腹いっぱい。:2015/01/23(金) 16:51:44.89 ID:pboWliNb0
そうなんですか
mkvとmp4の場合はどうですか?
http://www.asahi-net.or.jp/~ax2s-kmtn/video.html このページを見ると
拡張子: .mkv(動画ファイル)、.mka(音声ファイル)、.mks(ストリーミング・ファイル)
となっています。
mksって字幕ファイルですよね?
字幕を入れるとストリーミングになりますか?
実際、mksでやってみると、
inputにつけると、再生時間が正確ではないけれど、正常に再生される
outputにつけると、再生時間は正確だけれど、再生する最初に3秒程度動画がフリーズする
という現象が起きます
26 :
名無しさん@お腹いっぱい。:2015/01/23(金) 22:41:33.57 ID:/eBko0BJ0
28 :
名無しさん@お腹いっぱい。:2015/01/24(土) 10:34:31.72 ID:Ps+llf6g0
ありがとうございます。
動画も音声も再エンコードなしで
音声をずらしたいのですがffmpegだとできませんか?
avidemuxだと普通にできるのですが・・・
avidemuxはffmpegを元にして作られているため
ffmpegでもできるはずなのですが・・・
(ただ、avidemuxのコマンドラインでは音声関係に不具合があるので使いづらいです
GUI版であれば使えています)
どうかよろしくお願いいたします。
29 :
28:2015/01/24(土) 20:33:35.30 ID:yYj9YxD80
ひいい、誰か教えてください、助けてください
ffmpegって高機能な割に何でこんな基本機能が不十分だったりするんですか??
>>26 分離しなくても、-map を併用して、2つの入力に同じファイルを当てればおk
31 :
名無しさん@お腹いっぱい。:2015/01/24(土) 21:55:43.41 ID:yYj9YxD80
>>30 まじですか?
もう少し詳しくコードを教えていただけないでしょうか?
どうかよろしくお願いいたします。
32 :
名無しさん@お腹いっぱい。:2015/01/24(土) 22:07:31.07 ID:yYj9YxD80
ffmpeg -itsoffset 00:00:01.000 -i "d:\Video1.mp4" -i "d:\Video1.mp4"
-map 0:v -map 1:a -vcodec copy -acodec copy "Video2.mp4"
とすると音声無しになるんですが
何が間違っていますか?
33 :
名無しさん@お腹いっぱい。:2015/01/24(土) 22:17:52.36 ID:yYj9YxD80
動画がそのままで音声だけずらしたいので
ffmpeg -i "d:\Video1.mp4" -itsoffset 00:00:01.000 -i "d:\Video1.mp4"
-map 0:v -map 1:a -vcodec copy -acodec copy "Video2.mp4"
こちらが正しいことに気がつきました
-itsoffset 00:00:01.000 の値が負の時には、動画の最初がフリーズしてしまいます
それでも動画と音声はずれています
正の値にすると、動画だけで音声が無音になってしまいます
これはどうすれば良いでしょうか?
>>31 >>26 の一番下のサイトの質問者の(1)で出来るよ。
音声を0.5秒遅らせる場合
ffmpeg -i input.mp4 -itsoffset 0.5 -i input.mp4 -c copy -map 0:0 -map 1:1 -brand mp42 output.mp4
これでも同じ
ffmpeg -i input.mp4 -ss -0.5 -i input.mp4 -c copy -map 0:0 -map 1:1 -brand mp42 output.mp4
>>33 おっと、出来たみたいだね。
-itsoffseが負の値だと、最初のフレームが指定時間だけ続くし、
正の値だと、音声が指定時間後に開始するのは、そのとおりの正常な動作だと思うけど、
どういう状態が好ましいの?
36 :
名無しさん@お腹いっぱい。:2015/01/24(土) 22:48:30.51 ID:yYj9YxD80
ffmpeg -i input.mp4 -itsoffset 0.5 -i input.mp4 -c copy -map 0:0 -map 1:1 -brand mp42 output.mp4
を使うと、-itsoffset 0.5が正の値でも負の値でも動画の最初がフリーズしてしまいます。
ffmpeg -i input.mp4 -ss -0.5 -i input.mp4 -c copy -map 0:0 -map 1:1 -brand mp42 output.mp4
だと、-ss -0.5が正の値だと正常に出力されました。
ただ、負の値だと最初がフリーズしてしまいます。
一度この0.5のところを00:01:30.000とか長めに設定して試していただけませんか?
37 :
名無しさん@お腹いっぱい。:2015/01/24(土) 22:50:05.90 ID:yYj9YxD80
>>35 avidemuxだとちゃんと
負の値にすると、最初だけ無音になり、
正の値にすると、最後だけ無音になります。
いずれも、動画は一度もフリーズすることなく正常に再生されます。
どうしたら良いでしょうか?
>>36 フリーズ、と言うか最初のフレームがそのままで、指定時間後にはちゃんと動き出すよ。
>>37 > 負の値にすると、最初だけ無音になり、
> 正の値にすると、最後だけ無音になります。
これ、正と負が反対じゃない?
-itsoffsetは正の値でその分後にシフトするのだから、
音声を正の値でシフトすれば、最後が無音になることはないんだけど。
もし、静止状態の画像を切りたいなら、その部分を切り落せばよいかと。
39 :
名無しさん@お腹いっぱい。:2015/01/24(土) 23:27:21.14 ID:yYj9YxD80
±はどちらがどちらかは良く分からなくなってきました
上記で書いたように
ffmpegを使って、
1. 最初だけ無音になる方
2. 最後だけ無音になる方
このうち二番だけうまくいきました。
1番がうまくいきません、
動画の最初がフリーズするとして2番ならまだ起こりえそうな気がしますが
一番でフリーズする理由が分からないのですが
avidemuxでもフリーズせずに出力できていますし、
どうすれば良いでしょうか?
>>39 -itsoffset 正の値で 1番をやってみたけど、
>>35 に書いたとおり、無音の動画が進んで、指定時間後に音声が始まる。
これは想定通りの動作だね。
avidemux(2.6.8)は、うちの環境では早回しみたいになって、かえってダメだったなぁ。
41 :
名無しさん@お腹いっぱい。:2015/01/25(日) 12:38:55.00 ID:zALMB2Zn0
ぐおおおおおおおおおおおお
いろいろ試してみたのですが、
動画によって正の値のみうまくいくものと負の値のみうまくいくものがあります。
両方ともうまくいくというものがなぜかないのですが・・・
コンテナ変えたりいろいろしてみたのですが
> 負の値にすると、最初だけ無音になり、
> 正の値にすると、最後だけ無音になります。
これ、正と負が反対じゃない?
確かに本来ならこれは逆なのですが
なぜか動画ファイルによってはこれが逆になるものがあります。
なんでしょうか?
なぜうまくいかないんでしょうか?
43 :
名無しさん@お腹いっぱい。:2015/01/25(日) 13:14:59.52 ID:zALMB2Zn0
geforceのグラボを使っていますが
どうもドライバのせいではないようです
とりあえず気づいたのですが、
10分の動画があり、これの音声を10秒前か後ろにずらしたいとします。
avidemuxだと音声の前か後ろを10秒カットして9分50秒の音声とした後に
動画と合体を行います。そのため動画の最初や最後に動画のフリーズするような現象が起きません。
一方でffmpegだとこのカットを行わず
10分の音声のままで合体を行っているようです。
そのため動画の最初か最後に10秒間のフリーズが起きてしまいます。
これどうすれば良いでしょうか?
何か他にもオプションを入れないといけない気がするのですが
コンテナに渡すときにコンテナによって符号の解釈が変わるとかw
45 :
名無しさん@お腹いっぱい。:2015/01/25(日) 18:43:56.03 ID:zALMB2Zn0
いろいろ試しましたけど
-ssと-tを組み合わせれば
正と負 どちらともうまくいくことが分かりました
まだ全てのファイルで試したわけではありませんが
46 :
名無しさん@お腹いっぱい。:2015/01/25(日) 19:16:16.78 ID:zALMB2Zn0
すいません
動画の正確な再生時間を取得したいのですが
ffmpeg -i file_path 2>&1 | grep Duration
を実行して取得できるのは小数点以下第二位までです。
真空波動研で調べると00:10:00.033の動画が
この方法だと
00:10:00.03
となってしまい、小数点以下の最後の3桁目まで取得することができません。
どうすれば最後まで取得することができますか?
47 :
名無しさん@お腹いっぱい。:2015/01/25(日) 19:33:40.84 ID:zALMB2Zn0
H.264+PCMは正も負もうまくいきましたが
H.264+MP3は音声を遅らせる方がどうやってもうまくいかないのですが・・・
-sと-itsoffsetともに試してみましたがうまくいきませんでした
ffprobe -show_format
49 :
名無しさん@お腹いっぱい。:2015/01/25(日) 19:37:21.22 ID:zALMB2Zn0
出力ファイルが
mkvだと無音になり、mp4だと音がまったくずれずに出力されます
50 :
名無しさん@お腹いっぱい。:2015/01/25(日) 19:38:09.32 ID:zALMB2Zn0
出力ファイルが
mkvだと無音になり、mp4だと音がまったくずれずに出力されます
51 :
名無しさん@お腹いっぱい。:2015/01/25(日) 19:44:15.51 ID:zALMB2Zn0
いや、4秒以下だとうまくいくことがわかりました
5秒以上だとなぜかうまくいきません
audacityに読み込ませるとちゃんと音声が出力されることから
音声は動画ファイルに書き込まれているのですが
なぜか再生できないようになっているようです
どういう仕様なんでしょうか?
なぜ4秒に境界があるんでしょうか?
52 :
名無しさん@お腹いっぱい。:2015/01/25(日) 20:00:17.56 ID:zALMB2Zn0
>>48 ありがとうございます。
ffprobeの方はうまくいきました
4秒問題の解決策があればどうか教えてください
53 :
名無しさん@お腹いっぱい。:2015/01/25(日) 20:49:45.74 ID:zALMB2Zn0
でもこの仕様avidemuxでもあるようですね
H.264+MP3 →MKV の変換で
5000〜-99999
まで正常にシフトできるのですが、6000以上に設定すると無音になります。
H.264+WAV →MKV の変換だと
99999〜-99999
全て音シフトは行われますが
+24000以上に設定すると動画の最初がフリーズするという現象が起きます。
ぐぬぬうぬ、
Forループで複数回に分けてシフトさせれば良いのでしょうか?
54 :
名無しさん@お腹いっぱい。:2015/01/25(日) 20:52:14.91 ID:zALMB2Zn0
すいません、あと気になっていることなのですが
ある動画ファイルを別の動画ファイルに変換するとき
一回目はコマンドライン上でその経過が表示されます
二回目同じファイルを変換しようとすると
コマンドラインはすぐに消えるのですが
バックグラウンドでHDDが動いており変換が行われているようです
なぜ二回目以降コマンドラインがすぐに消えてしまうのでしょうか?
変換が終わるまで消えないようにするにはどうしたら良いですか?
55 :
53:2015/01/25(日) 20:59:55.83 ID:zALMB2Zn0
やはり駄目ですね
二回連続でシフトをかけてみましたが
6000以上のシフトは受け付けてくれないようです
何かコマンドラインで使える
無劣化の音声編集ソフトがあれば教えてください。
馬鹿には無理
57 :
名無しさん@お腹いっぱい。:2015/01/25(日) 22:13:46.82 ID:zALMB2Zn0
>再圧縮無しでやってみても音声が出ません。
あたりまえじゃん。-an 使ってるんだから
あと、フィルタ通すと無圧縮データで出力されるから -c copy はできない
あとカット開始に無劣化でフレーム数を指定することはできないと思う。
エンコするのなら trim が使えるが。
60 :
名無しさん@お腹いっぱい。:2015/01/25(日) 22:39:12.76 ID:zALMB2Zn0
61 :
名無しさん@お腹いっぱい。:2015/01/25(日) 22:42:51.33 ID:zALMB2Zn0
ちなみに-ssと-tの組み合わせだと
1801が5個と1802が3個出力されるので
vrameの方がまだましだということが分かりました
でも完全に1800ずつにはなぜかスプリットすることができません
62 :
名無しさん@お腹いっぱい。:2015/01/25(日) 22:46:07.37 ID:zALMB2Zn0
1801の動画を再度1800でカットしてみてもやはり1801の動画が出力されます
1799で設定してカットしてみると1800で出力されました
再帰的に設定したフレーム数になるまで繰り返すプログラムを作るしかないでしょうか?
もっと良い方法があれば教えてください
63 :
名無しさん@お腹いっぱい。:2015/01/25(日) 22:56:10.44 ID:zALMB2Zn0
あっ、vramesを指定すると
フレーム数はそれなりに正確になりますが
-ssの方が不正確なので
やはり合体した時につなぎ目がバラバラになりますね
これはどうしようもないことなのでしょうか?
64 :
名無しさん@お腹いっぱい。:2015/01/25(日) 23:03:47.89 ID:zALMB2Zn0
ffmpegを使わない方法でも良いので
動画を無劣化で綺麗にスプリットできる方法があれば教えてください
元映像が何か不明だが GOP のことを考えると無劣化できれいに
指定したフレーム数でカットすることは不可能。
66 :
名無しさん@お腹いっぱい。:2015/01/25(日) 23:46:10.24 ID:zALMB2Zn0
>>65 指定したフレーム毎綺麗でなくても良いので
スプリットした動画を再度合体させても
つなぎ目がシームレスに繋がるように前後の動画で被らないように
スプリットすることはできませんか?
Aviutl使ったことないの?
1フレーム刻みで編集できるんだが
この人前から見かけるけど最終的に何がしたいのか分からない
あと無劣化でスプリットっていうのは可逆圧縮じゃ駄目なの?
そういえば思い出したけど動画と音声が4秒ずれるのはbugじゃなかったな
ffmpeg 4秒問題とかなんとか
前にffmpegで動画を切り取った時、先頭から切り取ると問題ないけど途中から切り取ると4秒ずれるんで
ネットで検索したらいろいろ出てきたなあ
一度エンコしたものは再エンコしてしまえよ。
最初のエンコで劣化しているんだからw
>>69 いろんなソフトのスレで的外れは質問ばかり繰り返してる街基地だと思われる
複数ファイルのバッチ変換したいんだけど、オーディオトラック数に関係なくそのまま変換するオプションの指定ってできますか?
できるなら指定の仕方教えて下さい
>>オーディオトラック数に関係なくそのまま変換するオプション
言っている意味がわからない
主音声のみの動画ファイルと主+副の動画ファイルを同じオプションで、音声トラック数そのままに変換したいのよ
>>76 検証方法
192k 24bitの素のpcm(s24le)データを作る(手元に無かったので):
ffmpeg -i kou.mp3 -c:a pcm_s24le -ar 192000 -ac 2 -f s24le kou.pcm
alacでエンコード:
ffmpeg -f s24le -ar 192000 -ac 2 -i kou.pcm -c:a alac kou_alac.m4a
alacをデコードして素のpcm(s24le)ファイルに戻す:
ffmpeg -i kou_alac.m4a -c:a pcm_s24le -f s24le kou_from_alac.pcm
ファイルを比較(windowsの場合 linuxならdiffコマンドなど):
fc /b kou.pcm kou_from_alac.pcm
今のffmpeg2.5系は192k 24bitしかやってないけど比較結果は全く同じでした
去年の4月頃のビルドはボロボロと差分が出てきて同じにはならなかったので
前はなにか問題があったのかもしれませんね
一応gitのログを見ると2014年8〜9月あたりにalac関連の修正がいろいろ
あるようです
他のサンプリング周波数やビット深度はご自分で検証してくだされ〜
荒削りだったところを直したと。
すみません、全くの初心者なのですけれど
いろいろな動画のファイルがあったとします。
それらを実際の時間で頭のほうを切り落とすことってできますか?
例として、実際にとった動画が9:00より前だったとして、自動的に9:00から始まるようにさせたい
ごめん、なに言ってるのかさっぱりわからない
自分で撮った動画で最初の方の何分かいらないからトリムしたいって意味なのか
それともチャプター0を後ろにずらしたいって意味か
自分で撮った動画の最初何分かいらないからトリムしたいという方です
動画が複数あるので一つ一ついらない部分を探していたら時間がかかってしまったのでどうにかできないかなと思いまして
ffmpeg trim辺りで検索かければそれの情報もったサイトある
ただまあカットした後のファイル出力は再エンコというか無圧縮出力になる
正直ffmpegでカット編集する話はあんまり聞かないな
84 :
名無しさん@お腹いっぱい。:2015/02/04(水) 17:16:55.68 ID:BfPwOCat0
教える側もアホ
ではお手本よろしく
8時59分25秒から録画開始した動画
8時59分40秒から録画開始した動画
8時59分55秒から録画開始した動画
…
があったとして、9痔00分00秒がどのフレームかを自動検出して
それより前のフレームをトリムしたい、ってことかな?
NPTとかで時刻を正確に合わせていたとしても、ファイル内に書かれたタイムスタンプでは
秒までの精度しか出ない
9痔00分00秒に表示されるフレームが同一であれば、検出する方法はあるだろうけれど
87 :
名無しさん@お腹いっぱい。:2015/02/17(火) 11:41:44.16 ID:64vzjoCw0
>特にエラーも出ることもなくコマンドプロンプトが閉じるだけです。
pause でログが見られるはず
89 :
名無しさん@お腹いっぱい。:2015/02/17(火) 23:47:54.12 ID:Q91vPbuD0
ffmpegで複数のファイルを処理しながら
テキストエディタなどの文字を打ちたいのですが
ffmpegでコマンド出力するたびに
コマンドプロンプトが前面に出てくるのですが
これを抑制するにはどうしたら良いですか?
それと出力された動画ファイルが正常で再生可能かどうか
ffmpegで調べるにはどうしたら良いですか?
ffmpegでなくとも良いので、コマンドラインで使えて
正常化どうか調べるソフトがあれば教えてください。
90 :
89:2015/02/18(水) 13:11:30.17 ID:MKCC39TW0
すいません自己解決しました
あと、処理途中にボタンを押しても途中で実行が停止しないようにしたいのですが
どうすれば良いですか?
91 :
名無しさん@お腹いっぱい。:
ffmpegで動画から音声を抽出して保存した時
音声ファイルの形式(mp3かaacか?)も自動で調べて
保存するにはどうしたら良いですか?