ffmpegで静止画付きの音声ファイルを作る方法

やりたいことは

音声データ.wavに静止画.jpgを付けて動画.flvファイルを作成すること。

 

ググると次のようなコマンド例がでてきた。

 ffmpeg -loop_input -shortest -i gazo.jpg -i onsei.mp3 -vcodec flv -acodec copy -r 1 douga.flv

 

-loop_input -shortest で jpg画像を音声が終るまでループさせるのがミソの様だ。 -shortestがないと延々とエンコが続いてしまう... あと、静止画なのでフレームレートは最低限にするとファイルが小さくできる。

(http://fixedpoint.jp/ffmpeg/ffmpeg-doc.html)

 

とのこと。

 

0 最終的に実行したコマンド

ffmpeg -loop_input -shortest -i image.jpg -i audio.wav -vcodec flv -acodec copy -y -r 1 movie.flv

 
 
以下、コマンドの説明
 
1 一般的な構文

ffmpeg [[infile options][‘-i’ infile]]... {[outfile options] outfile}...

 
2 オプション
 
2.1 静止画を音声が終わるまでループさせる
 
上の参考サイトのとおり
-loop_input -shortest
 
 
2.2 入力ファイル名(パス)の指定
‘-i filename’

 上の参考サイトであれば、静止画ファイルと音声ファイルの2つをinfileとして入力してる。

-i gazo.jpg

-i onsei.mp3

 

2.3 コーデックの方法

 -acodec copy 

 

オーディオのコーデックは、

今回は音声ファイルをありのままコピーしたいので -acodec copy を指定。

-acodec codec

オーディオのコーデックを codec に強制します。未加工のコーデックデータ をありのままコピーするには copy という特別な値を使ってください。 値を使ってください。

http://fixedpoint.jp/ffmpeg/ffmpeg-doc.html

 

ビデオ(ここでは静止画)のコーデックは

-vcodec flvを指定。

 

2.4 フレームレートの設定

‘-r fps
 
上の参考サイトのとおり、 -r 1 とする。
 
フレームレート(Hz での値、分数または省略形)を設定する(既定値は25)。
  • フレームレートは、動画において、単位時間あたりいくつフレーム (映像)・コマのこと)が処理されるかという値。
  • 通常、1秒あたりの数値で表し、fps(Frames Per Second、フレームス パー セコンド)という単位で表す。

 

 2.5 出力ファイルを上書きする設定

‘-y’
 

 以上。

 

 

RにXLConnectパッケージをインストールする方法

RでExcelファイルを扱うのに"XLConnect"という便利なパッケージがあるようだ。

扱いたいファイルがCSVなら問題ないが、

.xlsなどのExcelファイルはRではそのままでは扱えない。

 

"XLConnect"についてはこちらを参照した。

http://d.hatena.ne.jp/dichika/20111203/1322839067

http://www.slideshare.net/dichika/tokyor18

 

install.packages("XLConnect",dep=TRUE)によって

CentOSのRに"XLConnect"パッケージのインストールをしようとしたが、

エラーが出てインストールできない。

依存するパッケージのpackages("rJava")がインストールできないようだ。

 

> install.packages("rJava")

(略)

configure: error: Java Development Kit (JDK) is missing or not registered in R

Make sure R is configured with full Java support (including JDK). Run

R CMD javareconf

as root to add Java support to R.

 

If you don't have root privileges, run

R CMD javareconf -e

to set all Java-related variables and then install rJava.

 

ERROR: configuration failed for package ‘rJava’

* removing ‘/home/hrysim/R/library/rJava’

Warning in install.packages :

  installation of package ‘rJava’ had non-zero exit status

 

The downloaded source packages are in

‘/tmp/RtmpvqHf6w/downloaded_packages’

 

 

Make sure R is configured with full Java support (including JDK). Run

R CMD javareconf ということから

OSにJDKが入れなければいけないのか

 

yumコマンドを使ってJDKをインストール †

http://linux.just4fun.biz/%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2/Java%E3%81%AE%E9%96%8B%E7%99%BA%E7%92%B0%E5%A2%83%E3%82%92CentOS%E3%81%AB%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%99%E3%82%8B%E6%96%B9%E6%B3%95.html

yum install java-1.7.0-openjdk-devel

 

そしてR CMD javareconfを実行

http://r.789695.n4.nabble.com/install-rJava-in-linux-td1579395.html

$ sudo R CMD javareconf 

 

install.packages("XLConnect",dep=TRUE)

でうまくいった。

 

 

 

Cent OS 6.3にffmpegをインストールする方法

ffmpeghttp://ja.wikipedia.org/wiki/FFmpegは動画と音声を変換することのできる多彩なオプションが使用可能なソフトウェア。

 

ffmpegは標準リポジトリで提供されてないパッケージのため,標準ではyumでインストールできないようだ。

そこでRPMforgeリポジトリを導入して、標準リポジトリで提供されないパッケージ(ここではffmpeg)をyumでインストールできるようにする。

 

1 OSのバージョンを確認する

(http://hetare-engineer.blogspot.jp/2011/03/centos-os.htmlを参考に)

 

$ cat /etc/redhat-release 

CentOS release 6.3 (Final)

 

さらにLinuxが32bitなのか64bitなのかを確認する。

(http://linux.just4fun.biz/%E9%80%86%E5%BC%95%E3%81%8DUNIX%E3%82%B3%E3%83%9E%E3%83%B3%E3%83%89/Linux%E3%81%8C32bit%E3%81%8B64bit%E3%82%92%E7%A2%BA%E8%AA%8D%E3%81%99%E3%82%8B.htmlを参考に)

 

$ uname -a

ここではx_86_64の表示があるので64bitと分かる。

 

2 RPMforgeリポジトリを導入するのに2段階の手順を踏む

(http://centossrv.com/rpmforge.shtmlを参考に)

(http://www.penlabo.net/archives/1685も参考)

 

2.1 yum-prioritiesプラグイン導入

$ sudo yum -y install yum-plugin-priorities

 

標準リポジトリとRPMforgeリポジトリの両方で提供されるパッケージについて、yum-prioritiesプラグインを導入して標準リポジトリのパッケージがRPMforgeリポジトリのパッケージで上書きされてしまわないようにするという設定をする。

$ sudo vi /etc/yum.repos.d/CentOS-Base.repo

 

viエディタの使い方(http://net-newbie.com/linux/commands/vi.html)を参考に

 

各セクションの末尾に

priority=1

を追加。

 

2.2 RPMforgeリポジトリ導入

2.2.1 ダウンロード ※CentOS6の場合

$ sudo wget http://pkgs.repoforge.org/rpmforge-release/rpmforge-release-0.5.2-2.el6.rf.i686.rpm

 

2.2.2 インストール※CentOS6の場合

$ sudo rpm -ivh rpmforge-release-0.5.2-2.el6.rf.i686.rpm

 

2.2.3 ダウンロードしたファイルを削除

$ sudo rm -f rpmforge-release-*

 

2.2.4 rpmforge-releaseアップデート

$ sudo yum -y update rpmforge-release

 

これでRPMforgeのお世話になれます。

 

3 いよいよffmpegをyumでインストール

(http://www.jinlingren.com/eid6.htmlを参考に)

 

$ sudo yum --enablerepo=rpmforge install ffmpeg

 

うまいことComplet!した。