Chỉ với thông tin bạn cung cấp, đây là những gì tôi có thể nghĩ đến.
Chúng ta hãy đi từng mảnh:
Vì chỉ có một hình ảnh được thêm vào video. Tôi tự hỏi liệu có cách nào để giảm kích thước video hay không, ví dụ như tốc độ bit / giây = 1 thay vì 28?
Vì nó là một hình ảnh tĩnh, không cần phải thay đổi. cứ như vậy đi.
Những gì bạn đang nói về đó là khung hình mỗi giây (khung hình / giây) không bitrate. Và bạn đúng trong khái niệm. Chỉ cần một hình ảnh tĩnh 1 khung hình / giây sẽ không thành vấn đề.
Có phải là một kích thước hợp lý cho mp4? Có kích thước hình ảnh quan trọng rất nhiều?
Trong trường hợp này, kích thước hình ảnh sẽ không có trọng lượng đáng kể vì chúng ta đang xử lý chỉ với một hình ảnh tĩnh. Nếu đó là một video chất lượng cao thì đó là một vấn đề khác.
Tôi có nên thay đổi kích thước jpg thành 1080 * 720 và thực hiện các cài đặt bổ sung trong ffmpeg thành đầu ra là 720p (cài đặt ffmpeg sau đó là gì :)?
Độ phân giải bạn đang nói là 1280x720.
Tôi không thấy điểm trong -loop 1
tùy chọn ở đây, nó sẽ chỉ làm chậm quá trình. Bạn đã sử dụng -shortest
vì tập tin có nhiều hơn 1 luồng đầu vào? Nếu không thì không có lý do để sử dụng nó. Vì bạn đã sử dụng -acodec copy
nên tôi sẽ phải cho rằng bạn không muốn mã hóa lại.
Đối với đầu ra 720p 1fps mà không cần mã hóa lại và không chạm vào bitrate:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 output.mp4
Đặt tên cho trường hợp nó có nhiều luồng đầu vào và bạn muốn ffmpeg hoàn thành mã hóa ở luồng ngắn nhất sau đó:
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -s 1280x720 -shortest output.mp4
Bây giờ nếu bạn phải thay đổi bitrate (giả sử 1024k làm ví dụ);
ffmpeg -framerate 1 -i input.mp3 -i cover.jpg -c:a copy -b:v 1024k -bufsize 1024k -s 1280x720 output.mp4
Xem: Giới hạn tốc độ bit đầu ra
-c: a copy = Sao chép luồng âm thanh đầu vào để chúng tôi không mã hóa lại.
-b: v = Tốc độ bit được chỉ định là (không chính xác) không đổi.
-bufsize = Đó là khoảng thời gian tính toán tốc độ bit trung bình. Có nghĩa là hình ảnh chất lượng giảm thấp nhất nhưng bitrate chính xác hơn theo chỉ định trong -b: v .
-s = Kích thước thực tế của đầu ra video.
-framerator = Tốc độ khung hình đầu vào mà chúng tôi muốn rằng đầu ra sẽ sử dụng.
Lưu ý rằng nếu bạn vẫn muốn một video có kích thước nhỏ hơn tại một thời điểm, bạn sẽ phải hy sinh chất lượng để đạt được điều đó. Và các cách khác để làm điều đó liên quan đến mã hóa lại với nén mất mát.
Từ những gì bạn nói, thông tin bạn cung cấp và những gì bạn đang cố gắng tôi nghĩ có vẻ như mục tiêu của bạn là nhúng album-art vào mp3. Nếu đó là mục tiêu của bạn thì điều này sẽ phù hợp với yêu cầu của bạn hơn:
ffmpeg -i input.mp3 -i cover.jpg -map_metadata 0 -map 0 -map 1 output.mp3
-map_metadata = Trình xác định siêu dữ liệu ffmpeg cho tệp đầu ra từ infile. Trong trường hợp này ( không ) siêu dữ liệu toàn cầu.
-map 0 = Luồng đầu vào 1 (âm thanh).
-map 1 = Luồng đầu vào 2 (hình ảnh).
Nếu không có gì ở đây phù hợp với yêu cầu của bạn xin vui lòng cung cấp thêm thông tin.