コマンドラインを使用して、テキストの中央にテキストを描画する方法は?


8

さらにビデオに挿入するには、コマンドラインを使用して中央にテキストを含む画像を描画する必要があります。黒の背景にシンプルな黄色のテキスト。

私はFFmpeg方法を試しました:

ffmpeg -loop 1 -r 1 -i b.png -b:v 1M -vf "scale=320:240, drawtext=fontfile=/usr/share/fonts/truetype/DejaVuSans.ttf: text='Test Text'" -vcodec mpeg4 -acodec aac preroll.mp4

これは私に次のエラーを与えました:

[AVFilterGraph @ 0xf56020] No such filter: 'drawtext'

私はivtoolsをインストールしようdrawtoolとしましidrawたが、これは明らかにデスクトップ環境用です。

Ubuntuでテキストを使用して単純な画像をプログラムで作成する方法は?

回答:


19

このコマンドについて:

convert -background black -size 800x480 -fill "#ff0080"  -pointsize 72 -gravity center label:'Ask Ubuntu' output.png

ここに画像の説明を入力してください

上記のコマンドを使用して、背景色が黒の空の.png画像を作成します。

-background color
   は、背景色を設定します。
   デフォルトの背景色(何も指定されていないか、画像内で見つかった場合)は白です。

作成される画像サイズは800x480(width[xheight])になります。

-size width [xheight] [+ offset]
   は、生の画像の幅と高さを設定します。

-
   グラフィックプリミティブを塗りつぶすときに使用する color。

このオプションは、色の名前、16進数の色、または数値のRGB、RGBA、HSL、HSLA、CMYK、またはCMYKA仕様を受け入れます。color引数を適切に指定する方法の説明については、カラー名を参照してください。

例えば、

 -fill blue
 -fill "#ff0080"
 -fill "rgb(255,0,128)" 

シェルで「#」または括弧が解釈されないようにするには、カラー指定を引用符で囲みます。

色名の完全なリストを印刷するには、-list colorオプションを使用します。

-pointsize size
   PostScript、OPTION1、またはTrueTypeフォントのポイントサイズ。

-gravity type
   は、他のさまざまな設定およびオプションに対する現在の重力提案を設定します。

選択肢には、NorthWest、North、NorthEast、West、Center、East、SouthWest、South、SouthEastがあります。使用-list 重力の完全なリストを取得するために-gravityのあなたのImageMagickのインストールで使用可能な設定を。

label:'your Text Here' テキストをimage.pngに書き込みます。

その他の例ご覧ください

完全なコマンドラインオプションを見る


8

外部ビデオについて話している場合、私はのようなプレースホルダー文字列を使用してinkscapeで単純なSVGを作成し、OLISTRINGそれをどのように表示したいかを取得し、コマンドラインで操作して動的テキストを置き換えます。そして、Inkscapeを使用してラスタライズします。

inkscape -z -e intro.png -w 1920 -h 1080 <(sed 's/OLISTRING/My Video!/' drawing.svg)

このアプローチの本当の利点は、Inkscapeで実行できることによってのみ制限されることです... Inkscapeのレンダリングエンジンのおかげで、かなり鮮明な出力も得られます。

結果は次のとおりです。

ここに画像の説明を入力してください

これからレンダリングされるように(私のを通過sed

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->

<svg
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:cc="http://creativecommons.org/ns#"
   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
   xmlns:svg="http://www.w3.org/2000/svg"
   xmlns="http://www.w3.org/2000/svg"
   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
   width="1920"
   height="1080"
   id="svg2"
   version="1.1"
   inkscape:version="0.48.4 r9939"
   sodipodi:docname="New document 1">
  <defs
     id="defs4" />
  <sodipodi:namedview
     id="base"
     pagecolor="#000000"
     bordercolor="#666666"
     borderopacity="1.0"
     inkscape:pageopacity="1"
     inkscape:pageshadow="2"
     inkscape:zoom="0.35"
     inkscape:cx="375"
     inkscape:cy="520"
     inkscape:document-units="px"
     inkscape:current-layer="layer1"
     showgrid="false"
     inkscape:window-width="1920"
     inkscape:window-height="1130"
     inkscape:window-x="-2"
     inkscape:window-y="-3"
     inkscape:window-maximized="1" />
  <metadata
     id="metadata7">
    <rdf:RDF>
      <cc:Work
         rdf:about="">
        <dc:format>image/svg+xml</dc:format>
        <dc:type
           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
        <dc:title></dc:title>
      </cc:Work>
    </rdf:RDF>
  </metadata>
  <g
     inkscape:label="Layer 1"
     inkscape:groupmode="layer"
     id="layer1"
     transform="translate(0,27.637817)">
    <flowRoot
       xml:space="preserve"
       id="flowRoot2985"
       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:72px;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;text-align:center"><flowRegion
         id="flowRegion2987"><rect
           id="rect2989"
           width="1917.1428"
           height="662.85712"
           x="0"
           y="174.28572"
           style="text-anchor:middle;text-align:center;font-size:72px" /></flowRegion><flowPara
         id="flowPara2991"></flowPara></flowRoot>    <flowRoot
       xml:space="preserve"
       id="flowRoot2993"
       style="font-size:40px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
       transform="translate(0,192.36218)"><flowRegion
         id="flowRegion2995"><rect
           id="rect2997"
           width="1917.1428"
           height="700"
           x="0"
           y="151.42857" /></flowRegion><flowPara
         id="flowPara2999"
         style="font-size:244px;font-weight:bold;text-align:center;text-anchor:middle;fill:#ffff00;-inkscape-font-specification:Sans Bold">OLISTRING</flowPara></flowRoot>    <flowRoot
       xml:space="preserve"
       id="flowRoot3001"
       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:40px;line-height:125%;letter-spacing:0px;word-spacing:0px"><flowRegion
         id="flowRegion3003"><rect
           id="rect3005"
           width="0"
           height="85.714287"
           x="962.85712"
           y="397.14285" /></flowRegion><flowPara
         id="flowPara3007"></flowPara></flowRoot>  </g>
</svg>

7

私は解決策を見つけました:インストールされたImagestick:

sudo apt-get install imagemagick

そして、私は次のようなものを使用しました:

convert -pointsize 36 -fill red -draw 'text 10,10 "Loh pidr text" ' b.png test1.jpg

そして使用します

man convert

ドキュメンテーションを見て、周りを再生します。


-1

ubuntuにはffmpegがなく、代わりにlibavがあるため、ffmpegコマンドは機能しませんでした

ffmpeg -version確認してみてください(0.8.something IIRCが返されます)。

http://ffmpeg.orgから最新バージョン(2.4.3)を入手すると、drawtextが機能します。


奇妙な!私はUbuntu 14.04を使用しており、ffmpegバージョン1.2.6 を返します。私はいくつかの間に意見の相違があったことを知っているffmpegavconv。これavconvはへのリンクffmpegです。とても奇妙。
Paddy Landau
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.