フォルダ内の「.avi」ファイルを一度にまとめて「.mp4」ファイルに変更することはできますか?
31 visualizzazioni (ultimi 30 giorni)
Mostra commenti meno recenti
「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);
0 Commenti
Risposta accettata
Atsushi Ueno
il 23 Dic 2023
Modificato: Atsushi Ueno
il 25 Dic 2023
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 % <<<<<<< 【追記】変換処理を関数にする
Più risposte (1)
Dyuman Joshi
il 22 Dic 2023
It would be better to use video processing tools like VLC for this instead of MATLAB.
Vedere anche
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!