< ホームへ戻る

[Ubuntu] マルチメディア機能を使ってみる

2016年05月01日 更新

■音声・動画圧縮基準

BD → H.264(H.265) & Opus(2ch・48kHz) or AAC(2ch・48kHz)
DVD → H.264 & Opus(2ch・48kHz) or AAC(2ch・48kHz)
オーディオ → flac+cue(2ch・44.1kHz)

■FFmpeg用プリセット

「(PRESET)/share/ffmpeg」 、もしくは 「~/.ffmpeg」 に入れて使います。
プリセットのファイル名は、「(コーデック名)-(プリセット名).ffpreset」となっています。
-vcodecや-acodecでコーデック名を記述した後、-vpreや-apreでプリセット名を記述します。

munepi氏のhq-ts風に作ってみたよ。
・H.264 hq-ts風
libx264-hqts.ffpreset
[コマンド例]
$ ffmpeg -y -vsync 1 -i (入力ファイル) -f mp4 -vcodec libx264 -vpre hqts -s (サイズ) (インタレ指定) -aspect (アス比) -r (コマ数) -acodev libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4

・H.265 hq-ts風(になってるのかどうだか?)
libx265-hqts.ffpreset
[コマンド例]
$ ffmpeg -y -vsync 1 -i (入力ファイル) -f mp4 -vcodec libx265 -vpre hqts -s (サイズ) (インタレ指定) -aspect (アス比) -r (コマ数) -acodev libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4

○FFmpeg 動画音声用ffpreset
・FLAC/48000Hz/ステレオ
flac-video.ffpreset
・AAC/48000Hz/CBR 128kbps/ステレオ
libfdk_aac-video.ffpreset
・MP3/48000Hz/CBR 128kbps/ステレオ
libmp3lame-video.ffpreset

○FFmpeg オーディオ音声用ffpreset
・FLAC/44100Hz/ステレオ
flac-audio.ffpreset
・AAC/44100Hz/CBR 128kbps/ステレオ
libfdk_aac-audio.ffpreset
・MP3/44100Hz/CBR 128kbps/ステレオ
libmp3lame-audio.ffpreset


■MEncoder 用プロファイル

~/.mplayer/ に配置する。
mencoder.conf

以下のプロファイルを含んでいます。
・x264-hq-ts → H.264 hq-ts風
・x265-hq-ts → H.265 hq-ts風
・video-flac-stereo → FLAC/48000Hz/ステレオ
・video-faac-stereo → AAC/48000Hz/CBR 128kbps/ステレオ ※FAAC利用の音声は配布不可
・video-mp3-stereo → MP3/48000Hz/CBR 128kbps/ステレオ
・audio-flac-stereo → FLAC/44100Hz/ステレオ
・audio-faac-stereo → AAC/44100Hz/CBR 128kbps/ステレオ ※FAAC利用の音声は配布不可
・audio-mp3-stereo → MP3/44100Hz/CBR 128kbps/ステレオ


■FFmpeg: 入力の情報を表示

$ ffmpeg -i (入力ファイル)
とすると、映像・音声・字幕などの多重構造の情報が見れます。


■MPlayer: 入力の情報を表示

$ mplayer (入力ファイル) -identify
とすると、映像・音声・字幕などの多重構造の情報が見れます。


■FFmpeg: ts -> mp4(H.264/AAC)

[コマンド例] → プログレッシブ(インターレース解除)・hq-ts風で、mp4出力
$ ffmpeg -y -vsync 1 -i (入力).ts -f mp4 -vcodec libx264 -vpre hqts -filter:v yadif -acodec libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4
[コマンド例] → インターレース保持・hq-ts風で、mp4出力
$ ffmpeg -y -vsync 1 -i (入力).ts -f mp4 -vcodec libx264 -vpre hqts -flags +ildct+ilme -acodec libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4


■FFmpeg: ts -> mp4(H.265/AAC)

[コマンド例] → プログレッシブ(インターレース解除)・hq-ts風で、mp4出力
$ ffmpeg -y -vsync 1 -i (入力).ts -f mp4 -vcodec libx264 -vpre hqts -filter:v yadif -acodec libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4
[コマンド例] → インターレース保持・hq-ts風で、mp4出力
$ ffmpeg -y -vsync 1 -i (入力).ts -f mp4 -vcodec libx264 -vpre hqts -flags +ildct+ilme -acodec libfdk_aac -apre video -map 0:0 -map 0:1 (出力).mp4


■MEncoder: ts -> mp4(H.264/AAC)

