質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

2回答

7123閲覧

python のpyavで音声を再生したい

kokawa2003

総合スコア217

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2019/07/27 07:39

編集2019/07/29 05:45

pythonのpyavで音付き動画を再生したいです。
なんとか画像は出るようになりましたがこれに音をつける方法がわかりません。
(Windowsです)

python

1import av 2import cv2 3 4container = av.open("rtsp://192.168.100.142:8554/in.mp4") 5 6for frame in container.decode(video=0): 7 img = frame.to_ndarray(format='bgr24') 8 cv2.imshow("Test", img) 9 cv2.waitKey(1)

これで画像は出ていますが音声がいまのところ出ていません。
pyaudioでなんとかなるのか?とおもっていろいろ試したのですがうまくできませんでした。
もし知っていればお教えいただけるとありがたいです。

まだ考えています

python

1for frame in container.decode(video=0,audio=1): 2 print (type(frame)) 3 if type(frame) is av.video.frame.VideoFrame: 4 img = frame.to_ndarray(format='bgr24') 5 cv2.imshow("Test", img) 6 key=cv2.waitKey(1) 7 elif type(frame) is av.audio.frame.AudioFrame: 8 print ("is Audio") 9 audio=frame.to_ndarray(format='s16') 10 #ary=[frame] 11 stream.write(audio) 12 #print (frame.sample_rate) 13 #if packet.stream.type == 'video': 14 # print("is video ") 15 # img = frame.to_ndarray(format='bgr24') 16 # cv2.imshow("Test", img) 17 # key=cv2.waitKey(1) 18 #elif packet.stream.type == 'audio': 19 # print("is audio") 20 #print(packet.stream.type) 21 #print(frame) 22 #img = frame.to_ndarray(format='bgr24') 23 #cv2.imshow("Test", img) 24 #key=cv2.waitKey(1)

こう書き直しました。が依然として音はでません

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

一つお伺いしたいのですが、video=0, audio=1としている理由ってなんでしょうか...
audioのストリームは2つあったりしますか...?
audio=0とするといかがでしょうか...

あとは、こまったことに、それだとビデオのフレームしか出てこないかもしれないです。
参考までにこちらを...

python

1import av 2import cv2 3import pyaudio 4 5container = av.open("rtsp://192.168.100.142:8554/in.mp4") 6#pyaudioの使い方を調べるのが面倒だったので、ストリームの作り方はご自分で追記して下さい... 7 8for packet in container.demux(audio=0, video=0): 9 if type(frame) is av.video.frame.VideoFrame: 10 img = frame.to_ndarray(format='bgr24') 11 cv2.imshow("Test", img) 12 key=cv2.waitKey(1) 13 elif type(frame) is av.audio.frame.AudioFrame: 14 audio=frame.to_ndarray(format='s16') 15 #ary=[frame] 16 stream.write(audio) 17

こんな感じですかね...

投稿2021/03/27 14:12

Marusoftware

総合スコア189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kokawa2003

2021/04/09 02:18

ありがとうございます。ちょっとすきまができたら見ます感謝しております
kokawa2003

2021/04/09 02:22

直接的なことを言えばこの時の問題KIVYのソースを見ていると簡単なMEDIA PLAYERがあったのでそれで解決しました。がこれはこれで悩んでいるので見ますよ。
guest

0

音ですよね?
そしたら、私はsounddeviceを使いました。
pip install sounddeviceで入ります。
えっと、portaudioに依存します。

python3

1import av 2import cv2 3import sounddevice 4import numpy 5 6container = av.open("rtsp://192.168.100.142:8554/in.mp4") 7stream = sounddevice.OutputStream(samplerate=container.stream.audio[0].sample_rate) 8for frame in container.decode(video=0,audio=1): 9 if type(frame) is av.video.frame.VideoFrame: 10 img = frame.to_ndarray(format='bgr24') 11 cv2.imshow("Test", img) 12 key=cv2.waitKey(1) 13 elif type(frame) is av.audio.frame.AudioFrame: 14 audio=frame.to_ndarray(format='s16') 15 audio = numpy.rot90(audio,-1).copy(order="C") 16 stream.write(audio) 17 if stream.stopped: 18 stream.start()

こんな感じでいかがでしょう。問題があったら、お知らせ下さい。(多分おおあり)
こちらは(宣伝すみません)、私の書いたものですが、tkinter(pythonの標準GUIモジュール)で動画を音声つきで再生しようという試みです。(お手伝いいただけるのであれば、大歓迎です!!)
Marusoftware/tkmedia3
まあ、こんな問題や、同期の問題、デバイス関連の問題など、いろいろあるので、まだ改善の余地はありそうですが...

投稿2021/03/08 10:14

Marusoftware

総合スコア189

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問