Ⅰ python執行ffmpeg 報錯:at least one output file must be specified
你執行ffmpeg的語句有問題,沒有指明輸出文件,你可以把你的語句貼出來看看。
Ⅱ 如何使用ffmpeg 進行攝像頭錄像
如何才能批量執行同一個目錄下的python文件下面以批量把tmp文件更名為jpg文件為例,代碼如下:importosforfileinos.listdir("."):ifos.path.splitext(file)[1]==".tmp":os.rename(file,os.path.splitext(file)[0]+".jpg"將代碼保存至文件,放至需要對文件進行重命名的文件夾下,運行即可。
Ⅲ python怎麼執行ffmpeg
在ubuntu環境下,在python程序中調用ffmpeg的一條命令:
ffmpeg -i yourVideo.mp4 -vf select='eq(pict_type\,I)' -vsync 2 -s 160x90-f image2 thumbnails-%02d.jpeg
Ⅳ python錄音文件流報錯 在線等
今天aiping點讀筆的MP3源文件出現聲音大小不一致,而且需要將英文單詞MP3與單詞翻譯MP3文件連接起來,剛開始使用ffmpeg效果很差。萬能的gitgub再次證明了它的萬能,我找到了pyb
1 網址:
2 pyb需要依賴 libav或者ffmpeg
4 安裝pyb: pip install pyb
5 使用pyb:
enPath = "%s%s/%s"%(enDir,file,enfile) #英文文件的路徑cnPath = "%s%s/%s"%(cnDir,file,enfile.replace("en_w","cn_w"))#中文文件的路徑targetPath = "%s%s/%s"%(toDir,file,enfile.replace("en_w","all")) #合並文件的路徑#載入MP3文件song1 = AudioSegment.from_mp3(enPath)song2 = AudioSegment.from_mp3(cnPath) #取得兩個MP3文件的聲音分貝db1 = song1.dBFSdb2 = song2.dBFS song1 = song1[300:] #從300ms開始截取英文MP3 #調整兩個MP3的聲音大小,防止出現一個聲音大一個聲音小的情況dbplus = db1 - db2if dbplus < 0: # song1的聲音更小 song1+=abs(dbplus)elif dbplus > 0: #song2的聲音更小 song2+=abs(dbplus) #拼接兩個音頻文件song = song1 + song2 #導出音頻文件song.export(targetPath, format="mp3") #導出為MP3格式
Ⅳ 已有Python腳本里設置command line
具體調用方法如下:
可以通過moviepy直接對視頻整體進行處理。
可以通過ffmpeg對視頻進行frame拆解,拆解出來的可以cv2進行圖片的處理。
可以通過ffmpeg的其他指令(需要藉助terminal進行運行的指令對視頻進行處理。因為python的ffmpeg中並沒有對應的封裝好的可以實現終端中對應的庫函數所可以使用的方法。
利用subprocess子進程去執行指令,這個函數類似網路模型構建中的那種函數,參數很多,但是在一般調用的過程中必要的參數args是要調用的指令的字串,shell=True。
Ⅵ 如何用 ffmpeg 獲取多音軌視頻文件的各個音軌
Input #0, mpeg, from 'a.MPG':
Duration: 00:00:32.32, start: 245.117611, bitrate: 8581 kb/s
Stream #0.0[0x1e0]: Video: mpeg2video, yuv420p, 720x480 [PAR 32:27 DAR 16:9], 9800 kb/s, 59.94 tbr, 90k tbn, 59.94 tbc
Stream #0.1[0x31]: Subtitle: dvdsub
Stream #0.2[0x81]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.3[0x82]: Audio: ac3, 48000 Hz, 5.1, s16, 384 kb/s
Stream #0.4[0x80]: Audio: ac3, 48000 Hz, 5.1, s16, 448 kb/s
Stream #0.5[0x83]: Audio: ac3, 48000 Hz, stereo, s16, 160 kb/s
Stream #0.6[0x84]: Audio: ac3, 48000 Hz, stereo, s16, 160 kb/s
Stream #0.7[0x85]: Audio: ac3, 48000 Hz, stereo, s16, 192 kb/s
Stream #0.8[0x2d]: Subtitle: dvdsub
Stream #0.9[0x2e]: Subtitle: dvdsub
Stream #0.10[0x2f]: Subtitle: dvdsub
Stream #0.11[0x24]: Subtitle: dvdsub
Stream #0.12[0x30]: Subtitle: dvdsub
Stream #0.13[0x2a]: Subtitle: dvdsub
Stream #0.14[0x2b]: Subtitle: dvdsub
Stream #0.15[0x2c]: Subtitle: dvdsub
Stream #0.16[0x23]: Subtitle: dvdsub 2. 轉制音頻文件 可以看到Audio的Stream有2-7個,分別獲取這幾個audio音軌的命令是: Python代碼 ffmpeg -i a.MPG -map 0:2 a.2.wav
ffmpeg -i a.MPG -map 0:3 a.3.wav
Ⅶ 如何在python中調用ffmpeg的命令行語句
os.system(命令)
Ⅷ python安裝pyffmpeg,cython報錯:ImportError: No mole named Cython.Distutils
巧了,我今天也遇到了~
去搜下 visual c++ 2008 express edition ,安裝完之後就可以安裝cython了
Ⅸ python怎麼讀取視屏文件的信息
用python讀取視頻有兩種主要方法,大家可依據自己的需求進行使用。
方法一:
使用imageio庫,沒有安裝的可用pip安裝或自己下載。自己下載的話給大家推薦一個鏡像網站:[pip鏡像](mageio/%20python%E5%BA%93%E9%95%9C%E5%83%8F%E7%BD%91%E7%AB%99),安裝好後重啟終端即可調用。1234
import pylabimport imageio#視頻的絕對路徑filename = '/path/to/your/video.mp4'#可以選擇解碼工具vid = imageio.get_reader(filename, 'ffmpeg')for im in enumerate(vid): #image的類型是mageio.core.util.Image可用下面這一注釋行轉換為arrary
#image = skimage.img_as_float(im).astype(np.float32)
fig = pylab.figure()
fig.suptitle('image #{}'.format(num), fontsize=20)
pylab.imshow(image)
pylab.show()12345678910111213
方法二:
用cv2庫,用這種方法的好處是返回的就是arrary,不用轉換,但方法一可以指定顯示某一幀,而這種方法是從頭讀到尾。
import numpy as npimport matplotlib.pyplot as pltimport pylabimport imageioimport skimage.ioimport numpy as np
import cv2
cap = cv2.VideoCapture('/path/to/your/video.mp4')
while(cap.isOpened()):
ret, frame = cap.read()
cv2.imshow('image', frame)
k = cv2.waitKey(20)
#q鍵退出
if (k & 0xff == ord('q')):
break cap.release()
cv2.destroyAllWindows()
大家可能注意到,兩種方法的顯示方法也是不一樣的,這里不詳細展開,實踐一下便很清楚了。
Ⅹ python如何調用ffmpeg
基本使用如下:
import av
container = av.open(path_to_video)
for frame in container.decode(video=0):
frame.to_image().save('frame-%04d.jpg' % frame.index)
保存關鍵幀:
import av
import av.datasets
content = av.datasets.curated('pexels/time-lapse-video-of-night-sky-857195.mp4')
with av.open(content) as container:
# Signal that we only want to look at keyframes.
stream = container.streams.video[0]
stream.codec_context.skip_frame = 'NONKEY'
for frame in container.decode(stream):
print(frame)
# We use `frame.pts` as `frame.index` won't make must sense with the `skip_frame`.
frame.to_image().save(
'night-sky.{:04d}.jpg'.format(frame.pts),
quality=80,
)