「ffmpegの基礎」中国語版 - 12営業時間

12.運用時間

マルチメディア動作時間は次のとおり入力などの選択された部分の遅延時間を設定し、入力ファイルの長さを変更します。これらの時間の発現時間の許容される形態、2つの操作があります。

  • [ - ] HH:MM:SS [.M ...]

  • [ - ] S + [M ...]

    HHは時間を表し、MMは分、SSは秒またはSを表し、mはミリ秒を表します。

オーディオとビデオの持続時間

あなたは-tオプションを使用すると長く設定します

あなたが長いメディアファイルを変更したい場合は、私たちは、-tオプションを使用することができますが、それが直接の秒数を指定することができ、あなたはHHを使用することができます:MM:長いSS.millisecondsはフォームで指定。たとえば、あなたは、私たちがコマンドを使用することができる期間music.mp3という3分を設定します:

ffmpeg -i music.mp3 -t 180 music_3_minutes.mp3

フレーム数を設定することでロングセット

いくつかのケースでは、ときにメディアが指定したフレームの組数は、オプションが利用可能であるより適切な長さであろう。

  • オーディオ:-aframes番号または-frames:数
  • データ:-dframes番号または-frames:D番号
  • ビデオ:-vframes番号または-frames:V数

(秒)持続時間は、私たちが掛けフレームレートを設定するフレームの数に等しくなるように設定する必要があります。たとえば、あなたが長い10分に25 fpsのvideo.aviセットのフレームレートをしたい、我々は、コマンドを使用することができます。

ffmpeg -i video.avi -vframes 15000 video_10_minnutes.avi

開始遅延の設定から

MM:長いSS.millisecondsあなたが入力ファイルから録音を開始したいいくつかの点で、我々はあなたが秒数や形HHを指定することができます-ss(スタートから求める)オプションを使用することができます。このオプションは、どちらかの出力ファイルのエンコーディングの前に置かれた出力ファイルは、より正確になります前に配置することができ、入力ファイルの前に配置することができます。たとえば、次のように私たちは、10秒のフォーマット変換から始めたい、コマンドは次のとおりです。

ffmpeg -i input.avi -ss 10 output.mp4

メディアファイルの特定の部分からの抽出物

あなたは、オーディオやビデオファイルの特定のセクションをキャプチャしたい、私たちは、左下隅に-ssと-tオプション、ffplayディスプレイ現在の時刻の両方を使用することができ、あなたは再生や履歴書再生を一時停止するスペースバーまたはPボタンを使用することができます。あなたはvideo.mpgから5日分の一部を保存したい場合たとえば、私たちは、コマンドを使用することができます。

ffmpeg -i video.mpg -ss 240 -t 60 clip_5th_minute.mpg

入力ストリームの間のDo遅延

入力ストリームの間の遅延を達成するには、2つの方法が一般的にあります。1つのストリームの入力ストリームが出力に遅延する必要があるとき、私たちは2つのオプションが必要、-itsoffset(入力タイムスタンプオフセット)オプションが遅れ、特定のストリームを選択する-mapオプションを指定します。などAVI、FLV、MOV、MP4、などさまざまな形式でコンテナがitsoffsetオプションが動作しない場合があり、いくつかのケースでは、異なるヘッダ・データを持っていることをしてくださいノート、そして私たちは流れを遅延させる-ssオプションを使用する必要がありますファイルに保存して、一つのファイルに2つのファイルをマージします。以下の実施例のように、オーディオは1秒だけ遅延されます。

ffmpeg -i input.avi -ss 1 audio.mp3
ffmpeg -i input.avi -i audio.mp3 -map 0:v -map 1:a video.mp4
以下是从 FFmpeg 官网上截取的解释:

-itsoffset offset (input)
Set the input time offset. 
The offset is added to the timestamps of the input files. Specifying a positive offset means that the corresponding streams are delayed by the time duration specified in offset. 