[コマンド例] → プログレッシブ(インターレース解除)・hq-ts風で、AAC音声で、mp4出力
$ mencoder (入力).ts -vf harddup -of lavf -lavfopts format=mp4 -o (出力).mp4 -profile x264-hq-ts -vf lavcdeint -profile video-faac-stereo
[コマンド例] → インターレース保持・hq-ts風で、Opus音声で、mp4出力
$ mencoder (入力).ts -vf harddup -of lavf -lavfopts format=mp4 -o (出力).mp4 -profile x264-hq-ts -profile video-faac-stereo


■FFmpeg: PC画面&音声 -> mp4

[コマンド例] → PC画面(1920x1080)&PC音声(ステレオ)で、mp4出力
※動画はX11grabで1920x1080、音声はALSAデバイス0を選択した場合。
$ ffmpeg -y -vsync 1 -ac 2 -f alsa -i hw:0 -f x11grab -video_size 1920x1080 -i :0 -f mp4 (出力).mp4


■FFmpeg: カメラ&マイク -> mp4

[コマンド例] → カメラ(1920x1080・30fps)&カメラ付属マイク(モノラル)で、mp4出力
※動画はV4L2の/dev/video0で1920x1080・30fps、音声はALSAデバイス1を選択した場合。
$ ffmpeg -y -vsync 1 -ac 1 -f alsa -i hw:1 -f video4linux2 -video_size 1920x1080 -framerate 30 -i /dev/video0 -f mp4 (出力).mp4


■MPlayer: CDを再生

[コマンド例] → CDを再生
$ mplayer -cdrom-device /dev/cdrom cdda://
[コマンド例] → CDのトラック10を再生
$ mplayer -cdrom-device /dev/cdrom cdda://10


■abcde: CD -> MP3

[コマンド例] -> トラック別に圧縮。CDDBによる曲名・タグ・プレイリスト付き。
$ abcde -d /dev/cdrom0 -o mp3:"-b 128" -acddb,tag,playlist,move,clean -N


■abcde: CD -> FLAC

[コマンド例] -> トラック別に圧縮。CDDBによる曲名・タグ・プレイリスト付き。
$ abcde -d /dev/cdrom0 -o flac -acddb,tag,playlist,move,clean -N
[コマンド例] -> 1つのファイル+cueファイルに圧縮。CDDBによる曲名・タグ付き。
$ abcde -d /dev/cdrom0 -o flac -acddb,tag,cue,move,clean -1 -N


■shntools: ape/FLAC/WAV+cue -> トラック別ファイル

[コマンド例] → ape+cueを、トラック別のFLACに変換
$ shnsplit CDImage.ape -f CDImage.cue -o flac
[コマンド例] → flac+cueを、トラック別のWAVに変換
$ shnsplit CDImage.flac -f CDImage.cue -o wav


■MPlayer: DVDの情報を取得

[コマンド例]
$ mplayer -dvd-device /dev/dvd0 dvd://
※再生時にコンソールに情報が出力される。


■MPlayer: DVDを再生

[コマンド例]
$ mplayer -dvd-device /dev/dvd0 dvd://
[コマンド例] → 音声IDを128、字幕IDを4にして再生
$ mplayer -dvd-device /dev/dvd0 dvd:// -aid 128 -sid 4


■MEncoder: DVD -> mp4(H.264/AAC)

[コマンド例] → プログレッシブ(インターレース解除)・hq-ts風で、mp4出力
$ mencoder -dvd-device /dev/dvd0 dvd:// -vf harddup -of lavf -lavfopts format=mp4 -o (出力).mp4 -profile x264-hq-ts -vf lavcdeint -profile video-faac-stereo
[コマンド例] → インターレース保持・hq-ts風で、mp4出力
$ mencoder -dvd-device /dev/dvd0 dvd:// -vf harddup -of lavf -lavfopts format=mp4 -o (出力).mp4 -profile x264-hq-ts -profile video-faac-stereo
[コマンド例] → 音声IDを128、字幕IDを4にして、プログレッシブ(インターレース解除)・hq-ts風で、AAC出力
$ mencoder -dvd-device /dev/dvd0 dvd:// -aid 128 -sid 4 -vf harddup -of lavf -lavfopts format=mp4 -o (出力).mp4 -profile x264-hq-ts -vf lavcdeint -profile video-faac-stereo

※FAAC利用の音声は配布不可


■FFplay: Blu-rayを再生

[コマンド例]
$ ffplay -i bluray:/dev/sr0
[コマンド例] → 字幕を表示
※0:0が映像、0:1が7.1ch音声、0:20が日本語字幕
$ ffplay -i bluray:/dev/sr0 -vst 0 -ast 1 -sst 20
[コマンド例] → 「ビンボーなウチには7.1ch音声を再生できる環境はねぇ」から、7.1ch音声をステレオ音声に変換
※0:0が映像、0:1が7.1ch音声、0:20が日本語字幕
$ ffplay -i bluray:/dev/sr0 -vst 0 -ast 1 -sst 20 -af "pan=stereo|FL<FL+FC+BL+SL+LFE|FR<FR+FC+BR+SR+LFE"


