melt
についてはあまり見つけられないので、わかりました コマンドラインの使用法、ここにいくつかの注意事項があります..(そしてこの後、この回答を参照してください Using process replacement to trick programs Expecting files, with specific extensions as argument? - Unix &Linux Stack Exchange for a script example via bash
)
まず、melt
用の Ubuntu/Debian パッケージがあります。 (私は MLT メルト 0.6.2 を搭載した Ubuntu 11.04 を持っています); @Ielton によって提供されたリンクは、"Media Lovin' Toolkit" (MLT) Wiki 用です。melt
の一部です (ただし、openshot
の一部でもあります) および kdenlive
)。 git からのドキュメント テキスト ファイルへのリンクは次のとおりです:mltframework.org/mlt.git/tree - docs/; Wiki に BuildScripts に関するページがあることに注意してください。
今のところ、私が抱えている最大の (唯一の) 問題は、圧縮されていないビデオ構成を (png
として) エクスポートする方法が見つからないことです。 フレーム、または一部の非圧縮ビデオ形式)。
まず、コマンドライン melt
で フレームを介して再生を制御できます。たとえば、15 フレームの長さの白い空白を「作成」し、組み込みの melt
で表示するには プレーヤー、使用
melt -blank 15
melt
で閲覧した場合 stderr
へのコマンド ライン情報も取得します。 組み込みプレーヤーの場合:
$ melt -blank 15
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
|1=-10| |2= -5| |3= -2| |4= -1| |5= 0| |6= 1| |7= 2| |8= 5| |9= 10|
+-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+ +-----+
+---------------------------------------------------------------------+
| H = back 1 minute, L = forward 1 minute |
| h = previous frame, l = next frame |
| g = start of clip, j = next clip, k = previous clip |
| 0 = restart, q = quit, space = play |
+---------------------------------------------------------------------+
Current Position: 15
一度 melt
再生が終了しても終了しないので、q
と入力する必要があります 終了します。
melt
には、いわゆる「プロデューサー」と「コンシューマー」が存在することに注意してください。 .何も指定されていない場合、デフォルトの「コンシューマー」はビデオを再生する SDL (Simple DirectMedia Layer) ウィンドウです。したがって、上記のコマンドは次と同じです:
melt -blank 15 -consumer sdl
したがって、何 melt
を保存したい場合 ファイル形式をサポートするものにコンシューマーを変更する必要があります。コンシューマのリストを取得するには:
$ melt -query "consumers"
---
consumers:
- sdl
- sdl_audio
- sdl_preview
- sdl_still
- gtk2_preview
- avformat
- libdv
- xml
- decklink
- null
...
libdv
コンシューマは DV 形式のデータを直接 stdout
に出力します 、したがって、ビデオを .dv
に保存するには ファイル:
melt -blank 15 -consumer libdv > test.dv
リストされた消費者から、私が試した唯一の形式であることに注意してください。これは別のアプリケーションでも開くことができます libdv
(私は vlc
を使用しました 別のアプリケーションとして);ただし、これは別のタイプのトランスコーディングでは失敗する可能性があります (たとえば、空白の代わりに .flv
からスニペットを変換しようとすると ファイル、結果の .dv ファイルが開き、vlc
で再生されます 、しかし破損しています )。
編集 部;基本的に、一連の file-name を指定できます /in/out スタンザをコマンド ラインで直接実行。 video.avi
というファイルがあるとします。 - 次に、次のことができます:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79
または少し良いフォーマット:
melt \
video.avi in=30 out=79 \
-blank 15 \
video.avi in=30 out=79
これは video.avi
を意味します フレーム 30 からフレーム 79 までが再生されます。次に 15 フレームのブランク。そして video.avi
再びフレーム 30 からフレーム 79 までのシーケンス。
画像を利用するには (たとえば .png
) ビデオ編集コンポジション:
melt \
video.avi in=30 out=79 \
test.png in=0 out=15 \
video.avi in=30 out=79 \
-blank 15
test.png
の場合は注意してください 、 in=
パラメータは 0 である必要はありません - ただし、画像は out
で表示されます -in
時間;この場合、in=0
をそのままにしておくのが最も簡単です。 パラメータを完全にアウトします。
良いことは、この編集シーケンスを保存できることです - または melt
として 呼び出し、シリアル化 - ファイルへ。 2あることに注意してください そのようなシリアル化の方法:「シンプル」または XML。たとえば、上記のコマンドを「単純な」シリアル化されたファイルとして保存するには、 -serialise [filename]
を追加するだけです コマンドに切り替えます:
$ melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -serialise file.melt
Project saved as file.melt.
今度は file.melt
含む:
video.avi
in=30
out=79
-blank
15
video.avi
in=30
out=79
どうやら、この「単純な」シリアル化されたファイル形式には「コメント」文字が含まれていないようです-「# comment
」を追加しようとすると " 行、melt
次のエラーが表示されます:「「# コメント」を読み込めませんでした ' (ただし、それ以外は、そのような行は無視され、再生は続行されるようです)。 ".melt
" は melt
という拡張子のようです 単純なシリアル化されたファイルとして認識します。
さて、このシリアル化されたファイルを再生するには、原則として melt file.melt
を呼び出すだけです。 - ただし、より完全なコマンド ラインは次のようになります:
melt melt_file:file.melt -consumer sdl
...つまり、 melt_file
を使用します file.melt
を開くための「プロデューサー」 、そのフレームを「消費者」 sdl
でレンダリングします (窓)。
私には経験があることに注意してください。(たとえば) .flv
ビデオはコマンド ラインでは問題なく再生されますが、file.melt
で指定するとセグメンテーション エラーが発生します。 シリアライズファイル! .dv
melt
が制作した動画 それ自体は、file.melt
で正常に動作するようです ...
XML タイプのシリアル化は、-consumer xml:
を使用して実現できます。 スイッチ (-serialise
の代わりに) ) - 上記の例は次のようになります:
melt video.avi in=30 out=79 -blank 15 video.avi in=30 out=79 -consumer xml:file.mlt
新しく生成された file.mlt
を「再生」するには XML ファイル、直接 melt file.mlt
できるようになりました - または、より完全なコマンドラインは次のようになります:
melt xml:file.mlt -consumer sdl
...つまり:xml
を使用 "プロデューサー" (注、以前はコンシューマーでした ) file.mlt
を開く 、そのフレームを「消費者」 sdl
でレンダリングします (窓)。
この場合、まったく同じ .flv
を経験したことに注意してください 単純なシリアル化ファイルで segfault を引き起こしたビデオ - XML シリアル化ファイルで問題なく動作します!
この場合、結果の file.mlt
XML ファイルには、解像度、フレーム レート、コーデック情報など、さらに多くの設定がありますが、テキスト エディターで直接操作するのはより困難です:
<?xml version="1.0" encoding="utf-8"?>
<mlt root="/path/to" title="video.avi">
<profile description="automatic" width="320" height="240" progressive="1" sample_aspect_num="1" sample_aspect_den="1" display_aspect_num="320" display_aspect_den="240" frame_rate_num="25" frame_rate_den="1" colorspace="601"/>
<producer id="producer0" in="30" out="79">
<property name="mlt_type">producer</property>
<property name="aspect_ratio">1.000000</property>
<property name="length">125</property>
<property name="eof">pause</property>
<property name="resource">video.avi</property>
<property name="meta.media.nb_streams">2</property>
<property name="meta.media.0.stream.type">video</property>
<property name="meta.media.0.stream.frame_rate">25.000000</property>
<property name="meta.media.0.stream.sample_aspect_ratio">0.000000</property>
<property name="meta.media.0.codec.frame_rate">25.000000</property>
<property name="meta.media.0.codec.pix_fmt">yuv420p</property>
<property name="meta.media.0.codec.sample_aspect_ratio">1.000000</property>
<property name="meta.media.0.codec.colorspace">601</property>
<property name="meta.media.0.codec.name">mpeg4</property>
<property name="meta.media.0.codec.long_name">MPEG-4 part 2</property>
<property name="meta.media.0.codec.bit_rate">0</property>
<property name="meta.media.1.stream.type">audio</property>
<property name="meta.media.1.codec.sample_fmt">s16</property>
<property name="meta.media.1.codec.sample_rate">22050</property>
<property name="meta.media.1.codec.channels">1</property>
<property name="meta.media.1.codec.name">mp2</property>
<property name="meta.media.1.codec.long_name">MP2 (MPEG audio layer 2)</property>
<property name="meta.media.1.codec.bit_rate">64000</property>
<property name="seekable">1</property>
<property name="meta.media.sample_aspect_num">1</property>
<property name="meta.media.sample_aspect_den">1</property>
<property name="meta.attr.title.markup"></property>
<property name="meta.attr.author.markup"></property>
<property name="meta.attr.copyright.markup"></property>
<property name="meta.attr.comment.markup"></property>
<property name="meta.attr.album.markup"></property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mlt_service">avformat</property>
</producer>
<producer id="producer1" in="30" out="79">
<property name="mlt_type">producer</property>
<property name="aspect_ratio">1.000000</property>
<property name="length">125</property>
<property name="eof">pause</property>
<property name="resource">video.avi</property>
<property name="meta.media.nb_streams">2</property>
<property name="meta.media.0.stream.type">video</property>
<property name="meta.media.0.stream.frame_rate">25.000000</property>
<property name="meta.media.0.stream.sample_aspect_ratio">0.000000</property>
<property name="meta.media.0.codec.frame_rate">25.000000</property>
<property name="meta.media.0.codec.pix_fmt">yuv420p</property>
<property name="meta.media.0.codec.sample_aspect_ratio">1.000000</property>
<property name="meta.media.0.codec.colorspace">601</property>
<property name="meta.media.0.codec.name">mpeg4</property>
<property name="meta.media.0.codec.long_name">MPEG-4 part 2</property>
<property name="meta.media.0.codec.bit_rate">0</property>
<property name="meta.media.1.stream.type">audio</property>
<property name="meta.media.1.codec.sample_fmt">s16</property>
<property name="meta.media.1.codec.sample_rate">22050</property>
<property name="meta.media.1.codec.channels">1</property>
<property name="meta.media.1.codec.name">mp2</property>
<property name="meta.media.1.codec.long_name">MP2 (MPEG audio layer 2)</property>
<property name="meta.media.1.codec.bit_rate">64000</property>
<property name="seekable">1</property>
<property name="meta.media.sample_aspect_num">1</property>
<property name="meta.media.sample_aspect_den">1</property>
<property name="meta.attr.title.markup"></property>
<property name="meta.attr.author.markup"></property>
<property name="meta.attr.copyright.markup"></property>
<property name="meta.attr.comment.markup"></property>
<property name="meta.attr.album.markup"></property>
<property name="audio_index">1</property>
<property name="video_index">0</property>
<property name="mlt_service">avformat</property>
</producer>
<playlist id="playlist0">
<entry producer="producer0" in="0" out="49"/>
<blank length="16"/>
<entry producer="producer1" in="0" out="49"/>
</playlist>
<tractor id="tractor0" title="video.avi" global_feed="1" in="0" out="115">
<track producer="playlist0"/>
</tractor>
</mlt>
はいあります。 「メルト」というアプリを使ってみてください。こちらのドキュメントを参照してください。
Debian 派生ディストリビューションを使用している場合:
apt-get install melt
この問題に対する ffmpeg の解決策は次のようになります:
mkfifo temp1 temp2 temp3
ffmpeg -i input.wmv -ss 30 -to 60 -c copy output.wmv temp1 2> /dev/null & \
ffmpeg -i input2.wmv -t 60 -c copy temp2 2> /dev/null & \
ffmpeg -i input3.wmv -i image.png -filter_complex "[0:v][1:v] \
overlay=25:25:enable='between(t,0,20)'" -pix_fmt yuv420p -c:a copy temp3 2> /dev/null & \
ffmpeg -f mpegts -i "concat:temp1|temp2|temp3" -c copy output.mp4
名前付きパイプを使用するため、ディスク上に一時ファイルを作成する必要がなく、ビデオ クリップのチャンクを切り取り、画像を追加できます。
この例では、最初の入力の時間 30 ~ 60 を使用し、次に 2 番目の入力の最初の 1 分を追加し、画像ファイルを挿入してから、3 番目のビデオ全体を挿入します。
から持ち上げられたコード:
ffmpeg 連結ページ:https://trac.ffmpeg.org/wiki/Concatenate
スーパーユーザーページ ffmpeg を使用してビデオを切り出す
スーパーユーザーページ https://video.stackexchange.com/questions/12105/add-an-image-in-front-of-video-using-ffmpeg