En france on paye un droit à la copie privée.
Si vous payer votre ticket pour le GSL
j'estime que vous avez le droit d'utiliser ce tutorial pour encoder les vidéos
sous d'autres formats tant que vous ne diffusez pas ces vidéos.
Article rédigé sans vraiment être relu... Comme les précédants articles, je vais rédiger le rédiger d'une seule traite avec un minimum de relecture. A la base cet article est pour ma réutilisation personnelle.
Présentation: vous avez un site où vous avez un lecteur Flash qui permets de voir des vidéos. Ces fichiers se préchargent et n'ont pas de dispositif anticopie spécifique (Serveur RTMPE).
Comme d'habitude en informatique il y a plusieurs manière d'arriver à ses fins. Une vidéo FLV peux souvent se télécharger avec VideoDownloadHelper. Dans mon cas non, il ont mis un système où le player flash fourni un id de session qui n'est valable qu'une fois à priori... Pour la télécharger mon principe; je lance la vidéo, la mets en pause et je la recopie. Vous le savez peut être les vidéos / musiques flash se mettent dans votre dossier temporaire. Vous pouvez ensuite copier ce fichier... J'utilise VideoCacheView pour faire la manipulation de recopie.
Là vous avez la vidéo FLV lisible avec VLC. Cela peut déjà vous suffire... Mais je veux le voir sur un lecteur qui ne lit pas le FLV. Option: réencoder le FLV. Problème le FLV n'est pas standard et Handbrake ou VLC vont souvent bloquer lors de l'encodage. Solution convertir le FLV en MP4 en recopiant les flux puis ensuite le réencoder.
J'utilise FLVExtract pour obtenir un fichier mp3 (son) + H264 (vidéo). Ensuite j'utilise MP4Box pour obtenir un fichier MP4.
Fichier batch nommé remux.bat. On clic dépose ensuite le FLV sur le batch et à partir d'un toto.flv on aura un toto.mp4 a supposer que le flux audio est bien en MP3...
flvextract.exe -a -v %1 mp4box.exe -add "%~n1.264" -fps 30 -add "%~n1.mp3" "%~n1.mp4" del "%~n1.264" del "%~n1.mp3"
J'ai donc une vidéo compatible MP4 avec les flux audio et vidéo recopiés tel quels du FLV. Cela me pose un problème car le flux audio est en MP3, et les décodeurs hardwares MP4 ne le lisent pas. Seule solution que j'ai trouvée réencoder le tout.
Maintenant que j'ai un fichier MP4 handbrake est capable de l'utiliser comme source. Parfait il suffit de réencoder en basse vitesse, et en respectant a peu près le flux vidéo source...
start "ENCODING %~n1" /LOW "C:\Program Files (x86)\Handbrake\HandBrakeCLI.exe" -i %1 -o "%~n1.m4v" --rate 30 --ab 128 --vb 1100 --encopts vbv-maxrate=1200
Je laisse tourner et j'ai le MP4 réencodé en un MP4 qui pourra être décodé par le hardware d'un lecteur MP4 android.
Téléchargement des scripts utilisés.
Téléchargement des scripts ainsi que des logiciels Videocacheview et flvextract. Handbrake est necessaire.
Ces deux fichiers VBS vous permettent de convertir un dossier de FLV en M4V.
Etape 1 - Conversion des FLV en MP4.vbs
Dim Debug Debug = False Dim objFSO, objShell, strSource, strTarget, strOldName, strNewName set objFSO = CreateObject("Scripting.FileSystemObject") ' ' Les dossiers : à adapter ' strSource = "E:\Videos\GSL" strTarget = "E:\Videos\GSL\Transcode" call RecurseDir(strSource, strTarget) ' ' // Travail récursif ' Sub RecurseDir(strSource, strTarget) If (Debug) Then wscript.echo "source: " & strSource & " target: "& strTarget End if Dim strTempSource, strTempTarget Set strTempSource = objFSO.GetFolder(strSource) If (Debug) Then Wscript.Echo "Begin Value: " & strTarget end if If Not objFSO.FolderExists(strTarget) Then If (Debug) Then Wscript.Echo "No Folder! Creating folder [" & strTarget & "]" end if objFSO.CreateFolder(strTarget) Else If (Debug) Then Wscript.Echo "Folder exists! " & strTempSource end if End If Set strTempTarget = objFSO.GetFolder(strTarget) ' Pour chaque fichier For each file in strTempSource.files 'On cherche les fichiers nommé FLV et on les passe en argument pour devenir MP4 strOldName = strSource & "\" & file.name strNewName = strTempTarget & "\" & Mid(file.name, 1, InstrRev(file.name, ".")) & "mp4" If Not objFSO.FileExists(strNewName) Then Set objShell = CreateObject("WScript.Shell") If (Debug) Then Wscript.Echo "Transcoding file: " & strOldName & " to " & strNewName End if Select Case Right(strOldName, 3) Case "flv" objShell.Run """" & strSource & "\remux.bat"" """ & strOldName & """", 1, False End Select Set objShell = Nothing End If Next 'On pourrai faire avec les sous dossiers. 'For each subdir in strTempSource.subfolders 'Wscript.Echo subdir.path 'Call RecurseDir(subdir.path, strTempTarget & "\" & subdir.name) 'Next End Sub
Etape 2 - Conversion des MP4 en M4V.vbs
Dim Debug Debug = False Dim objFSO, objShell, strSource, strTarget, strOldName, strNewName set objFSO = CreateObject("Scripting.FileSystemObject") ' ' Les dossiers : à adapter ' strSource = "E:\Videos\GSL" strTarget = "E:\Videos\GSL\Transcode" call RecurseDir(strSource, strTarget) ' ' // Travail récursif ' Sub RecurseDir(strSource, strTarget) If (Debug) Then wscript.echo "source: " & strSource & " target: "& strTarget End if Dim strTempSource, strTempTarget Set strTempSource = objFSO.GetFolder(strSource) If (Debug) Then Wscript.Echo "Begin Value: " & strTarget end if If Not objFSO.FolderExists(strTarget) Then If (Debug) Then Wscript.Echo "No Folder! Creating folder [" & strTarget & "]" end if objFSO.CreateFolder(strTarget) Else If (Debug) Then Wscript.Echo "Folder exists! " & strTempSource end if End If Set strTempTarget = objFSO.GetFolder(strTarget) ' Pour chaque fichier For each file in strTempSource.files strOldName = strSource & "\" & file.name strNewName = strTempTarget & "\" & Mid(file.name, 1, InstrRev(file.name, ".")) & "mp4" strMP4Name = Mid(file.name, 1, InstrRev(file.name, ".")) & "mp4" If Not objFSO.FileExists(strNewName) Then Set objShell = CreateObject("WScript.Shell") If (Debug) Then Wscript.Echo "Transcoding file: " & strOldName & " to " & strNewName End if Select Case Right(strOldName, 3) Case "mp4" objShell.Run """" & strSource & "\handbrake.bat"" """ & strMP4Name & """", 1, False End Select Set objShell = Nothing End If Next