필터 지우기
필터 지우기

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

조회 수: 43 (최근 30일)
non
non 2023년 12월 22일
편집: Atsushi Ueno 2023년 12월 25일
「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);

채택된 답변

Atsushi Ueno
Atsushi Ueno 2023년 12월 23일
편집: Atsushi Ueno 2023년 12월 25일
ファイルデータストア 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
non
non 2023년 12월 25일
Atsushi Ueno 様
的確なご回答をいただき、誠にありがとうございます。
教わったコードを用いて、フォルダ内の全「.avi」ファイルを自動で「.mp4」ファイルに変換できました。
また、「uigetdir」関数もこの機会に学べ、その便利さに今後も使っていきたいと思います。
この度はありがとうございました。

댓글을 달려면 로그인하십시오.

추가 답변 (1개)

Dyuman Joshi
Dyuman Joshi 2023년 12월 22일
It would be better to use video processing tools like VLC for this instead of MATLAB.
  댓글 수: 1
non
non 2023년 12월 25일
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

댓글을 달려면 로그인하십시오.

카테고리

Help CenterFile Exchange에서 データのインポートと解析에 대해 자세히 알아보기

제품


릴리스

R2022b

Community Treasure Hunt

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

Start Hunting!