Tùy thuộc vào các codec được sử dụng trong FLV của bạn, bạn có thể thoát khỏi chỉ bằng cách gói lại nó trong một thùng chứa mp4. Có thể bạn sẽ cần H.264
hoặc là MPEG4 simple profile
video và AAC
âm thanh. Bạn có thể tìm hiểu một số thông tin trên tệp nguồn của bạn với ffmpeg -i input.flv
Tôi không chắc liệu chỉ cần có H.264 / MPEG4 Simple + AAC là đủ tốt hay nếu có các tùy chọn cụ thể cho các codec được hỗ trợ. Nó đủ dễ để kiểm tra:
Hãy thử sử dụng
ffmpeg -i input.flv -c copy -copyts output.mp4
-copyts
Là copy timestamps
nó sẽ giúp đồng bộ hóa âm thanh.
Nếu điều đó không hiệu quả, hãy thử buộc codec âm thanh và video. Điều này sẽ mã hóa lại tập tin:
ffmpeg -i input.flv -c:v libx264 -crf 23 -c:a libfaac -q:a 100 output.mp4
Để cải thiện chất lượng video, bạn có thể sử dụng giá trị CRF thấp hơn, ví dụ: mọi thứ xuống tới 18. Để có được một tệp nhỏ hơn, hãy sử dụng CRF cao hơn, nhưng lưu ý rằng điều này sẽ làm giảm chất lượng.
Để cải thiện chất lượng âm thanh, sử dụng giá trị chất lượng cao hơn. Đối với FAAC, 100
là mặc định.
Dưới đây là một vài suy nghĩ về lệnh ffmpeg được đề xuất trong câu hỏi.
-ar
đề cập đến tốc độ mẫu âm thanh. Tôi khuyên bạn không nên lộn xộn với điều này cho đến khi bạn hiểu mọi thứ tốt hơn. Nếu bạn muốn chơi với mã hóa âm thanh, hãy điều chỉnh tốc độ bit (ví dụ: -b:a 128k
) và để bộ mã hóa chọn những gì cần làm dựa trên đó.
Nếu bạn cuối cùng đi xuống con đường này ...
Chất lượng CD là 44100Hz lấy mẫu; video thông thường sử dụng 48000Hz.
Bạn có thể lưu ý rằng 22050 trong ví dụ của câu hỏi ban đầu là 1/2 tốc độ mẫu chất lượng cd. nếu bạn đang chuyển đổi tài liệu CD thì đây là một lựa chọn tốt. Nếu bạn đang bắt đầu với nguồn 48KHz (có thể là bạn một lần nữa, thì điều này phổ biến hơn nhiều so với 44100 trong các tệp video) thay vào đó tôi sẽ sử dụng 24Khz. Nó có thể sẽ không quan trọng lắm, nhưng nó có vẻ tốt hơn một chút và sử dụng ít CPU hơn để thực hiện chuyển đổi.