也就是说,将输入项数据显示的时间设置了一个偏移量,如偏移量为2s,那么原本3秒出现的数据,现在会在第5秒出现,而原本第5秒出现的数据会在第7秒时间出现。
注:实际操作赋一个负值,没有起作用,并不会出现数据提前的效果。
注:赋一个正值,在某些封装格式时,也没有效果,正如上文提醒过的一样。

-ss position (input/output)
When used as an input option (before -i), seeks in this input file to position. Note that in most formats it is not possible to seek exactly, so ffmpeg will seek to the closest seek point before position. When transcoding and -accurate_seek is enabled (the default), this extra segment between the seek point and position will be decoded and discarded. When doing stream copy or when -noaccurate_seek is used, it will be preserved. 
When used as an output option (before an output url), decodes but discards input until the timestamps reach position. 

当-ss作为输入选项时,表示将输入的当前位置偏移到指定值。注意,大多数格式中并不能偏移,所以ffmpeg会偏移到指定值前的最近的一个可偏移点。

当-ss作为输出选项时,表示仍然编码所有的数据,但直到-ss指定时间之前的已编码好的数据都会被丢弃。也就是说,如果-ss指定了10分钟,这10分钟的数据仍然要被编码,直到10分钟后的数据才会被保存,并不会因此减少处理的时间。

入力ファイル

入力ファイル場合は、ビデオとオーディオが速い1.5秒よりも、オーディオ、ビデオなど、同期されていない、と我々は、同期を完了するために、オーディオストリームを遅らせることができ、次のように、コマンドは次のとおりです。

ffmpeg -i input.mpv -map 0:v -map 0:a -itsoffset 1.5 -c:a copy -c:v copy output.mov

ビデオが速く5秒である場合は、次のコマンドで同期することができます:

ffmpeg -i input.mov -map 0:v -itsoffset 5 -map 0:a -c:a copy -c:v copy output.mov

2つ以上の入力ファイル

出力が2つ以上の入力ファイルから作成された場合には、オーディオストリームは、通常、後にビデオストリームより開始します。例えば、オーディオストリームは、次のようにコマンドがあり、3秒の遅延されます。

ffmpeg -i v.mpg -itsoffset 3 -i a.mp3 -map 0:v:0 -map 1:a:0 output.mp4

処理時間制限

時々、私たちは、この制限を設定するには長い-timelimitオプションを使用することができ、ランニングタイムffmpegのツールを制限する必要があります。たとえば、私たちは10分後にffmpegの符号化処理を終了したい、我々は、コマンドを使用することができます。

ffmpeg -i input.mpg -timelimit 600 output.mkv

決定するために、符号化ストリームの最短の長さを使用する場合

全体の出力時間の最短入力ストリームの長さのセット長をしたい、我々は-shortestオプションを使用することができ、処理が完了した最小流量ときに、それは符号化処理を終了します。たとえば、あなたが-shortestオプションを使用しない場合は、オーディオファイルは、ファイルが長い短いビデオよりとき、私たちは長い間、音声を超えて、オーディオ出力(節の期間の長さを指定するには、次のコマンドを使用することができ、ファイルvideo.aviとaudio.mp3ミックスへサイレント治療)が使用されます。

ffmpeg -i video.avi -i audio.mp3 -shortest output.mp4

タイムスタンプとタイムベース

メディアコンテナに記録タイムスタンプを設定したい、我々は-timestampオプションを使用することができ、その値は形であってもよいです。

  • 今:現在の時間

  • 現在の日付に、デフォルト値を指定しない場合は日付は、YYYY-MM-DDまたはYYYYMMDDで指定することができます

  • [.M ...] SS [.M ...]またはHHMMSSは、指定され、小数部は任意である:時間のことが可能HH:MM

  • 時間値に先立ち、プラスオプションの文字TまたはT

  • 時間後の値は、ZまたはZは、その後、時間がUTC基準、それ以外の場合は現地時間であれば

例のタイムスタンプ:2010-12-24T12:00:00,20101224t120000z、20101224120000。

例えば、コンソールの流れに関連する映像出力タイミング情報を処理するffmpegの。

