การแปลงไฟล์ video ที่อยู่ในรูปแบบ flv เป็นไฟล์ mp4 สามารถใช้โปรแกรม ffmpeg จัดการได้
ซึ่งในหัวข้อนี้จะอ้างอิงด้วยโปรแกรม ffmpeg รุ่น 0.10.4-6:0.10.4-0ubuntu0jon2~oneiric1 Copyright (c) 2000-2012 the FFmpeg developers ของ ubuntu นะครับ
โดยติดตั้งจากแหล่งดาวโหลดเพิ่มเติม https://launchpad.net/~jon-severinsson/+archive/ffmpeg
1. ตัวอย่างคำสั่งในการแปลงจาก File.flv เป็น File.mp4 สามารถเรียกใช้แบบง่ายๆ ดังนี้
- ffmpeg -i File.flv File.mp4
aphirak@apj-nb:~$ ffmpeg -i File.flv File.mp4 ffmpeg version 0.10.4-6:0.10.4-0ubuntu0jon2~oneiric1 Copyright (c) 2000-2012 the FFmpeg developers built on Jun 12 2012 23:03:12 with gcc 4.6.1 ... Stream mapping: Stream #0:0 -> #0:0 (h264 -> mpeg4) Stream #0:1 -> #0:1 (aac -> libvo_aacenc) Press [q] to stop, [?] for help frame= 4741 fps=120 q=31.0 Lsize= 11627kB time=00:02:38.19 bitrate= 602.1kbits/s video:9019kB audio:2474kB global headers:0kB muxing overhead 1.162640%
โปรแกรมจะแปลงไฟล์ File.flv เป็นไฟล์ .mp4 โดยแปลงรูปแบบ (re-encode) Stream ที่ 0:0 จาก h264 เป็น mpeg4 และ Stream ที่ 0:1 จาก acc เป็น libvo_aacenc
2. ถ้าต้องการแปลงจาก File.flv เป็น File.mp4 โดยไม่มีการแปลงรูปแบบ เพิ่ม option ให้ copy stream ที่เป็นภาพและเสียงด้วยคำสั่ง -vcodec copy และ -acodec copy ดังนี้
- ffmpeg -i File.flv -v codec copy -acodec copy File.mp4
aphirak@apj-nb:~$ ffmpeg -i File.flv -vcodec copy -acodec copy File.mp4 ffmpeg version 0.10.4-6:0.10.4-0ubuntu0jon2~oneiric1 Copyright (c) 2000-2012 the FFmpeg developers built on Jun 12 2012 23:03:12 with gcc 4.6.1 ... Stream mapping: Stream #0:0 -> #0:0 (copy) Stream #0:1 -> #0:1 (copy) Press [q] to stop, [?] for help frame= 4741 fps= 0 q=-1.0 Lsize= 16591kB time=00:02:38.15 bitrate= 859.3kbits/s video:13944kB audio:2446kB global headers:0kB muxing overhead 1.224759%
3. ถ้าต้องการ copy เฉพาะ stream แรกอย่างเดียว (Stream #0:0) จากไฟล์ File.flv ไปที่ File.mp4 โดยไม่มีแปลงรูปแบบด้วยคำสั่ง -map 0:0 -c:v copy
- ffmpeg -i File.flv -map 0:0 -c:v copy File.mp4
aphirak@apj-nb:~$ ffmpeg -i File.flv -map 0:0 -c:v copy File.mp4 ffmpeg version 0.10.4-6:0.10.4-0ubuntu0jon2~oneiric1 Copyright (c) 2000-2012 the FFmpeg developers built on Jun 12 2012 23:03:12 with gcc 4.6.1 ... Stream mapping: Stream #0:0 -> #0:0 (copy) Press [q] to stop, [?] for help frame= 4741 fps= 0 q=-1.0 Lsize= 13991kB time=00:02:38.15 bitrate= 724.7kbits/s video:13944kB audio:0kB global headers:0kB muxing overhead 0.337634%
4. ถ้าต้องการ copy เฉพาะ stream เสียงที่สองอย่างเดียว (Stream #0:1) จากไฟล์ File.flv ไปที่ File.mp3 โดยไม่มีแปลงรูปแบบด้วยคำสั่ง -map 0:1 -c:a copy
- ffmpeg -i File.flv -map 0:1 -c:a copy File.mp3
aphirak@apj-nb:~$ ffmpeg -i File.flv -map 0:1 -c:a copy File.mp3 ffmpeg version 0.10.4-6:0.10.4-0ubuntu0jon2~oneiric1 Copyright (c) 2000-2012 the FFmpeg developers built on Jun 12 2012 23:03:12 with gcc 4.6.1 ... Stream mapping: Stream #0:1 -> #0:0 (copy) Press [q] to stop, [?] for help size= 2446kB time=00:02:38.31 bitrate= 126.6kbits/s video:0kB audio:2446kB global headers:0kB muxing overhead 0.027074%
ข้อมูลเพิ่มเติม สามารถไปอ่านได้จาก (For more informations, please visit the links below)
5. คำสั่งสำหรับเช็คอัตราเฟรมของไฟล์วิดีโอ โดยใช้วิธีการ extract ข้อมูลมาจากคำสั่ง ffmpeg -i file.mp4
ffmpeg -i avengers.mp4 2>&1 | sed -n "s/.*, \(.*\) fp.*/\1/p"
- How to use map option ของ ffmpeg http://ffmpeg.org/trac/ffmpeg/wiki/How%20to%20use%20-map%20option
- Convert flv to mp4 http://www.learnosity.com/techblog/index.cfm/2010/12/29/Convert-FLV-to-MP4-with-ffmpeg-Howto
- How to extract frame rate of video files http://askubuntu.com/questions/110264/how-to-find-frames-per-second-of-any-video-file