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

27 visualizaciones (últimos 30 días)
non
non el 22 de Dic. de 2023
Editada: Atsushi Ueno el 25 de Dic. de 2023
「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
ファイルデータストア 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
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.

Productos


Versión

R2022b

Community Treasure Hunt

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

Start Hunting!