YoutubeをWebpage に変換する Youtube2Webpage を少し試してみました.
これは yt-dlp でYoutube から動画と文字起こしファイルを入手し,文字起こし部分のスクリーンショットを取得してWebpage にするというもののようです.
YoutubeをWebpage に変換する Youtube2Webpage を少し試してみました.
これは yt-dlp でYoutube から動画と文字起こしファイルを入手し,文字起こし部分のスクリーンショットを取得してWebpage にするというもののようです.
Twitter Scapesという音声配信サービスがありますが,基本的にライブ.聴きたいものがあったのですが,体調不良で寝ていて聞けませんでした.
でも30日アーカイブが残るとのことなのでダウンロードしてスマホで聞いてみました.
配信最後までお聴きいただきありがとうござ>いました。アーカイブは 30日間残るようなので、聴き逃した方はぜひどうぞ。今後ともポッドキャスト #セキュリティのアレ をよろしくお願いします!! https://t.co/wUrkGp7nzy
— Masafumi Negishi (@MasafumiNegishi) March 15, 2022
オープンソースカンファレンス2022 Online Springに参加しました.
ビデオミーティングソフトウェアのZoomとYouTube Liveを使っています.セッションは複数トラックあって同時に参加するのは難しいです.ほとんどのセッションは後日YouTubeで公開されますが,YouTube Liveの動画をリモートのサーバで録画しておいたのでこれをスマートフォンで移動中などに聞けるようにしてみました.
Youtubeの動画には音声のみのストリームがあるのでこれをダウンロードしてpodcast的に聞いたりすることがあるのですが,YoutubeLiveには音声のみのストリームはないようです.
$ youtube-dl --ignore-config -F https://www.youtube.com/watch?v=PNWQvqUUHbQ
[youtube] PNWQvqUUHbQ: Downloading webpage
[youtube] PNWQvqUUHbQ: Downloading MPD manifest
[info] Available formats for PNWQvqUUHbQ:
format code extension resolution note
251 webm audio only DASH audio 3k , webm_dash container, opus @160k (48000Hz)
139 m4a audio only DASH audio 49k , m4a_dash container, mp4a.40.5@ 48k (22050Hz)
140 m4a audio only DASH audio 130k , m4a_dash container, mp4a.40.2@128k (44100Hz)
278 webm 256x144 DASH video 95k , webm_dash container, vp9, 30fps, video only
160 mp4 256x144 DASH video 108k , mp4_dash container, avc1.4d400b, 30fps, video only
242 webm 426x240 DASH video 220k , webm_dash container, vp9, 30fps, video only
133 mp4 426x240 DASH video 242k , mp4_dash container, avc1.4d400c, 30fps, video only
243 webm 640x360 DASH video 405k , webm_dash container, vp9, 30fps, video only
134 mp4 640x360 DASH video 463k , mp4_dash container, avc1.4d401e, 30fps, video only
244 webm 854x480 DASH video 752k , webm_dash container, vp9, 30fps, video only
135 mp4 854x480 DASH video 1155k , mp4_dash container, avc1.4d4014, 30fps, video only
247 webm 1280x720 DASH video 1505k , webm_dash container, vp9, 30fps, video only
136 mp4 1280x720 DASH video 2007k , mp4_dash container, avc1.4d401f, 30fps, video only
18 mp4 640x360 360p 494k , avc1.42001E, 30fps, mp4a.40.2@ 96k (44100Hz), 1.34MiB
22 mp4 1280x720 720p 1788k , avc1.64001F, 30fps, mp4a.40.2@192k (44100Hz) (best)
$ youtube-dl --ignore-config -F https://www.youtube.com/watch?v=XXXX-XXXXXX 2>/dev/null
[youtube] XXXX-XXXXXX: Downloading webpage
[youtube] XXXX-XXXXXX: Downloading m3u8 information
[youtube] XXXX-XXXXXX: Downloading MPD manifest
[info] Available formats for XXXX-XXXXXX:
format code extension resolution note
91 mp4 256x144 HLS 197k , avc1.42c00b, 30.0fps, mp4a.40.5@ 48k
92 mp4 426x240 HLS 338k , avc1.4d4015, 30.0fps, mp4a.40.5@ 48k
93 mp4 640x360 HLS 829k , avc1.4d401e, 30.0fps, mp4a.40.2@128k
94 mp4 854x480 HLS 1380k , avc1.4d401f, 30.0fps, mp4a.40.2@128k
95 mp4 1280x720 HLS 2593k , avc1.4d401f, 30.0fps, mp4a.40.2@256k (best)
これをリモートサーバでaudioのみに変換してしまうと細い回線で音声だけ聞くことが出来るのではと試してみました.
(屋外移動中などに聞くのを想定)
YoutubeLiveのダウンロードには youtube-dl
,変換には ffmpeg
を利用しました.
youtube-dl
についてはこのあたりを参考にしてください.
以下ではyoutube-dlで最低画質の動画(フォーマットコード91)の144p/48kな動画をダウンロードして標準出力に渡して,パイプでffmpegで受け取って音声だけ切り出して udp:1234 に配信しています.音質をあげたい場合は360pで128k,720pで256kのようなので対応の動画を選ぶと良いですね.
$ youtube-dl -f 91 $YOUTUBELIVEURL -o - | ffmpeg -i - -c:a copy -vn -f adts udp://127.0.0.1:1234
この状態で ffplay
で受信して再生できました :)
$ ffplay udp://127.0.0.1:1234
リモートのVPSサーバとかでこれをやると外出先でMVNOの低速モードでの受信も問題なさそうです.
自分だけで聞く分にはこれでいいのですが,自分の配信したYoutubeLiveを多人数に音声を配信して聞いてもらいたいなどの場合には使えません.(他の人のものを勝手に不特定配信は駄目)
そこで Icecast2
に流すのも試してみました.
ほほ同じようにして流せました.PCとAndroid端末でモバイル回線の低速モードでも試してみたところ同時に視聴できました :)
$ youtube-dl --ignore-config -f 91 $YOUTUBELIVEURL -o - | ffmpeg -i - -c:a copy -vn -f adts -content_type audio/aac iceca
st://source:password@icecast2.example.org:8000/youtubelivetest
$ youtube-dl --ignore-config -f 91 $YOUTUBELIVEURL -o - | pee "ffplay -" "ffmpeg -i - -c:a copy -vn -f adts -content_type audio/aac iceca
st://source:password@icecast2.example.org:8000/youtubelivetest"
$ mpv http://icecast2.example.org:8000/youtubelivetest.m3u
Playing: http://icecast2.example.org:8000/youtubelivetest
(+) Audio --aid=1 (aac 2ch 48000Hz)
AO: [pulse] 48000Hz stereo 2ch float
A: 00:00:02 / 00:00:10 (24%) Cache: 7.9s/139KB
File tags:
icy-title:
A: 00:00:22 / 00:00:30 (75%) Cache: 7.1s/126KB
YoutbeLive,Icecast2と間にサービスを挟むと遅延はどんどん大きくなるので余裕があったらYoutubeLiveに流すのと同じマシンで直接icecast2に流したほうがいいでしょうね.
懸念点としてはYoutubeのシステム的にこの視聴方法で視聴者数や視聴時間に貢献できるのかというところ.とりあえずは家に帰ったらウェブブラウザ等で視聴し直したり,リモートサーバでウェブブラウザを起動してYoutubeLiveを再生してその音声を取り込んだりするか…….そうなってくるとOBS Studio等を使ったほうがわかりやすいかもしれないですね.
しかし,値段だけ考えると特定のサービスで容量を消費しないカウントフリー,エンタメフリーオプション等でYoutubeに対応したSIMを使うという手も使えそうです.
自分は意思が弱く利用サービスがカウントフリーのものに偏ったりしそうだし,通信を見られるのが嫌なので今のところ使う予定はないです.
$ youtube-dl --version
2020.05.03
$ dpkg-query -W ffmpeg mpv
ffmpeg 7:4.2.2-1+b1
mpv 0.32.0-1
$ lsb_release -dr
Description: Debian GNU/Linux bullseye/sid
Release: unstable
$ uname -m
x86_64
$ youtube-dl --version
2020.05.03
$ dpkg-query -W ffmpeg icecast2
ffmpeg 7:4.1.4-1~deb10u1
icecast2 2.4.4-1
$ lsb_release -dr
Description: Debian GNU/Linux 10 (buster)
Release: 10
$ uname -m
x86_64
先日のttygifで作成したanimation gifをInstagramに投稿しようとしたところ,animation gifは投稿できるけどanimationせず1枚目の画像が表示されるだけです.ffmpegでmp4に変換するだけで良さそうだけど投稿できません.白い動画でプログレスがずっと表示され,「次へ」を押すとアプリ自体が落ちてしまいます.動画は同端末のvlcなどでは問題なく再生できています.
$ ffmpeg -i tty.gif tty.mp4
音声がないのがいけないのかな?と anullsrc
フィルタで無音の音声トラックを追加してみても変わらず.
$ ffmpeg -f lavfi -i anullsrc -i tty.gif -shortest tty.mp4
手詰まりになって検索してみると以下のページを発見.
このページによると以下の条件で投稿できないようです.
今回の動画は20秒ほどなので長さは問題無さそうです.
うまく行っていなかった動画を確認すると元記事と同様 yuv444p
を使っているようです.
$ ffprobe tty.mp4 2>&1 | grep -E "Stream.*Video" Stream #0:0(und): Video: h264 (High 4:4:4 Predictive) (avc1 / 0x31637661), yuv444p, 802x750, 73 kb/s, 4.17 fps, 4.17 tbr, 12800 tbn, 8.33 tbc (default)
てことで,以下のようにカラーエンコーディングに yuv420p
を指定して変換すると投稿できました.(音声トラックはあってもなくてもどちらでもOKだった)
$ ffmpeg -i tty.gif -pix_fmt yuv420p -filter_complex "scale=trunc(iw/2)*2:trunc(ih/2)*2" tty.mp4 $ ffprobe tty.mp4 2>&1 | grep -E "Stream.*Video" Stream #0:0(und): Video: h264 (High) (avc1 / 0x31637661), yuv420p, 1058x750, 97 kb/s, 16.08 fps, 16.08 tbr, 12352 tbn, 32.17 tbc (default)
公式の文章があればいいんですが見つからず.以下が少し近い?
$ dpkg-query -W ffmpeg ffmpeg 7:4.1.4-1+b2 $ lsb_release -dr Description: Debian GNU/Linux bullseye/sid Release: unstable $ uname -m x86_64
$ adb shell dumpsys package com.instagram.android | grep -E 'versionCode|versionName' versionCode=175574628 minSdk=23 targetSdk=28 versionName=113.0.0.39.122 $ adb shell getprop ro.bootimage.build.fingerprint essential/mata/mata:10/QP1A.190711.122/420:user/release-keys $ adb shell getprop ro.build.version.security_patch 2019-09-05 $ adb shell getprop ro.product.cpu.abilist arm64-v8a,armeabi-v7a,armeabi
3/5はOpenDataDayでした.
去年までは鹿児島市で募ってMapCafeと称してOSMする集まりをしていたのですが人が集まらないので今年は家で地図を書こうかと.そしてそのデスクトップをストリーミングしてみようかなと.
ということデスクトップストリーミングの話です.
いつものようにffmpegでRTMP配信なのですが,今回はCastawesome
というGUIの皮を見つけたので試してみました.これを使うとオプションなどがGUIで入力するだけで埋まっていくので便利です.
導入はcloneした後make
するだけ.システムに導入したいならmake install
も.(Raspberry Piでも動きました.)
ffmpeg or avconvとPython 3, GTK-3ライブラリなどが必要です.(make時に足りないものがある場合DEPENDS
が参考になります)
の後
or
してスタートメニューから実行.
こんな画面が出てきてフォームを埋めていくだけでOKです.
配信先はTwitch/YouTube/Hitbox/Pocarto/Local/Customに対応.多分Customを使えばUstream.tvも行けますね.
ただ,細かい設定は苦手だったりエラーチェックも甘く配信されないことも多いのでそういう場合にはターミナルから起動して配信(「録画」ボタン)した時の以下のようなログを利用してffmpeg
で配信するようにするのが良さそうです.
設定ファイルは~/.config/castawesome
以下に保存されます.key
はYouTubeのものを設定しても.twitch_key
というファイルに保存されていました.
よし,これで配信準備出来たと思ったのですが体調悪くスクリーンセーバーを垂れ流しながら寝落ちしてしまっていましたorz
この記事は あひる焼き Advent Calendar 2015の12月15日分の記事です.
#2度めですが1週間ほど空きがあったので.
鶩
🔥
以前こんな記事を書きました.
この時は
#terminal をフレームバッファも含めて動画でスクリーンショットとる方法が解らず今回は仮想マシンで実行してキャプチャしました.だれか端末のフレームバッファも含めての動画でのスクリーンショットのとり方を知ってる人が居たら教えて下さいo
という感じでフレームバッファの動画の録画方法が解らず,別のカメラで画面を録画していました.調べたら方法が見つかったので今回はその手順を紹介したいと思います.
といっても avconv
や ffmpeg
でフレームバッファを指定するだけです.
#Debian stretch からはまた libav から FFmpeg に戻るようです. > libav and FFmpeg: switch over
これで録画したのがこちらです.
これで画面をカメラで録画したりしなくても焼かれるあひるが録画できるようになりました :)