ffmpegの備忘録

少し落ち着いたので過去のメモを放出してみようかなと。

環境は, ffmpeg version 2.7.6-0ubuntu0.15.10.1 なのでバージョンによって違いがあるかも。

●基本の使い方とオプション類

ffmpeg -i [入力ファイル] [変換後ファイル]

  • -vcodec copy は入力ファイルのコーデックを引き継ぐ
  • -an は音声なし
  • -vn は映像なし
  • -acodec aac -strict experimental はAAC音声指定時に必要
  • -acodec libmp3lame -strict unofficial はMP3音声指定時に必要
  • -user-agent または -user_agent でuser-agentの設定

(参考)

  • http://www.teradas.net/archives/3105/
  • https://www.ffmpeg.org/ffmpeg-all.html#http

●トラブルシューテング

エラー:

Could not find codec parameters for stream 0 (Video: h264 ([27][0][0][0] / 0x001B), none): unspecified size Consider increasing the value for the ‘analyzeduration’ and ‘probesize’ options

解決策:

オプションに -analyzeduration 2147483647 -probesize 2147483647 をつけると消える(-iよりも前につけること)

(参考) http://ch.nicovideo.jp/yogpstop/blomaga/ar221948

エラー:

[mp4 @ 0xc67a80] Codec for stream 0 does not use global headers but container format requires global headers
[mp4 @ 0xc67a80] Codec for stream 1 does not use global headers but container format requires global headers

解決策:

オプションに -flags +loop+global_header をつけると消える

(参考) http://blog.k-tai-douga.com/article/47045073.html

エラー:

[mp4 @ 0x8b2760] Malformed AAC bitstream detected: use the audio bitstream filter ‘aac_adtstoasc’ to fix it (‘-bsf:a aac_adtstoasc’ option with ffmpeg)
av_interleaved_write_frame(): Operation not permitted
[mp4 @ 0x8b2760] Malformed AAC bitstream detected: use the audio bitstream filter ‘aac_adtstoasc’ to fix it (‘-bsf:a aac_adtstoasc’ option with ffmpeg)

解決策:

オプションに-bsf:a aac_adtstoascつけると消える

●How-to

m3u8をffmpegでまとめる

UAをiPhoneにしてweb-consoleから*.m3u8ファイルを取得

ffmpeg -user-agent “Mozilla/5.0 (iPhone; CPU iPhone OS 9_2 like Mac OS X) AppleWebKit/601.1 (KHTML, like Gecko) CriOS/47.0.2526.70 Mobile/13C71 Safari/601.1.46” -i “http://sample.com/xxx.m3u8” -flags +loop+global_header -bsf:a aac_adtstoasc -vcodec libx264 -c copy output.mp4

flvをmp4に変換する

before.flvをafter.mp4に変換する

ffmpeg -i before.flv -vcodec libx264 -b 500k -fpre /usr/share/ffmpeg/libx264-medium.ffpreset after.mp4

tsをmp4に変換する

before.tsをafter.mp4に変換する

ffmpeg -i before.ts -vcodec libx264 -acodec aac -strict experimental after.mp4

サムネイルを生成する

動画ファイルbefore.mp4の20秒のコマを抽出してafter.jpgに出力

ffmpeg -ss 20 -vframes 1 -i before.mp4 -f image2 after.jpg

ファイルの統合

大量のファイルを結合するときに便利。シェルと組み合わせればリストの動的生成も簡単。
カレントディレクトリ内の拡張子にmp4と付いているファイルは以下で抽出できる。

find $(pwd)|grep .*.mp4 > list.txt

ffmpeg -f concat -i list.txt -c copy output.mp4

ファイルの結合順に上から列挙したファイルlist.txtを作成する

– – – list.txt – – –
file /home/user/a.mp4
file /home/user/b.mp4

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です