■MPlayer: Blu-rayを再生

[コマンド例]
$ mplayer -bluray-device /dev/sr0 br://


■FFmpeg: Blu-ray -> mp4(H.264/Opus)

[コマンド例] → Blu-ray(ステレオ)をmp4(H.264/AAC)に圧縮。
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -f mp4 -fpre ~/ffmpeg/libx264-hqts.ffpreset -filter:v yadif -fpre ~/ffmpeg/libfdk_aac-video.ffpreset -map 0:0 -map 0:8 (出力).mp4
[コマンド例] → Blu-ray(ステレオ)の映像にPGS字幕をオーバーレイしてmp4(H.264/AAC)に圧縮。
※0:0が映像、0:8がステレオ音声、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -filter:v yadif -fpre ~/ffmpeg/libfdk_aac-video.ffpreset -map 0:8 (出力).mp4
[コマンド例] → Blu-ray(7.1ch)の映像にPGS字幕をオーバーレイして、7.1ch音声→ステレオ音声に変換してmp4(H.264/AAC)に圧縮。
※0:0が映像、0:1が7.1ch音声(左:FL,BL,SL、右:FR,BR,SR、センター:FC、重低音:LFE)、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -filter:v yadif -filter_complex "[0:1] pan=stereo|FL<FL+FC+BL+SL+LFE|FR<FR+FC+BR+SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4
※サイドやバックがうるさければ、panの指定で音量を下げる。
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -filter:v yadif -filter_complex "[0:1] pan=stereo|FL<FL+FC+0.7*BL+0.7*SL+LFE:FR<|FR+FC+0.7*BR+0.7*SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4
[コマンド例] → Blu-ray(5.1ch side)の映像にPGS字幕をオーバーレイして、5.1ch(side)音声→ステレオ音声に変換してmp4(H.264/AAC)に圧縮。
※0:0が映像、0:1が7.1ch音声(左:FL,SL、右:FR,SR、センター:FC、重低音:LFE)、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -filter:v yadif -filter_complex "[0:1] pan=stereo|FL<FL+FC+SL+LFE|FR<FR+FC+SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4
[コマンド例] → スマホ向けmp4 DVD画質(NTSC)、7.1ch音声→ステレオ音声に変換してmp4(H.264/AAC)に圧縮。
※0:0が映像、0:1が7.1ch音声、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -f mp4 -map 0:0 -fpre ~/ffmpeg/libx264-hqts.ffpreset -s ntsc -filter:v yadif -aspect 16:9 -r 23.98 -filter_complex "[0:1] pan=stereo|FL<FL+FC+BL+SL+LFE|FR<FR+FC+BR+SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4
[コマンド例] → スマホ向けmp4 DVD画質(NTSC)、映像にPGS字幕をオーバーレイして、7.1ch音声→ステレオ音声に変換してmp4(H.264/AAC)に圧縮。
※0:0が映像、0:1が7.1ch音声、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -s ntsc -filter:v yadif -aspect 16:9 -r 23.98 -filter_complex "[0:1] pan=stereo|FL<FL+FC+BL+SL+LFE|FR<FR+FC+BR+SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4
[コマンド例] → スマホ向けmp4 DVD画質(NTSC)、プレイリスト801の映像にPGS字幕をオーバーレイして、7.1ch音声→ステレオ音声に変換してmp4(H.264/AAC)に圧縮。
※0:0が映像、0:1が7.1ch音声、0:20が日本語字幕
$ ffmpeg -y -vsync 1 -playlist 801 -i bluray:/dev/sr0 -filter_complex "[0:0][0:20] overlay [v]" -f mp4 -map [v] -fpre ~/ffmpeg/libx264-hqts.ffpreset -s ntsc -filter:v yadif -aspect 16:9 -r 23.98 -filter_complex "[0:1] pan=stereo|FL<FL+FC+BL+SL+LFE|FR<FR+FC+BR+SR+LFE [a]" -map [a] -fpre ~/ffmpeg/libfdk_aac-video.ffpreset (出力).mp4


■FFmpeg: ネット動画の保存

ChromeやFireFoxにて動画ページの要素を観察して、動画ストリームのURL(通常のURLでない)を取得して、
$ ffmpeg -i "(ストリームURL)" -f matroska -vcodec copy -acodec copy (出力).mkv
とmatroska形式でやれば、とりあえず保存してくれるっぽい。
実際は、認証やらRefererやらが絡むので実用的ではない。