フォルダ内の「.av​i」ファイルを一度に​まとめて「.mp4」​ファイルに変更するこ​とはできますか?

「test01-1-1.avi」、「test01-1-2.avi」、「test01-1-3.avi」....「test03-3-3.avi」ファイルを参照して、同じ名前の「ファイル名.mp4」を作りたいです。
変換前の.aviファイルは1つのフォルダにまとめて入っています。
現在は、「現在のフォルダ」を指定して、以下のコードを実行することによって変換しています。指定するファイル名を変更しながら「.avi」→「.mp4」に変換することは可能でしょうか。もしくは、もしファイル名を指定せずに、フォルダ内の全ファイルに同じ処理をすることが可能でしたら、方法を教えていただけないでしょうか。
よろしくお願いいたします。
%% .avi→.mp4動画への変換
r_filename = 'test01-1-1.avi';
reader = VideoReader(r_filename); % AVI読み込み
w_filename = 'test01-1-1.mp4';
writer = VideoWriter(w_filename, 'MPEG-4'); % MP4書き出し
writer.Quality = 25; % 0から100の数値を指定
writer.FrameRate = reader.FrameRate;
open(writer)
while hasFrame(reader)% Convert AVI frame to MP4
img = readFrame(reader);
writeVideo(writer, img);
end
close(writer);

 Respuesta aceptada

Atsushi Ueno
Atsushi Ueno el 23 de Dic. de 2023
Editada: Atsushi Ueno el 25 de Dic. de 2023

1 voto

ファイルデータストア fileDatastore を使う方法です。
filepath = uigetdir(pwd); % AVIファイルを含むフォルダを選択
fds = fileDatastore(filepath,'ReadFcn',@myread,'FileExtensions','.avi');
conveted_files = readall(fds);
%% .avi→.mp4動画への変換
function out = myread(r_filename) % <<<<<<< 【追記】変換処理を関数にする
% r_filename = 'test01-1-1.avi'; % <<<<<<< 【削除】
reader = VideoReader(r_filename); % AVI読み込み
w_filename = strrep(r_filename,'.avi','.mp4'); % <<<【変更】拡張子を置換
writer = VideoWriter(w_filename, 'MPEG-4'); % MP4書き出し
writer.Quality = 25; % 0から100の数値を指定
writer.FrameRate = reader.FrameRate;
open(writer)
while hasFrame(reader)% Convert AVI frame to MP4
img = readFrame(reader);
writeVideo(writer, img);
end
close(writer);
out = w_filename; % <<<<<<< 【追記】変換処理を関数にする
end % <<<<<<< 【追記】変換処理を関数にする

1 comentario

non
non el 25 de Dic. de 2023
Atsushi Ueno 様
的確なご回答をいただき、誠にありがとうございます。
教わったコードを用いて、フォルダ内の全「.avi」ファイルを自動で「.mp4」ファイルに変換できました。
また、「uigetdir」関数もこの機会に学べ、その便利さに今後も使っていきたいと思います。
この度はありがとうございました。

Iniciar sesión para comentar.

Más respuestas (1)

Dyuman Joshi
Dyuman Joshi el 22 de Dic. de 2023

2 votos

It would be better to use video processing tools like VLC for this instead of MATLAB.

1 comentario

non
non el 25 de Dic. de 2023
Dear Dyuman Joshi
Thank you for your valuable advice. I just checked the website you sent me.
Actuially, I have never been familiar with video processing tools like VLC. I will now try and learn to use it.
Sincerely
Non

Iniciar sesión para comentar.

Categorías

Productos

Versión

R2022b

Preguntada:

non
el 22 de Dic. de 2023

Editada:

el 25 de Dic. de 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!