def test_run_from_stream(): url = "tests/assets/testaudio-1m.mp3" sample_fmt = "s16" out_codec, container = utils.get_audio_codec(sample_fmt) with open(url, "rb") as f: args = { "inputs": [("-", { "f": "mp3" })], "outputs": [("-", { "f": container, "c:a": out_codec, "sample_fmt": sample_fmt })], } out = ffmpegprocess.run(args, capture_log=True, stdin=f) print(f"FFmpeg output: {len(out.stdout)} bytes") print(out.stderr)
def test_run_progress(): url = "tests/assets/testaudio-1m.mp3" sample_fmt = "s16" out_codec, container = utils.get_audio_codec(sample_fmt) def progress(*args): print(args) return False with open(url, "rb") as f: args = { "inputs": [("-", { "f": "mp3" })], "outputs": [("-", { "f": container, "c:a": out_codec, "sample_fmt": sample_fmt })], } ffmpegprocess.run(args, capture_log=True, progress=progress, stdin=f)
def test_popen(): url = "tests/assets/testaudio-1m.mp3" sample_fmt = "s16" out_codec, container = utils.get_audio_codec(sample_fmt) with open(url, "rb") as f: args = { "inputs": [("-", { "f": "mp3" })], "outputs": [("-", { "f": container, "c:a": out_codec, "sample_fmt": sample_fmt })], } proc = ffmpegprocess.Popen(args, capture_log=True, stdin=f) x = proc.stdout.read() if proc.wait(50) is None: print("ffmpeg not stopping") proc.kill() print(f"FFmpeg output: {len(x)} samples")
from ffmpegio import utils, audio, streams import PyQt5 from matplotlib import pyplot as plt # import logging # logging.basicConfig(level=logging.DEBUG) url = "tests/assets/testaudio-1m.mp3" sample_fmt = "s16" ac = 1 out_codec, container = utils.get_audio_codec(sample_fmt) dtype, shape = utils.get_audio_format(sample_fmt, ac) fs, s = audio.read(url, sample_fmt=sample_fmt, ac=1) N = s.shape[0] print(f"N={N}") nread = 10000 T = nread / fs # read random reader = streams.SimpleAudioReader(url) # while True: # x = reader.read(int(fs)) # if x is None or not x.size: # break # print(x.shape) for x in reader.readiter(int(fs)):
def test_get_audio_codec(): cfg = utils.get_audio_codec("s16") assert cfg[0] == "pcm_s16le" and cfg[1] == "s16le"