avconvで動画を結合するスクリプト。雑。結構前に書いたのを(少し修正して)貼ってみた。 これ書いてて知ったんですが、-vcodec と -c:v って違うみたいですね。 使用例: avjoin v1.mkv v2.mkv "-c:v libx264 -c:a flac" vo.mkv 参考: https://libav.org/faq.html#How-can-I-join-video-files_003f

Format
Shell
Post date
2014-03-06 21:38
Publication Period
Unlimited
  1. #!/bin/sh
  2. #引数の最初からは結合する動画ファイルの連続。
  3. #初めて-で始まる引数が来たらそれは結合後エンコードオプション
  4. #普通変更したいようなものが多数、引数で変更できないので書き換えるべし。
  5. #次の引数は出力先
  6. ins=0
  7. framerate=30
  8. dbg=""
  9. mkdir /tmp/avjoin_$$
  10. while true
  11. do
  12. if printf %s "$1"|grep -q ^-
  13. then
  14. break
  15. elif [ "$1" = "" ]
  16. then
  17. rm -r /tmp/avjoin_$$
  18. exit 1
  19. fi
  20. ins=`expr ${ins} + 1`
  21. $dbg mkfifo /tmp/avjoin_$$/a.${ins}
  22. $dbg mkfifo /tmp/avjoin_$$/v.${ins}
  23. $dbg avconv -i "$1" -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 pipe:1 > /tmp/avjoin_$$/a.${ins} 2>/dev/null < /dev/null &
  24. $dbg avconv -i "$1" -r ${framerate} -an -f image2pipe -vcodec ppm pipe:1 > /tmp/avjoin_$$/v.${ins} 2>/dev/null < /dev/null &
  25. as="${as} /tmp/avjoin_$$/a.${ins}"
  26. vs="${vs} /tmp/avjoin_$$/v.${ins}"
  27. shift
  28. done
  29. $dbg mkfifo /tmp/avjoin_$$/a.a
  30. $dbg mkfifo /tmp/avjoin_$$/v.a
  31. $dbg cat ${as} > /tmp/avjoin_$$/a.a &
  32. $dbg cat ${vs} > /tmp/avjoin_$$/v.a &
  33. $dbg avconv -f u16le -acodec pcm_s16le -ac 2 -ar 44100 \
  34. -i /tmp/avjoin_$$/a.a \
  35. -r ${framerate} -f image2pipe -vcodec ppm \
  36. -i /tmp/avjoin_$$/v.a \
  37. $1 "$2"
  38. rm -r /tmp/avjoin_$$
Download Printable view

URL of this paste

Embed with JavaScript

Embed with iframe

Raw text