Stream #0:0,1,1/25: Video: mpeg4 (Simple Profile) (FMP4 / 0x34504D46) , yuv420p , 320x240 [SAR 1:1 DAR 4:#],25 tbr , 25 tbn , 25 tbc

略語TBRは、TBN TBC 3つの異なるタイムスタンプFFmpegのグループを表します。

ここに画像を挿入説明

エンコーダはイルを設けた場合

ストリームエンコーダのコピーが、時間ベースを設定する必要がある場合、我々はそれが3つの値をとることができ、セット-copytbにオプションを使用することができます。

  • 1:タイムイルデミュクサー

    我々は、非単調に増加するタイムスタンプを防ぐためにこのパラメータを使用することができる可変フレームレート(VBR)ビデオ・ストリームを使用してコピーすると、私は、エンコーダの出力にコピータイムベース対応する入力デマルチプレクサ。

  • 0:タイムベースデコーダ

    タイムスタンプはデコーダ出力エンコーダに対応する入力からコピーされます。

  • -1:デフォルトでは、自動的に最も適切な出力タイムスタンプを選択し、

私たちは、出力時のデマルチプレクサグループを設定する場合、たとえば、以下のように、コマンドは次のとおりです。

ffmpeg -i input.mp4 -copytb 1 output.webm

オーディオビデオ速度変更

修正ビデオスピード

次のように修正したいビデオファイルの速度が、我々はsetptsにフィルタ(セットプレゼンテーションタイムスタンプ)を使用することができ、詳細な説明は次のとおりです。

ここに画像を挿入説明

FPSは、隣接するフレーム間のその後のタイムスタンプの差が25である場合、各ビデオフレームはタイムスタンプ値を含む、ヘッダを含むであろう2つの隣接するフレーム間の差は、例えば、1 / FPSであります0.04秒。あなたがビデオの再生をスピードアップしたい場合は、ビデオの再生を遅くしたい場合は、その後、時間差の値があるため、反対として小さくする必要があり、値の間の時間差を大きくする必要があります。たとえば、あなたは3スピードのビデオを見たい、タイムスタンプが3ジョブによって分割する必要があります。

ffplay -i input.mpg -vf setpts=PTS/3

そして、あなたは3/4の割合で見たい、そして、入力タイムスタンプは、3/4で割っている必要があります。

ffplay -i input.mpg -vf setpts=PTS/(3/4)

オーディオ変速

あなたがしたいオーディオのスピードを調整し、我々はatempoフィルタを使用することができ、の詳細は次の通りです:

ここに画像を挿入説明

たとえば、次のように2倍の音声入力でプレイしたい、コマンドは次のとおりです。

ffplay -i speech.mp3 -af atempo=2

オーディオの0.5倍速再生になりたい、だけatempo 0.5に設定することができます。atempoたちが範囲内に必要なものの範囲を超えて変更した場合、我々は繰り返し所望の効果を達成するためにatempo設定することができます。

オーディオデータを同期するためにタイムスタンプを使用します

asynctsオーディオフィルタは、下に詳述されているオーディオデータを、同期させるためにタイムスタンプを使用することができます。

ここに画像を挿入説明

たとえば、次のようにmusic.mpgデータファイルを同期するためにタイムスタンプを使用する場合は、コマンドは次のとおりです。

ffmpeg -i music.mpg -af asyncts=compensate=1 -f mpegts music.ts

翻訳者注:タイムスタンプについての追加情報は、次のブログを参照してください。

https://www.cnblogs.com/leisure_chn/p/10584910.html

78729440963)]

たとえば、次のようにmusic.mpgデータファイルを同期するためにタイムスタンプを使用する場合は、コマンドは次のとおりです。

ffmpeg -i music.mpg -af asyncts=compensate=1 -f mpegts music.ts

翻訳者注:タイムスタンプについての追加情報は、次のブログを参照してください。

https://www.cnblogs.com/leisure_chn/p/10584910.html

それとも自分で情報を検索します。

リリース7件のオリジナルの記事 ウォンの賞賛4 ビュー821

おすすめ

転載: blog.csdn.net/qq_34305316/article/details/103937475