アカウント名:
パスワード:
> hotaru.pl | ffmpeg -f u8 -ar 44.1k -ac 1 -i - | ffplay -i -
まず最初に一番簡単な回答。ffplayで再生するだけなら、
> hotaru.pl | ffplay -f u8 -ar 44.1k -ac 1 -i -
だけでOKです。ffplay のデータ入力側は ffmpeg と同じものなので、ffmpegが読めるデータは、ffplayでもそのまま再生できます。
あとはおまけの解説。「ffmpeg…|ffplay -i -」が動かないのは、ffmpegにファイル出力指定がないから。出力ファイル名としての「-」(パイプ)指定と、出力形式の指定が必要です。(ffmpegで出力に普通のファイルを指定した場合は、ファイル名からフォーマットを自動判定してくれますが、パイプ出力の場合は判定できないので、明示的に指定する必要があります。)
というわけで、ffmpeg経由の場合でも、
> hotaru.pl | ffmpeg -f u8 -ar 44.1k -ac 1 -i - -f wav - | ffplay -i -
と、最後に「-f wav -」を追加すれば再生できるようになります。
今回の場合はパイプ処理は別に不要ですが、perl内部で入出力パイプ指定のffmpegを呼びだして「Perlスクリプトが直接mp3を出力する」みたいな応用もできるかと思います。
#ちなみに、私は以前Excelで波形生成 [taka2.info]した時に、このffmpegのrawPCM入力にお世話になりました。#最終生成データはCのソースコード形式ですが、#試行錯誤の段階では、Excelで波形データをテキストで生成→Perlでバイナリ化→ffmpegでヘッダを付けてwavファイルに→聞いてみる、という流れで。
-fオプションが2つあるじゃん…こんなん動くはずないでしょ……動いた…。
なんかffmpegはオプションの順序変えると出力変わるとかいう話もあった気がする。
>踏切ある程度編成長くしないと踏切の鳴動時間短そうだ。
>Excelで波形生成Excelでレイトレ [youtube.com](対抗意識)
> -fオプションが2つあるじゃん…こんなん動くはずないでしょ……動いた…。
入力指定「-i -」より前に指定した「-f u8 …」 は入力に関する設定で、その続きの出力指定「-」より前に指定した「-f wav」は出力の設定になります。
入出力兼用のオプションはどこに入れるかで意味が変わるし、入力に関するオプションを入力指定よりあとに入れたり出力に関するオプションを出力指定よりあとに入れたら無視される、ということで順番大事。「オプションなんて順番関係ないでしょ」と考えてると、意味不明の動作に頭をかかえることになります…ffmpegは癖がありすぎ…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
海軍に入るくらいなら海賊になった方がいい -- Steven Paul Jobs
ffmpegとパイプの使い方 (スコア:1)
> hotaru.pl | ffmpeg -f u8 -ar 44.1k -ac 1 -i - | ffplay -i -
まず最初に一番簡単な回答。ffplayで再生するだけなら、
> hotaru.pl | ffplay -f u8 -ar 44.1k -ac 1 -i -
だけでOKです。ffplay のデータ入力側は ffmpeg と同じものなので、ffmpegが読めるデータは、ffplayでもそのまま再生できます。
あとはおまけの解説。「ffmpeg…|ffplay -i -」が動かないのは、ffmpegにファイル出力指定がないから。出力ファイル名としての「-」(パイプ)指定と、出力形式の指定が必要です。(ffmpegで出力に普通のファイルを指定した場合は、ファイル名からフォーマットを自動判定してくれますが、パイプ出力の場合は判定できないので、明示的に指定する必要があります。)
というわけで、ffmpeg経由の場合でも、
> hotaru.pl | ffmpeg -f u8 -ar 44.1k -ac 1 -i - -f wav - | ffplay -i -
と、最後に「-f wav -」を追加すれば再生できるようになります。
今回の場合はパイプ処理は別に不要ですが、perl内部で入出力パイプ指定のffmpegを呼びだして「Perlスクリプトが直接mp3を出力する」みたいな応用もできるかと思います。
#ちなみに、私は以前Excelで波形生成 [taka2.info]した時に、このffmpegのrawPCM入力にお世話になりました。
#最終生成データはCのソースコード形式ですが、
#試行錯誤の段階では、Excelで波形データをテキストで生成→Perlでバイナリ化→ffmpegでヘッダを付けてwavファイルに→聞いてみる、という流れで。
Re:ffmpegとパイプの使い方 (スコア:1)
-fオプションが2つあるじゃん…こんなん動くはずないでしょ……動いた…。
なんかffmpegはオプションの順序変えると出力変わるとかいう話もあった気がする。
>踏切
ある程度編成長くしないと踏切の鳴動時間短そうだ。
>Excelで波形生成
Excelでレイトレ [youtube.com](対抗意識)
Re:ffmpegとパイプの使い方 (スコア:1)
> -fオプションが2つあるじゃん…こんなん動くはずないでしょ……動いた…。
入力指定「-i -」より前に指定した「-f u8 …」 は入力に関する設定で、その続きの
出力指定「-」より前に指定した「-f wav」は出力の設定になります。
入出力兼用のオプションはどこに入れるかで意味が変わるし、
入力に関するオプションを入力指定よりあとに入れたり
出力に関するオプションを出力指定よりあとに入れたら無視される、ということで順番大事。
「オプションなんて順番関係ないでしょ」と考えてると、意味不明の動作に頭をかかえることになります…ffmpegは癖がありすぎ…